在WebSphere数据源定义中,JDBC驱动程序属性connectionTimeout是否覆盖数据源设置

问题描述

我们正在使用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}}属性是一个连接超时,该连接可从连接池中获得。应该注意的是,您可以等待connectionManagerconnectionTimeout的一部分,然后池中将出现不匹配的连接。连接管理器将关闭不匹配的连接,并从DB2 JCC驱动程序请求一个新的连接,此后将应用完整的connectionManager的DB2 JCC驱动程序,即使该时间超过了{ connectionTimeout中的{1}}。这两个超时彼此独立。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...