如何定义JNDI数据?(抽取译了一下Tomcat文档的JNDI数据源的部分,不对的地方请指正..)
内容提要:
1、介l?br> 2、数据连接池的配|?br> 3、不使用q接池的解决Ҏ
4、Oracle数据源配|D?/strong>
1、M介绍 Introdution
配置JNDI数据源是配置JNDI资源的一个特?q程和方法都差不?.
h?在Tomcat 5.0.x ?Tomcat 5.5.x版本之间,JNDI资源的配|已l发生了变化,所?如果你用的是以上版本需要修改一下配|语?.
本文假定你已l理解了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 避免数据q接池泄?Preventing DB connection pool leaks
思义,数据q接池负责创建和理数据库连?重用一个已l存在的数据q接要比每次都打开新徏(new)一个连接效率高的多..
但连接池通常个问?一个Web应用E序需要关闭ResultSet's,Statement's,Connections's{资?如果应用E序关闭资源p|,是Dq些资源无法在被重用,x据连接池泄露.最l如果没有够的有效的连?导致应用程序连接失?
对于q个问题有个解决Ҏ;Jakarta-Commons的DBCP可以通过配置来跟t、恢复那些关闭失败的q接.不但可以恢复,而且q可以生成堆栈轨q?.
Z关闭和重用那个被遗弃的资?可以在DBCP数据源的资源配置中加入一下属?
xml 代码
当有效的数据q接低于DBCP讄的时?׃重用被遗弃的资源..默认是false;
xml 代码
- removeAbandonedTimeout="60"
讄被抛弃的数据q接在多秒之后可以被删?..默认?00U?
xml 代码
如果惌记录下被抛弃数据q接的堆栈轨q可以设为true..默认false;
4、Oracle配置举例
Tomcat只能识别*.jar文g,如果数据库驱动ؓ*.zip,则需要修Ҏ展名为jar..对于Oracle9i应该使用 oracle.jdbc.OracleDriver,因ؓ oracle.jdbc.driver.OracleDriver 已经不徏议?.来也不一定支持了..
4.1 配置server.xml
xml 代码
- <Resource name="jdbc/myoracle" auth="Container"
- type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
- url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
- username="scott" password="tiger" maxActive="20" maxIdle="10"
- maxWait="-1"/>
4.2 配置web.xml
xml 代码
- <resource-ref>
- <description>Oracle Datasource exampledescription>
- <res-ref-name>jdbc/myoracleres-ref-name>
- <res-type>javax.sql.DataSourceres-type>
- <res-auth>Containerres-auth>
- resource-ref>
4.3 代码CZ
java 代码
- Context initContext = new InitialContext();
- Context envContext = (Context)initContext.lookup("java:/comp/env");
- DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
- Connection conn = ds.getConnection();
-
英文原文地址:tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
2007-06-27
jvincent
|