什么是失效连接(Stale Connection)和StaleConnectionException?失效连接是指被WebSphere连接池缓存的,但是由于某种原因已经不可用的数据库连接。原因可能是WebSphere和数据库之间的网络连接中断,DB2服务器关闭或者重新启动。WebSphere并不保证缓存的连接都是有效的,在这种...显示全部
什么是失效连接(Stale Connection)和StaleConnectionException?
失效连接是指被WebSphere连接池缓存的,但是由于某种原因已经不可用的数据库连接。原因可能是WebSphere和数据库之间的网络连接中断,DB2服务器关闭或者重新启动。WebSphere并不保证缓存的连接都是有效的,在这种情况下当用户从连接池中取得了一个失效的连接并且用来进行数据库操作时,WebSphere就会抛出StaleConnectionException。在StaleConnectionException出现之前,用户无法判断这是否为一个无效连接。
对StaleConnectionException的两种解决方法
WebSphere提供了预连接测试这种内置机制来确保返回给用户的连接是可用的。因为预连接测试要经常的连接实际数据库测试连接的有效性,所以这种方式并不适合所有的情况,比如对于性能有很高要求的用户环境。
另一种推荐的解决方法是在用户程序中主动的捕获StaleConnectionException,并且重试取得连接。这里涉及到WebSphere的连接池清除功能,WebSphere在抛出StaleConnectionException以后就会刷新或者重建连接池,以确保失效的连接不会继续存在于连接池中。之后用户再从连接池中取得的连接一般来说就是有效的了。但是如果数据库已经停止响应,重试不能无限次地进行下去,所以应用程序应当限定重试数据库访问的次数。
配置WebSphere预连接测试
预连接测试指在连接返回给客户端前,对连接进行的有效性测试。启动预连接测试可以避免客户因得到无效的连接而引发的StaleConnectionException,配置预连接测试需要指定一条SQL语句供数据库连接测试使用。一般我们会选择执行得最快的SQL语句以尽量减少对性能的影响。应当说明的是WebSphere Application Server 5.0不支持预连接测试。
如果没有办法改代码,使用预连接测试应该是个好方法。收起
环境:WAS 7.0.0.0 Jdk :自带1.6 Linux环境:Linux, version 2.6.18-194.1.AXS3 Database 产品版本:
Oracle
Database 11g Release 11.1.0.0.0 - Production 数据源配置驱动:11.1.0.1.0 (后来更换 11.2.0.1.0 版本) 遇到的几个棘手问题: 1. 写道
Er...
使用过程中出现这个问题。The last packet successfully received from the server was 370,819 milliseconds ago.The last packet sent successfully to the server was 0 milliseconds ago.com.ibm.
websphere
.ce.cm.
Stale
Con...
在开发项目的过程中,出现了以下的问题:org.springframework.jdbc.UncategorizedSQL
Exception
: StatementCallback; uncategorized SQL
Exception
for SQL [sqlstring]; SQL state [null]; error code [-4499]; A communication error h
在was6.1上部署一个web应用,使用
Oracle
10g数据库,使用
连接
池方式
连接
数据库,使用quartz跑自动任务,它就偶尔报下面的错误,请教各位大师如何解决,急急急!!!如下时报错代码:
com.ibm.
websphere
.ce.cm.
Stale
Connection
Exception
: Io 异常: The Network Adapter could not establish the...
J2CA0056I:
连接
管理器接收到来自资源 jdbc/gywork 的资源适配器的致命
连接
错误。接收到的异常为 com.ibm.
websphere
.ce.cm.
Stale
Connection
Exception
: JZ006: 捕获到 IO 例外:com.sybase.jdbc2.jdbc.Syb
Connection
Dead
Exception
: JZ0C0:
连接
已关闭。...
Normal
需要
等待所有的用户断开
连接
Immediate 等待用户完成当前的语句Transactional 等待用户完成当前的事务Abort 不做任何等待,直接关闭数据库normal
需要
在所有
连接
用户断开后才执行关闭数据库任务,所以有的时候看起来好象命令没有运行一样!在执行这个命令后不允许新的
连接
immediate在用户执行完正在执行的语句后就断开用户
连接
,并不允许新用户
连接
。transactional 在拥护执行完当前事物后断开
连接
,并不允许新的用户
连接
数据库。
Fri Nov 30 12:10:55 2012
Errors in file c:\
oracle
\product\10.1.0\admin\orcl\bdump\orcl_reco_952.trc:
ORA-02068: following severe error from DBL_