将待处理的执行列表存储在会话范围bean中的Web应用程序中的用户操作的上下文中是否安全?然后通过@Predestroy
带注释的方法在会话结束时可靠地执行这些操作(我的意思是,@predestroy
方法的安全性未被调用&因此在某些情况下不执行操作!?)。
答案 0 :(得分:0)
您可能希望将逻辑移动到HttpSessionListener实现(它是一个接口)。您将触发sessionDestroyed事件(通过在具体实现中实现该方法)。
这很容易,使用和处理这种事情的好地方(我在当前产品中实现了一个作为JMX bean来处理运行时的控制会话)。
TIA
答案 1 :(得分:0)
在@preDestroy方法中存储挂起的执行或数据库提交是完全安全的。在这种状态下,Managed bean不会被销毁。因此托管bean的状态将与bean内部的常规方法调用相同。请参阅以下文档。
http://docs.oracle.com/javaee/6/tutorial/doc/gmgkd.html#gmghg
“使用@PreDestroy注释准备破坏托管Bean 准备销毁托管bean指定生命周期回调方法,该方法表示应用程序组件即将被容器销毁。
在托管bean类或其任何超类中,准备销毁托管bean。 在此方法中,执行在销毁bean之前所需的任何清理,例如释放bean一直持有的资源。
使用javax.annotation.PreDestroy批注注释方法的声明。 CDI在开始销毁bean之前调用此方法。“