对于我的 JavaScript Web 应用程序,后端是 JBoss 应用程序服务器。
JavaScript 前端始终联系一个 servlet(前端 Controller )。
servlet 在登录时进行一次查找(加上“窄”)。
此查找是对 SFSB(有状态 session Bean)的查找。
此查找的结果存储在 HttpSession 对象中。
servlet 和 SFSB 之间的所有后续通信均由此进行
存储的远程对象。
JBossWeb (Tomcat) 的 session 超时(对于 HttpSession 对象)为 30 分钟。
因此,每次当前端没有任何 Activity 时(> 30 分钟),
session 过期, session 中包含所有内容 - 也包括远程接口(interface)
SFSB 的 - 已删除。
与此同时,SFSB 被钝化到磁盘 (deploy/ejb3-interceptors-aop.xml ->idleTimeoutSeconds=300)。
我的 SFSB 的默认超时是无限的 (removalTimeoutSeconds=0)。所以默认是不会自动删除钝化的sfsb。
在我的情况下,实际上是否有任何理由不将 SFSB 超时 (removalTimeoutSeconds) 设置为 30 分钟 (30*60)(与 session 超时相同)?
最佳答案
唯一的异常(exception)是与有状态 bean 关联的长时间运行的后台事务进程。如果完成时间超过指定的持续时间,则会导致异常,可能交易未激活。
因此,即使前端超时,后台进程也需要结束。在这种情况下,删除超时可能会影响处理并需要进行相应更改。
关于java - 有状态 session Bean 的超时设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605460/