问题描述
我们正在使用WebSphere数据源来管理数据库连接。来自server.xml的示例数据源定义如下所示:
<dataSource id="dev_ate" jndiName="database/dev_ate"
jdbcDriverRef="db2_driver" type="javax.sql.ConnectionPoolDataSource">
<connectionManager maxIdleTime="30m"
**connectionTimeout="30s"** />
<properties.db2.jcc databaseName="xxx"
serverName="aaa.bbb.ccc" portNumber="yyy"
securityMechanism="7" user="uuu"
password="ppp"
retrieveMessagesFromServerOnGetMessage="true" sslConnection="true"
clientProgramName="abc" driverType="4" encryptionAlgorithm="2"
**connectionTimeout="60s"**
sslTrustStoreLocation="${DB2CERTS}" />
</dataSource>
properties.db2.jcc中的connectionTimeout属性是否与connectionManager中的属性相同?如果是这样,使用哪个?如果没有,有什么区别?
任何回应将不胜感激!
Thx 基督徒
解决方法
两个connectionTimeout
属性不会相互覆盖。它们实际上具有不同的含义。记录在here中的DB2 JCC驱动程序属性connectionTimeout
与连接到数据库有关。 connectionTimeout
的{{1}}属性是一个连接超时,该连接可从连接池中获得。应该注意的是,您可以等待connectionManager
中connectionTimeout
的一部分,然后池中将出现不匹配的连接。连接管理器将关闭不匹配的连接,并从DB2 JCC驱动程序请求一个新的连接,此后将应用完整的connectionManager
的DB2 JCC驱动程序,即使该时间超过了{ connectionTimeout
中的{1}}。这两个超时彼此独立。