【问题标题】:c3p0 - Connection Pool Queries for different serversc3p0 - 不同服务器的连接池查询
【发布时间】:2013-12-24 05:21:10
【问题描述】:

我在 java 中创建了一个 mavenized web 应用程序。如果我使用 maven jetty 插件运行 Web 应用程序,我能够从连接池初始化数据源,也能够从数据源获取连接。但是当我在 tomcat 服务器上部署应用程序时,它能够初始化数据源,但在尝试连接时抛出异常:

java.sql.SQLException: Connections could not be acquired from the underlying database!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)

即使我在 server.xml 中对 web.xml 中的资源和资源引用进行了更改,但我仍然无法获得连接。

**Server.xml**
<Resource name="jdbc/sample" auth="Container"
 driverClassName="oracle.jdbc.driver.OracleDriver"
 url="jdbc:oracle:thin:@someServer:1551:xyz"
 username="userName"
 password="pwd"
 validationQuery="SELECT 1 FROM dual"
 testOnBorrow="true"
 testWhileIdle="true"
 factory="org.apache.naming.factory.BeanFactory" 
 type="com.mchange.v2.c3p0.ComboPooledDataSource" 
 maxPoolSize="20" 
 minPoolSize="5" 
 acquireIncrement="1" 
/>

**web.xml**
<resource-ref>
  <res-ref-name>jdbc/sample</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref> 

尝试在 tomcat 服务器上运行应用程序时,我在这种情况下缺少什么?

【问题讨论】:

    标签: java maven tomcat connection-pooling c3p0


    【解决方案1】:

    您在数据源上设置的属性不是 c3p0 ComboPooledDataSource 的属性。例如,您设置了一个名为username 的属性。 ComboPooledDataSource 属性为user。 validationQuery 应该是 preferredTestQuery,testOnBorrow 应该是 testConnectionOnCheckout,testWhileIdle 映射到使用非零 idleConnectionTestPeriod 等。

    有关configuration properties 的完整信息,请参阅c3p0's docs。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2013-08-20
      • 1970-01-01
      • 2012-01-15
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多