Tomcat4.1、5.5、6.0的连接池配置及测试程序

本文介绍如何在Tomcat的不同版本中配置数据库连接池,包括配置文件的详细设置及测试方法。适用于Tomcat 4、5、6版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接池配置需要在应用部署文件的<Context>节点内添加<Resource>描述。
对于Tomcat5和Tomcat6,官方建议不要将<Context>的配置直接写在server.xml中,使用单独的xml文件部署应用的方法请参见: http://www.blogjava.net/fastunit/archive/2008/05/22/202112.html

本文的测试环境:
应用程序根路径:D:/fastunit
数据库:oracle9i


一、拷贝数据库驱动jar文件放到Tomcat下

1、Tomcat4/Tomcat5:放到/common/lib/下
2、Tomcat6:放到/lib/下
对于oralce9i,需要拷贝的jar文件位于/oralce安装路径/ora92/jdbc/lib/classes12.jar


二、Tomcat连接池配置
设置参数时,driverClassName、url、username、password的值根据实际情况设定。
本例将jndi名称设为“dstest”。


1、Tomcat4

<Context path="" docBase="D:/fastunit" privileged="true">
  <Resource name="dstest" auth="Container" type="javax.sql.DataSource"/>
  <ResourceParams name="dstest">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>
    <parameter>
     <name>username</name>
     <value>app</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>app</value>
    </parameter>
    <parameter>
       <name>driverClassName</name>
       <value>oracle.jdbc.driver.OracleDriver</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>
    </parameter>
  </ResourceParams>
</Context>
2、Tomcat5/Tomcat6
<Context path="" docBase="D:/fastunit" privileged="true">
<Resource
name="dstest"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="app"
password="app"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
</Context>

三、连接池测试

下面的jsp文件中ctx.lookup("java:comp/env/dstest"),“dstest”对应为<Resource>节点的“name”属性值。

<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
<%
  Connection conn = null;
  try{
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("java:comp/env/dstest");
    conn = ds.getConnection();
    out.print("connection pool connected !");  
  }catch (Exception e) {
    out.print(e.getMessage());
    e.printStackTrace();
  }finally {
    if(conn!=null)  conn.close();
  }
%>
四、<Resource>节点参数说明
1、 name:数据源名称
2、 driverClassName:JDBC驱动的类路径
3、 url:数据库连接URL
4、 username/ password:数据库的用户名和密码
5、其他参数,请参考相应版本的官方说明:
http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html
http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html


似乎Hibernate对DBCP连接池支持的不太好,Hibernate3已经不支持DBCP了。我是在Tomcat的server.xml中配置DBCP的连接池的。如下:

Java代码  
<Context path= "" docBase= "C:\tomcat\webapps\ROOT" reloadable= "false">  
<Resource  
name= "jdbc/aaaaDB"  
type= "javax.sql.DataSource"  
factory= "org.apache.commons.dbcp.BasicDataSourceFactory"  
username= "aaaa"  
password= "aaaa"  
driverClassName= "oracle.jdbc.driver.OracleDriver"  
maxIdle= "10"  
maxWait= "15000"  
maxActive= "50"  
url= "jdbc:oracle:thin:@10.0.0.3:1521:orcl"/>  
</Context>

Hibernate.cfg.xml如下:

Java代码
<property name= "connection.datasource">  
java:comp/env/jdbc/aaaaDB  
</property>  
<!-- dialect for Oracle (any version) -->  
<property name= "dialect">  
net.sf.hibernate.dialect.Oracle9Dialect  
</property>  
<property name= "hibernate.connection.provider_class">  
net.sf.hibernate.connection.DatasourceConnectionProvider  
</property>


Java EE 5中要求将资源在web.xml中进行声明,对于一个数据源,可以在web.xml中这样配置:

<resource-ref>
       <res-ref-name>jdbc/mydb</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
</resource-ref>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值