CDI如何删除有状态会话bean?

Raj*_*ajV 6 cdi ejb-3.1

规范说CDI容器在范围的上下文即将被销毁时删除了SFSB.它是如何完全删除EJB的?它似乎没有调用@Remove注释的方法.

@Stateful
public class CustomerDAOImpl implements CustomerDAO {
    @PreDestroy
    public void onDestroy() {
        //This is getting called as expected
    }
    @Remove
    public void deleteMyBean() {
        //This is not getting called!
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,CDI在技术上正在做规范所说的.问题是它如何设法要求EJB容器删除实例?谢谢.

小智 2

正如 covener 所说,这是使用特定于实现的 EJB API 完成的,该 API 不是 EJB 标准 API 的一部分。

正如 covener 所说,调用 @Remove 并不是正确的继续方式。@Remove 方法由用户代码调用,并告诉EJB 容器删除 EJB。如果您希望在删除 EJB 时进行回调,请使用 @PreDestroy。