我在Tomcat上有一个长期的工作。这是一个数据转换来更新数据库的新版本,以防万一你想知道。在我们的开发服务器上,它运行了7个小时,但没有问题就完成了。每60秒它会向浏览器发送进度消息,让您知道它仍处于活动状态,并保持连接处于活动状态。tomcat在120分钟超时过程
然后我试着在不同的服务器上运行它,120分钟后它失败,出现异常“getAttribute:Session already failedated”。我重新启动它,并在120分钟后再次失败并显示相同的消息。它具有在某些关键点重新启动的功能,因此我在“第2部分”开始了它,并且在120分钟时再次死亡。
我得出的结论是,服务器的时间限制为120分钟 - 由于程序错误在连续3次完全相同的流逝时间内死亡,这太巧合了,尤其是当第三次运行会是不同的数据。
Tomcat <会话超时>在我们的开发服务器上设置为30,并在该服务器上运行7小时没有问题,所以无论限制如何,我都不认为是这样。
任何线索是什么让我失望?我猜在那里有另一种超时,但我不知道它是什么。
有没有可能只是在Tomcat中的会话超时是120分钟,并且您还没有使用它那么久?根据错误消息,我可能会提出一些诊断步骤?添加'HttpSessionListener'并在'sessionDestroyed'上打印堆栈跟踪(使用断点捕获它会更好)。然后,您将能够确定Tomcat中的哪种机制使进程中间的会话无效(无效线程,您自己的代码...) – 2011-03-17 20:22:15
我可以尝试一下,看看它是否会提供任何有用信息。我无法设置断点,因为当我从任何实际有开发环境的服务器运行时,它不会失败。当我在测试部门的服务器上运行时,它只会失败。我想这将是一个有趣的实验,看看他们是否会让我访问在该服务器上部署开发环境并运行。 – Jay 2011-03-19 18:52:19