您的位置:首页 > 运维架构 > Tomcat

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

2009-10-16 15:31 453 查看
http://xiaoyongxin.javaeye.com/blog/337698

连接池配置需要在应用部署文件的<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: