cdi - 从@PreDestroy 方法调用@RequestScoped Bean

标签 cdi lifecycle

我有应用程序逻辑在 @RequestScoped bean 中编写协议(protocol)文件。我想在 @SessionScoped bean 过期之前编写协议(protocol)。

@SessionScoped
class Anybean implements Serializable {

@Inject
private ProtocolBean protocolBean;

@PreDestroy
private void writeFinalProtocol() {
    protocolBean.writeProtocol();

}

}

我收到错误:WELD-000019 销毁实例托管 Bean 时出错。通常不允许从@PreDestroy 调用其他bean 吗?

最佳答案

好的,我发现:一旦我将 ProtocolBean 更改为 @SessionScoped 或 @ApplicationScoped 一切正常。似乎您无法在 @PreDestroy 方法中实例化 RequestScoped bean 并在其上调用方法。

底层异常是:com.sun.jdi.InvocationException 发生调用方法

关于cdi - 从@PreDestroy 方法调用@RequestScoped Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17151895/

相关文章:

java - 消息驱动 Bean 是否应该部署在 .ear 文件中?

jpa - 使用 CDI + WS/RS + JPA 构建应用程序

ios - 检索我们处于生命周期 Controller 的哪个状态

java - 什么决定了 Dagger 2 中组件(对象图)的生命周期?

Android: AlarmManager on BroadcastReceiver 的生命周期

javascript - 无法读取null的属性 'indexOf',估计是react生命周期问题

java - 由JBoss Wildfly和JPA注入(inject)中的: java. lang.NullPointerException引起

java - 在 JAX-RS 序列化期间保留 EntityManager session

jsf - 如何在多个类实现中使用 CDI 限定符?

.net-core - .net 核心短生命周期缓解