[导入]如何在Tomcat中定义JNDI数据源

Posted on 2007-06-27 13:50 Java.net 阅读(1072) 评论(0)  编辑  收藏

网站:JavaEye 作者:jvincent 发表时间: 2007-06-27 13:50 此文章来自于 http://www.JavaEye.com
声明:本文系JavaEye网站原创文章,未经JavaEye网站或者作者本人书面许可,任何其他网站严禁擅自发表本文,否则必将追究法律责任!
原文链接: http://xzgf.javaeye.com/blog/94619

如何定义JNDI数据源 (抽取翻译了一下Tomcat文档的JNDI数据源的部分,不对的地方请指正..)


内容提要:

1、介绍

2、数据连接池的配置

3、不使用连接池的解决方案

4、Oracle数据源配置举例


1、总体介绍 Introdution


配置JNDI数据源是配置JNDI资源的一个特例,过程和方法都差不多..

请注意:在Tomcat 5.0.x 和 Tomcat 5.5.x版本之间,JNDI资源的配置已经发生了变化,所以,如果你使用的是以上版本需要修改一下配置语法..

本文假定你已经理解了Context和Host的配置,如果没有,请自行学习..


2、数据连接池的配置 Database Connection Pool(DBCP) Configurations


DBCP提供了对JDBC2.0的支持,如果你使用的1.4版本JVM,DBCP将支持JDBC3.0..

2.1 安装 Installation

DBCP使用Jakarta-Commons Database Connection Pool,它依赖以下三个包:

Jakarta-Commons DBCP


Jakarta-Commons Collections

Jakarta-Commons Pool

在Tomcat的安装目录提供了一个集成的jar包 $CATALINA_HOME/lib/tomcat-dbcp.jar..

3 避免数据连接池泄露 Preventing DB connection pool leaks

顾名思义,数据连接池负责创建和管理数据库连接.重用一个已经存在的数据连接要比每次都打开新建(new)一个连接效率高的多..

但连接池通常个问题:一个Web应用程序需要关闭ResultSet's,Statement's,Connections's等资源.如果应用程序关闭资源失败,就是导致这些资源无法在被重用,即数据连接池泄露.最终如果没有足够的有效的连接,将导致应用程序连接失败.

对于这个问题有个解决方法;Jakarta-Commons的DBCP可以通过配置来跟踪、恢复那些关闭失败的连接.不但可以恢复,而且还可以生成堆栈轨迹..

为了关闭和重用那个被遗弃的资源,可以在DBCP数据源的资源配置中加入一下属性:


xml 代码




  1. removeAbandoned="true"  




当有效的数据连接低于DBCP设置的时候,就会重用被遗弃的资源..默认是false;


xml 代码




  1. removeAbandonedTimeout="60"  




设置被抛弃的数据连接在多少秒之后可以被删除...默认是300秒.


xml 代码




  1. logAbandoned="true"  




如果想要记录下被抛弃数据连接的堆栈轨迹可以设为true..默认false;


4、Oracle配置举例

Tomcat只能识别*.jar文件,如果数据库驱动为*.zip,则需要修改扩展名为jar..对于Oracle9i应该使用 oracle.jdbc.OracleDriver,因为 oracle.jdbc.driver.OracleDriver 已经不建议使用..将来也不一定支持了..

4.1 配置server.xml



xml 代码




  1. <Resource name="jdbc/myoracle" auth="Container"  
  2.               type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"  
  3.               url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"  
  4.               username="scott" password="tiger" maxActive="20" maxIdle="10"  
  5.               maxWait="-1"/>    


4.2 配置web.xml


xml 代码




  1. <resource-ref>  
  2.  <description>Oracle Datasource exampledescription>  
  3.  <res-ref-name>jdbc/myoracleres-ref-name>  
  4.  <res-type>javax.sql.DataSourceres-type>  
  5.  <res-auth>Containerres-auth>  
  6. resource-ref>  


4.3 代码示例


java 代码




  1. Context initContext = new InitialContext();   
  2. Context envContext  = (Context)initContext.lookup("java:/comp/env");   
  3. DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");   
  4. Connection conn = ds.getConnection();   
  5. //etc.   


 英文原文地址:tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html 


 


2007-06-27


jvincent

 




《 如何在Tomcat中定义JNDI数据源 》 的评论也很精彩,欢迎您也添加评论。查看详细 >>

推荐相关文章:
  IE7下不同用户会共享同一个session会话的问题
  tomcat 内存溢出问题




JavaEye推荐
广州:梦境网络公司:薪水+期权诚聘高级人才 C++工程师 和 Java工程师
北京:高薪诚聘Ruby on Rails高手: 月薪15-25K
上海:尤恩斯国际集团:诚聘开发工程师
北京:优秀公司NHNChina招聘:WEB开发,系统管理,JAVA开发, DBA



文章来源: http://xzgf.javaeye.com/blog/94619

只有注册用户登录后才能发表评论。


网站导航: