【发布时间】:2015-05-19 19:51:16
【问题描述】:
我明白,调用 @Remove 带注释的方法会告诉 EJB 容器,客户端不再需要有状态 EJB 的实例,并且可以在调用后将其删除。
但在 Oracle JEE 教程中,此方法用于“清理”实例。例如,请参见此处:
@Stateful
public class CartBean implements Cart {
// ...
List<String> contents;
// ...
@Remove
public void remove() {
contents = null;
}
}
(来自https://docs.oracle.com/javaee/6/tutorial/doc/bnbod.html)
成员List<String> contents; 设置为null,但我认为没有任何理由这样做。当实例被删除时,它不会杀死所有这些引用吗?
我可以想象,当实例发布时需要执行一些业务任务,但是在调用@Remove 方法之后,它或多或少会直接调用一些@PreDestroy 方法,我可以在其中执行这些任务.那么为什么我们有这种特殊的机制和@Remove 方法而不是像EJBContainer.remove(myBean) 那样的东西
能否请您澄清@Remove 注释的用途和/或提供一些易于理解的用例示例,以明确我们为什么需要这种机制?
【问题讨论】:
标签: jakarta-ee ejb stateful-session-bean