繁体   English   中英

如何处理陈旧的连接?

[英]How to handle stale connections?

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

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

请分享您的观点并帮助我

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

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

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

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

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

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

我得到了答案

使用pretest旧连接和新连接我们可以解决这个问题..预测试查询应该是一个基本的查询(从...中选择sysdate),它随时运行..

和时间间隔应该是最大的,因此应用程序服务器不会得到开销

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM