想象一个用户可与一些JSF页面,这使得使用ViewScoped后台bean的情况下杀死ViewScoped豆。在导航到应用程序中的不同页面的情况下,bean的自定义析构函数(即@PreDestroy)将自动调用。在用户正确关闭标签页/窗口的情况下,可以通过AJAX在服务器上调用远程命令以释放该bean。如果用户不正确关闭浏览器(即时浏览器终止)
然而,在用户端如果单纯电源出现故障时与PC机就立刻打开或浏览器被终止不当,使得没有JS代码可以被调用。这意味着bean将永远使用其资源挂在服务器端。 如何解决这个问题?
我想到的解决方案之一是在页面上放置一个PrimeFaces轮询元素,该元素将通过远程命令“ping”托管bean。如果bean发现超时,它将终止释放所有资源。有没有更好的解决方案来解决这个问题?谢谢。
它不是对你的问题没有回答,但是如果你的支持bean是“沉重的”,那么可以考虑让EJB池拥有真正的业务逻辑,例如。将bean bean命令传递给由EJB(池?)运行的模拟器。 – mabi