Tomcat连接池概念& c3p0连接池?

时间:2011-12-08 09:50:09

标签: oracle hibernate tomcat datasource c3p0

我有两个在Tomcat(6.0)下运行的Java Web应用程序,并使用Tomcat& c3p0连接池作为Tomcat Data-source。如果我为两个不同的Oracle Connection定义了两个Resources(server.xml),并使用c3p0作为连接池,我的应用程序使用它,我的问题是:

<Resource 
name="jdbc/OracleDB" 
auth="Container" 
type="com.mchange.v2.c3p0.ComboPooledDataSource"
driverClass="oracle.jdbc.OracleDriver"
factory="xxx"
jdbcUrl="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx) (PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xxx)))"
maxPoolSize="10" 
minPoolSize="0" 
maxIdleTime="60" 
maxConnectionAge="600"
acquireIncrement="1"
user="xxx="
password="xxx=" />


<Resource name="jdbc/xxx2DB" 
auth="Container"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
driverClass="oracle.jdbc.OracleDriver"  
factory="xxx"   
jdbcUrl="jdbc:oracle:thin:@xxx:1527:xxx"
maxPoolSize="10" 
minPoolSize="0" 
acquireIncrement="1"
maxIdleTime="60" 
maxConnectionAge="600"
user="xxx" 
password="xxx" 
/> 

Q1 即可。 server.xml中的以下内容是否表示Tomcat中存在两个连接池 内存到两个不同的Oracle实例?

Q2 即可。我是否必须指定任何配置属性(参考:http://www.mchange.com/projects/c3p0/index.html#configuration_properties),在我的情况下,我有一个连接到Oracle RAC实例,另一个连接到单个Oracle实例。我应该考虑一下 企业环境中的任何其他配置属性?

Q3 即可。以下设置是否足够有效?

Q4 即可。如何启用c3p0日志记录(我现在只有Tomcat lib中的jar和上面的设置?

有什么建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

A1:是的。

A2 :不确定我的问题是否正确,但您应该只指定默认值对您没有意义的连接属性。最好在单独的c3p0.properties文件中执行此操作,并指定哪个属性适用于哪个连接。回答“其他配置属性”问题需要了解您的环境的具体情况。我建议查看idle_test_period设置,因为这些设置通常可能有错误的默认设置(确保这与DB端的相关设置相匹配)。

A3:是的,这看起来还不错。

A4:您需要在c3p0.properties中指定日志记录首选项,或者将其动态定义为系统属性。请参阅this chapter of the c3p0 manual

答案 1 :(得分:2)

A1:

A2:乍一看是正确的。如果你要使用分布式事务,你需要小心RAC - 那么我相信你必须指定其他属性。

A3:看起来不错,但根据您的任务和估算的负载,我会使用maxIdleTime,acquireIncrement和maxPoolSize。例如,在60秒不活动后使用当前设置,您的连接将被关闭,因此在60秒后请求连接的下一个操作将在等待新连接打开时受到惩罚。

A4: http://www.mchange.com/projects/c3p0/index.html#configuring_logging

建议:

  1. Tomcat 7中有一个better connection pool,也可以在Tomcat 6中使用。考虑一下,特别是如果你需要高性能

  2. 考虑connection testing,这样当数据库连接中断时,您的应用程序不会获得(或者不常见)异常

  3. 在您的应用程序与Tomcat中打包连接池及其配置可能更为可取。这样应用程序WAR将是自包含的,因此可以将其放入tomcat的wabapps目录中。