CP 配置(Connection Pool)

 


本文主要是介绍在Tomcat 6.0中连接池和数据源的使用,通过连接池可以提升系统的性能,在开发中较为常用。

第一种配置方法:适用于B/S模式

第一

:将jdbc驱动的jar包,如:MySQL、Oracle的jdbc驱动,拷贝到tomcat中lib下。
注意:必须是tomcat中lib下,如:D:/Tomcat 6.0/lib,但不能是项目中的WEB-INF/lib下,因为这时tomcat解析不到此类目录。
第二:这里有两种方法:
1、在tomcat中conf下的context.xml文件中<context>与</context>之间加入以下部分:
<Resource
 name="jdbc/dream"
 auth="Container"
 type="javax.sql.DataSource"
 factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
 driverClassName="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost:3306/dream"
 username="root"
 password="lcr"
 maxActive="100"
 maxIdle="10"
 maxWait="10000" />
2、在tomcat中conf下的server.xml文件中<host>与</host>之间加入以下部分:
<Context path="/test" docBase="F:/testWeb" reloadable="true" crossContext="true">
<Resource
 name="jdbc/dream"
 auth="Container"
 type="javax.sql.DataSource"
 factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
 driverClassName="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost:3306/dream"
 username="root"
 password="lcr"
 maxActive="100"
 maxIdle="10"
 maxWait="10000" />
</Context>
注意:这两种方法是有区别的。
第一种方法是针对整体全局的,即对于tomcat中webapps下的所有项目都是有效的,但是对于外接服务器方式是不适用的;
第二种方法是针对部分局部的,即只是对于<context>中所示的目录有效,而对于其它任何目录都是不适用的。
第三:在项目中WEB-INF/web.xml文件中加入这样的配置:
<resource-ref>
<description>testConnectionPool</description>
<res-ref-name>jdbc/dream</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
当然,这一部分也是可以省略的,有与没有都是可以的。
第四:这时候就可以用了。
 Connection conn = null;
 try {
  // 初始化查找命名空间
  Context ctx = new InitialContext();
  // 查找到 DataSource
  DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dream");
  // 取得一个数据库连接
  conn = ds.getConnection();
  System.out.println(conn);
 } catch (Exception e) {
  System.out.println(e);
  // e.printStackTrace();
 }

建议和说明:
这种连接池,一般不推荐用,因为我们开发的成品大都运行在租用的服务器上,所以我们便改不了tomcat服务器的配置了,再说容器也不一定是tomcat,比如:resin和jboss等等,怎么办?而且这种连接池还有些限制,只可以在web下面用!
鉴于此,我们经常用外部包来实现连接池的功能。

第二种配置方法:适用于C/S和B/S模式

第一:jdbc驱动包、commons-dbcp-1.2.2.jar 和commons-pool-1.3.jar
第二:在src下新建一个Properties文件:dbcp.properties,在里面写下这样的配置:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/dream
username=root
password=lcr
defaultAutoCommit=true
initialSize=10
maxActive=100
maxIdle=10
maxWait=10000
#validationQuery=select count(*) as count from person
第三:这时候就可以用了。
import java.sql.Connection;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPProvider {
private static String PROPERTIES_FILE = "/dbcp.properties";
private BasicDataSource ds = null;
Connection conn = null;
private DBCPProvider() {
   Properties prop = new Properties();
   try {
    prop.load(this.getClass().getResourceAsStream(PROPERTIES_FILE));
    ds = (BasicDataSource) BasicDataSourceFactory .createDataSource(prop);
    conn = ds.getConnection();
    System.out.println(conn);
   } catch (Exception e) {
    e.printStackTrace();
   }
}
public static void main(String agrs[]) {
   new DBCPProvider();
}
}

这种配置方法比起tomcat自带的连接池是不是好用多了啊?呵呵。
而且它的优点是B/S和C/S都可以用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值