【问题标题】:Tomcat Connection Pool Concept & c3p0 connection pooling?Tomcat 连接池概念和 c3p0 连接池?
【发布时间】:2012-01-15 18:34:11
【问题描述】:

我有两个 Java Web 应用程序在 Tomcat (6.0) 下运行并使用 Tomcat 和 c3p0 连接池作为 Tomcat 数据源。如果我为两个不同的 Oracle 连接定义两个资源 (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" 
/> 

第一季度。 server.xml中的以下是否意味着Tomcat中存在两个连接池 内存到两个不同的 Oracle 实例?

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

第三季度。以下设置是否足够有效?

第四季度。如何启用 c3p0 日志记录(我现在只有 Tomcat lib 中的 jar 和上述设置?

有什么建议吗?

提前致谢。

【问题讨论】:

    标签: oracle hibernate tomcat datasource c3p0


    【解决方案1】:

    A1:是的。

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

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

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

    【讨论】:

      【解决方案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 目录中。

      【讨论】:

        猜你喜欢
        • 2015-05-26
        • 1970-01-01
        • 2013-08-20
        • 2018-06-20
        • 2016-07-08
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多