C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar
下载完成之后得到一个压缩包。
Tomcat6.x中配置JNDI数据源时默认使用的是Tomcat6.x自带的DBCP连接池,Tomcat6.x使用DBCP连接池配置JNDI数据源如下:
1 <Resource 2 name="oracleDataSource" 3 auth="Container" 4 type="javax.sql.DataSource" 5 maxActive="50" 6 maxIdle="10" 7 maxWait="10000" 8 username="lead_oams" 9 password="p" 10 driverClassName="oracle.jdbc.OracleDriver" 11 url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
如果想让Tomcat6.x使用C3P0连接池配置JNDI数据源,在配置时,以下配置项需要修改
1、 type和factory的值发生变化
2、username=>user
3、url=>jdbcUrl
4、driverClassName=>driverClass
创建一个Web测试项目C3P0_JNDI_Config,解压压缩包,找到c3p0-0.9.5-pre9\lib目录下的相关Jar包如下图所示:
将C3P0的相关Jar包添加到项目中,在项目的META-INF目录下创建一个context.xml文件,目录结构如下图所示:
在tomcat服务器的lib目录下添加Oracle、MySQL、SQLServer三种数据库的驱动jar包,如下图所示:
1、在context.xml文件中加入如下配置信息
1 <Context> 2 <!-- 使用C3P0配置针对MySQL数据库的JNDI数据源 --> 3 <Resource 4 name="jdbc/MysqlDataSource" 5 auth="Container" 6 factory="org.apache.naming.factory.BeanFactory" 7 type="com.mchange.v2.c3p0.ComboPooledDataSource" 8 driverClass="com.mysql.jdbc.Driver" 9 idleConnectionTestPeriod="60" 10 maxPoolSize="50" 11 minPoolSize="2" 12 acquireIncrement="2" 13 user="root" 14 password="root" 15 jdbcUrl="jdbc:mysql://192.168.1.144:3306/leadtest"/> 16 17 <!-- 使用C3P0配置针对Oracle数据库的JNDI数据源 --> 18 <Resource 19 name="jdbc/OracleDataSource" 20 auth="Container" 21 factory="org.apache.naming.factory.BeanFactory" 22 type="com.mchange.v2.c3p0.ComboPooledDataSource" 23 driverClass="oracle.jdbc.OracleDriver" 24 idleConnectionTestPeriod="60" 25 maxPoolSize="50" 26 minPoolSize="2" 27 acquireIncrement="2" 28 jdbcUrl="jdbc:oracle:thin:@192.168.1.229:1521:lead" 29 user="lead_oams" 30 password="p"/> 31 32 33 <!--使用C3P0配置针对SQLServer数据库的JNDI数据源--> 34 <Resource 35 name="jdbc/SqlServerDataSource" 36 auth="Container" 37 factory="org.apache.naming.factory.BeanFactory" 38 type="com.mchange.v2.c3p0.ComboPooledDataSource" 39 driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" 40 idleConnectionTestPeriod="60" 41 maxPoolSize="50" 42 minPoolSize="2" 43 acquireIncrement="2" 44 jdbcUrl="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo" 45 user="sa" 46 password="p@ssw0rd"/> 47 </Context>
2.在web.xml引用JDNI数据源:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <welcome-file-list> 8 <welcome-file>index.jsp</welcome-file> 9 </welcome-file-list> 10 11 <!-- 12 JNDI配置的资源引用: 13 • res-ref-name:表示引用资源的名称 14 • res-type:此资源对应的类型为javax.sql.DataSource 15 • res-auth:容器授权管理 16 --> 17 <!--Oracle数据库JNDI数据源引用 --> 18 <resource-ref> 19 <description>Oracle DB Connection</description> 20 <res-ref-name>jdbc/OracleDataSource</res-ref-name> 21 <res-type>javax.sql.DataSource</res-type> 22 <res-auth>Container</res-auth> 23 </resource-ref> 24 25 <!--MySQL数据库JNDI数据 --> 26 <resource-ref> 27 <description>MySQL DB Connection</description> 28 <res-ref-name>jdbc/MysqlDataSource</res-ref-name> 29 <res-type>javax.sql.DataSource</res-type> 30 <res-auth>Container</res-auth> 31 </resource-ref> 32 33 <!--SQLServer数据库JNDI数据源引用 --> 34 <resource-ref> 35 <description>SQLServer DB Connection</description> 36 <res-ref-name>jdbc/SqlServerDataSource</res-ref-name> 37 <res-type>javax.sql.DataSource</res-type> 38 <res-auth>Container</res-auth> 39 </resource-ref> 40 41 </web-app>
3.部署C3P0_JNDI_Config Web应用到Tomcat服务器测试JNDI数据源
部署到tomcat服务器的webapps目录之后,tomcat服务器就会自动在\conf\Catalina\localhost目录下生成一个C3P0_JNDI_Config.xml文件,如下图所示:
C3P0_JNDI_Config.xml文件中的内容就是我们在META-INF目录的context.xml文件中配置的那些内容。