此配置是局部配置,要想用全局配置可以通过图形化界面配置,但现在到tomcat5.5为止,很不稳定
c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成
c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成
下面的代码写在server.xml中的<Host>.....</Host>中
数据库的驱动程序放在tomcat/common/lib下,最好下载最新的数据库驱动程序
C3P0的jar包也放在tomcat/common/lib下
数据库的驱动程序放在tomcat/common/lib下,最好下载最新的数据库驱动程序
C3P0的jar包也放在tomcat/common/lib下
在此要特别注意的是,在使用c3p0时,我们在处理大字段时要用到c3p0的com.mchange.v2.c3p0.impl.NewProxyResultSet;
进行转换,例如:
Clob ctextb = ((NewProxyResultSet)rs).getClob(i++);
进行转换,例如:
Clob ctextb = ((NewProxyResultSet)rs).getClob(i++);
属性说明
path="/项目名"
minPoolSize 池中保留的最小连接数
maxPoolSize 池中保留的最大连接数
initialPoolSize 初始化时的连接数,应该在minPoolSize与maxPoolSize之间 默认为3
acquireIncrement 当池中的连接消耗光时一次性获得的连接数,最大不会超过maxPoolSize
<Context path="/jliet" docBase="jliet" debug="0" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/pooledDS" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource" />
<ResourceParams name="jdbc/pooledDS">
<parameter>
<name>factory</name>
<value>org.apache.naming.factory.BeanFactory</value>
</parameter>
<parameter>
<name>driverClass</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>jdbcUrl</name>
<value>jdbc:oracle:thin:@127.0.0.1:1521:comm</value>
</parameter>
<parameter>
<name>user</name>
<value>shangwu</value>
</parameter>
<parameter>
<name>password</name>
<value>password</value>
</parameter>
<parmeter>
<name>initialPoolSize</name>
<value>10</value>
</parmeter>
<parameter>
<name>minPoolSize</name>
<value>5</value>
</parameter>
<parameter>
<name>maxPoolSize</name>
<value>50</value>
</parameter>
<parameter>
<name>acquireIncrement</name>
<value>5</value>
</parameter>
</ResourceParams>
</Context>
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/pooledDS" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource" />
<ResourceParams name="jdbc/pooledDS">
<parameter>
<name>factory</name>
<value>org.apache.naming.factory.BeanFactory</value>
</parameter>
<parameter>
<name>driverClass</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>jdbcUrl</name>
<value>jdbc:oracle:thin:@127.0.0.1:1521:comm</value>
</parameter>
<parameter>
<name>user</name>
<value>shangwu</value>
</parameter>
<parameter>
<name>password</name>
<value>password</value>
</parameter>
<parmeter>
<name>initialPoolSize</name>
<value>10</value>
</parmeter>
<parameter>
<name>minPoolSize</name>
<value>5</value>
</parameter>
<parameter>
<name>maxPoolSize</name>
<value>50</value>
</parameter>
<parameter>
<name>acquireIncrement</name>
<value>5</value>
</parameter>
</ResourceParams>
</Context>
项目下的web.xml配置
此配置放在<web-app>...</web-app>中间
<res-ref-name>jdbc/pooledDS</res-ref-name>的名字要跟server.xml中的Resource name="jdbc/pooledDS" 名字相同
<resource-ref>
<res-ref-name>jdbc/pooledDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<res-ref-name>jdbc/pooledDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
java中的调用
Connection dbConnection;
Context initContext = null;
initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/pooledDS"); //此处读取的就是xml中名字相同的那部分
//得到连接
dbConnection = ds.getConnection();
Context initContext = null;
initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/pooledDS"); //此处读取的就是xml中名字相同的那部分
//得到连接
dbConnection = ds.getConnection();