81,094
社区成员
发帖
与我相关
我的任务
分享
一个tomcat下有多个项目,每个项目都有一个连接池,这样资源很是浪费,所有决定让多个项目共享连接池,研究了半天,才搞明白,e文不好,资料也不是很准确。。。。
注意:本文在windows下的tomcat5.5测试通过,linux下还可能会有奇怪的问题欢迎一起交流。
1、在tomcat下的server.xml的GlobalNamingResources下加入共享的连接池,我这里用的是apache的dbcp,开始也用了proxool的连接池,但总是报log版本的问题,所以弃用。
例:
<GlobalNamingResources>
<Resource
name="jdbc/dbcp/orcl/test"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="500"
username="test"
password="test"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
url="jdbc:oracle:thin:@127.0.0.1:1521:test" />
<GlobalNamingResources>
2、在web项目的的META-INF目录下加入一个Context.xml文件,内容为
<Context reloadable="true" crossContext="true">
<ResourceLink name="jdbc/orcl" global="jdbc/dbcp/orcl/test"
type="java.sql.DataSource">
</ResourceLink>
</Context>
其实就是加了一个指向公共连接池的连接,这样,这个项目下就可以连接公共的连接池了。
3、在hibernate的配置文件里加入以下几行
<property name="hibernate.connection.datasource">java:comp/env/jdbc/orcl</property>
<property name="connection.provider_class">
org.hibernate.connection.DatasourceConnectionProvider
</property>
这样hibernate项目就可以用公共的连接池了。