我有两个 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"
/>
Q1。 server.xml 中的以下是否意味着 Tomcat 中存在两个连接池 内存到两个不同的 Oracle 实例?
Q2。我是否必须指定任何配置属性(引用:http://www.mchange.com/projects/c3p0/index.html#configuration_properties),在我的例子中,我连接到一个 Oracle RAC 实例,另一个连接到单个 Oracle 实例。我应该考虑 企业环境中的任何其他配置属性?
第 3 季度。以下设置是否足够有效?
第 4 季度。如何启用 c3p0 日志记录(我目前只有 Tomcat 库中的 jar 和上述设置?
有什么建议吗?
提前致谢。
最佳答案
A1:是的。
A2:不确定我是否答对了问题,但您应该只指定那些默认值对您没有意义的连接属性。最好在单独的 c3p0.properties
文件中执行此操作,并指定哪个连接适用于哪个属性。回答“其他配置属性”问题需要了解您的环境的具体情况。我建议查看 idle_test_period
设置,因为这些设置通常有错误的默认值(确保这与数据库端的相关设置相匹配)。
A3:是的,这看起来不错。
A4:您需要在 c3p0.properties
中指定日志记录首选项,或者将它们动态定义为系统属性。引用this chapter of the c3p0 manual .
关于oracle - Tomcat 连接池概念和 c3p0 连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8429028/