想象一下用户使用某个使用 ViewScoped 支持 bean 的 JSF 页面的情况。如果导航到应用程序中的不同页面,bean 的自定义析构函数(即@PreDestroy)将被自动调用。如果用户正确关闭选项卡/窗口,则可以通过 AJAX 在服务器上调用远程命令以释放 bean。
但是,如果只是用户侧的电源故障并且PC立即关闭或浏览器被不正确地终止以至于无法调用JS代码怎么办。这意味着 bean 将永远挂在服务器端使用它的资源。如何解决这样的问题?
我想到的解决方案之一是在页面上放置一个 PrimeFaces 轮询元素,该元素将通过远程命令“ping”托管 bean。如果 bean 注意到超时,那么它将终止自身以释放所有资源。这个问题有更好的解决方案吗?谢谢。