如何处理陈旧的连接?

4 java db2 hibernate web-applications exception

Ours是一个J2EE应用程序,在大型机/ DB2后端的Websphere 6.1上使用Struts-EJB-Hibernate,最近已转移到生产环境.

当用户第一次登录应用程序或有时间歇性地发生此异常时,我们会收到过时的连接异常.

在第二次尝试用户能够登录到应用程序.我得到的确切错误消息是

empcom.ibm.websphere.ce.cm.StaleConnectionException: 
Execution failed due to a distribution protocol error that caused deallocation of the conversation.  
The command requested could not be completed because of a permanent error condition detected at the target system.  
DB2ConnectionCorrelator: AC100B80.A260.090107181206
Run Code Online (Sandbox Code Playgroud)

PRETEST在webshere设置中启用了选项,并将间隔设为60秒,但我仍然遇到此问题..

请分享您的观点并帮助我

如果需要,我可以给你更多细节.

ale*_*own 8

我们在其中一个生产系统上首次登录时遇到了同样的问题.解决方案是将连接池的最小大小设置为零.

将最小大小设置为大于零的值(例如,一个),当检测到无效时,从池中删除超时连接,但其中一些(在上面的示例中,最后一个)保留在池中(如果最小大小为1,则一个连接保留在池中,即使它还不是有效连接).

下次应用程序请求连接时,将提供无效的连接,从而导致异常.

将最小大小设置为零,从池中删除所有无效连接,因此提供给应用程序的连接不可能有效(因为,如果它有效,它将保留在池中,如果不是,从池中删除).

使用预测试可能是一种有效的替代方案,但需要额外的努力,因为每次为应用程序提供连接时,都会进行测试.