2

在会话范围的 bean 中的 Web 应用程序中的用户操作的上下文中存储待处理的执行列表是否安全,然后通过带@Predestroy注释的方法在会话结束时可靠地执行这些操作(我的意思是,在方法的上下文中安全性@predestroy没有被调用 &因此在某些情况下没有执行操作!?)。

4

2 回答 2

0

您可能想考虑将您的逻辑移动到 HttpSessionListener 实现(它是一个接口)。您将触发 sessionDestroyed 事件(通过在您的具体实现中实现该方法)。

它非常容易使用,也是处理这类事情的好地方(我在当前产品中实现了一个作为 JMX bean 来在运行时处理控制会话)。

TIA

于 2012-08-16T16:05:41.510 回答
0

在 @preDestroy 方法中存储挂起的执行或数据库提交是完全安全的。在这种状态下,托管 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 之前调用此方法。”

于 2017-02-28T07:31:36.150 回答