从@PreDestroy方法调用@RequestScoped Bean

时间:2013-06-17 16:00:49

标签: cdi lifecycle

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

@SessionScoped
class Anybean implements Serializable {

@Inject
private ProtocolBean protocolBean;

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

}

}

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

1 个答案:

答案 0 :(得分:1)

好的我发现:只要我将ProtocolBean更改为@SessionScoped或@ApplicationScoped,一切正常。看起来好像你不能用@PreDestroy方法实例化一个RequestScoped bean并在其上调用一个方法。

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