4

我们是一个 J2EE 应用程序,在 Websphere 6.1 上使用 Struts-EJB-Hibernate 和 Mainframe/DB2 后端,最近已转移到生产环境。

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

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

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 秒,但我仍然遇到这个问题..

请分享您的观点并帮助我

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

4

2 回答 2

8

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

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

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

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

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

于 2009-05-25T12:32:06.380 回答
1

我得到了这个答案

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

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

于 2009-04-29T06:30:43.123 回答