Java JDBC getConnection超时问题
我有一个应用程序,它使用连接池从Oracle9i 9.2.0.4版数据库获取数据库连接。应用程序托管在SJSAS 8.1中,驱动程序为Java JDBC getConnection超时问题,java,jdbc,jakarta-ee,Java,Jdbc,Jakarta Ee,我有一个应用程序,它使用连接池从Oracle9i 9.2.0.4版数据库获取数据库连接。应用程序托管在SJSAS 8.1中,驱动程序为ojdbc14.jarVersion10.1.0.4 我遇到的问题是datasource.getConnection()方法在数据库关闭时抛出异常大约需要40秒!这会导致应用程序在数据库中断期间过载。我尝试使用数据源设置LoginTimeout=8,但没有效果 请看下面我正在使用的数据源 <jdbc-connection-pool connection-va
ojdbc14.jar
Version10.1.0.4
我遇到的问题是datasource.getConnection()
方法在数据库关闭时抛出异常大约需要40秒!这会导致应用程序在数据库中断期间过载。我尝试使用数据源设置LoginTimeout=8
,但没有效果
请看下面我正在使用的数据源
<jdbc-connection-pool connection-validation-method="table"
datasource-classname="oracle.jdbc.pool.OracleDataSource"
fail-all-connections="true"
idle-time out-in-seconds="600"
is-connection-validation-required="true"
is-isolation-level-guaranteed="false"
max-pool-size="100"
max-wait-time-in-millis="8000"
name="mydb"
pool-resize-quantity="80"
res-type="javax.sql.DataSource"
steady-pool-size="20"
validation-table-name="dual">
<property name="url" value="jdbc:oracle:thin:@server1:1521:mydb"/>
<property name="user" value="user1"/>
<property name="LoginTimeout" value="8"/>
<property name="password" value="pass1"/>
</jdbc-connection-pool>
有人能帮忙吗?我需要
getConnection()
方法在给定的超时时间内超时。这里有一些东西可以尝试:
来自“Oracle®数据库JDBC开发人员指南和参考”
将JDBC与防火墙一起使用
空闲连接的防火墙超时可能会切断连接。这可能导致JDBC应用程序在等待连接时挂起。您可以执行以下一个或多个操作,以避免由于防火墙超时而断开连接:
- 如果您使用的是连接缓存 或连接池,然后始终 在上设置非活动超时值 连接缓存将变短 超过防火墙空闲超时值
- 将oracle.net.READ\u TIMEOUT传递为 要启用读取的连接属性 套接字超时。超时值 以毫秒为单位
- 对于JDBCOCI和JDBCThin
驱动程序,使用网络描述符
连接到数据库并指定
中的ENABLE=breaked参数
connect中的DESCRIPTION子句
描述符。另外,设置一个较低的值
对于
tcp\u保持有效\u间隔
- 通过设置启用Oracle Net DCD
SQLNET.EXPIRE\u TIME=1 服务器端的
文件sqlnet.ora