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

tomcat下配置数据库连接池学习篇

2012-05-13 00:00 513 查看
tomcat下配置数据库连接池DBCP、C3P0、Proxool

有些是参考别人的DBCP经过亲自测试

/////////////////////////////////////////////////////////////////

step 1 : 将连接池的jar文件拷贝到tomcat的lib目录下(也将mysql驱动拷贝到tomcat的lib目录下)

1)dbcp:

tomcat默认包含tomcat-dbcp.jar,如果使用tomcat自带的dbcp则不用拷贝jar文件;

如果要使用commons-dbcp连接池,则要将commons-dbcp-Xx.jar和commons-pool.jar拷贝到tomcat的lib目录下;

2)c3p0:

拷贝c3p0-Xx.jar到tomcat的lib目录下;

3)proxool:

拷贝proxool-Xx.jar、proxool-cglib.jar、commons-logging-Xx.jar到tomcat的lib目录下;

step 2 : 打开tomcat的context.xml,进行如下配置:

在<Context>节点中添加如下内容(可以并列添加多个<Resource.../>):

<!--dbcp 类型-->

<Resource

name="jdbc/mysqlds-dbcp"

auth="Container"

type="javax.sql.DataSource"

factory="org.apache.commons.dbcp.BasicDataSourceFactory"<!--这里使用的commons-dbcp连接池-->

<!--tomcat的dbcp对应的factory为:将commons替换为tomcat(?),也可不用配置-->

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/bbs?autoReconnect=true&useUnicode=true&characterEncoding=utf-8"

username="root"

password="root"

maxActive="100"

maxIdle="30"

maxWait="10000"

>

</Resource>

<!--

下面解释一下各属性的含义:

name 表示指定的jndi名称(这个名字这里可以随便写)

auth 表示认证方式,一般为Container

type 表示数据源床型,使用标准的javax.sql.DataSource

maxActive 表示连接池当中最大的数据库连接

maxIdle 表示最大的空闲连接数

maxWait 当池的数据库连接已经被占用的时候,最大等待时间

logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪

username 表示数据库用户名

password 表示数据库用户的密码

driverClassName 表示JDBC Driver

url 表示数据库URL地址

-->

<!--c3p0 类型-->

<Resource

name="jdbc/mysqlds-c3p0"

auth="Container"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

factory="org.apache.naming.factory.BeanFactory"

driverClass="com.mysql.jdbc.Driver"

jdbcUrl="jdbc:mysql://localhost:3306/bbs?autoReconnect=true&useUnicode=true&characterEncoding=utf-8"

user="root"

password="root"

maxPoolSize="100"

minPoolSize="1"

initialPoolSize="5"

acquireIncrement="2"

idleConnectionTestPeriod="60"

maxIdleTime="60"/>

<!--proxool 类型-->

<Resource name="jdbc/mysqlds-proxool"

auth="Container"

type="javax.sql.DataSource"

factory="org.logicalcobwebs.proxool.ProxoolDataSource"

proxool.alias="bbs"

user="root"

password="root"

delegateProperties="foo=1,bar=true"

proxool.jndi-name="mysqljndi"

proxool.driver-url="jdbc:mysql://127.0.0.1:3306/bbs"

proxool.driver-class="com.mysql.jdbc.Driver"

proxool.house-keeping-sleep-time="900000"

proxool.maximum-active-time="5"

proxool.prototype-count="3"

proxool.statistics="1m,15m,1d"

proxool.simultaneous-build-throttle="10"

proxool.minimum-connection-count="5"

proxool.maximum-connection-count="15"

/>

step 3: 编辑自己webApplication的web.xml,在<web-app>节点中添加如下内容:

<resource-ref>

<res-ref-name>jdbc/mysqlds-dbcp</res-ref-name>

//"jdbc/mysqlds-dbcp"与context.xml下的Resources的name属性一致

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

step 4 : 连接数据库的java代码;

Context context = new InitialContext();

DataSource ds = (DataSource) context.lookup("java:comp/env/"+"jdbc/mysqlds-dbcp");

//"jdbc/mysqlds-dbcp"与context.xml下的Resources的name属性一致;

return ds.getConnection();

-----------------------------------------------------------------------------------------------------

<Resource name="jdbc/SqlServer" auth="Container" type="javax.sql.DataSource"

maxActive="100" maxIdle="30" maxWait="10000"

username="sa" password="" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

url="jdbc:sqlserver://localhost:1433;databaseName=bbs"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: