gpt4 book ai didi

java - c3p0 - 不同服务器的连接池查询

转载 作者:行者123 更新时间:2023-11-28 23:39:56 25 4
gpt4 key购买 nike

我已经用 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 服务器上运行应用程序时,我在这种情况下缺少什么?

最佳答案

您在数据源上设置的属性不是 c3p0 ComboPooledDataSource 的属性。例如,您设置了一个名为 username 的属性。 ComboPooledDataSource 属性是 uservalidationQuery 应该是 preferredTestQuerytestOnBorrow 应该是 testConnectionOnCheckouttestWhileIdle 映射到使用非零 idleConnectionTestPeriod

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

关于java - c3p0 - 不同服务器的连接池查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com