gpt4 book ai didi

java - 如果最后一个 EJBBean 方法抛出 SystemException,EJB 容器是否会删除调用层次结构中的所有 EJB 对象?

转载 作者:行者123 更新时间:2023-12-01 12:58:02 27 4
gpt4 key购买 nike

以下是一些 sudo 代码:

//controller method
public String method1()
{
EJBBean1 bean1;
bean1.method1();
}

//EJBBean1 class
public void method1()
{
EJBBean2 bean2;
bean2.method2();
}

//EJBBean2 class
public void method2()
{
EJBBean3 bean3;
bean3.method3();
}

//EJBBean3 class
public void method3()
{
throw NullPointerException();
}

EJB 对象是通过依赖注入(inject)来注入(inject)的。

如果 EJBBean3 的 method3 抛出 SystemException,EJB 容器是否删除所有 EJB 对象(EJBBean1、2 和 3)?

最佳答案

正常情况

嵌套的StateFullEJB有特殊的行为,包含的EJB持有 session 。

在您的情况下,当 EjbBean1 被销毁时,EjbBean1 持有新的专用 EjbBean2,EjbBean2 也会被销毁。同样的情况也适用于 EjbBean2 - EjbBean3。

因此,EjbBean1 负责在 EjbBean1.remove 方法(@Remove 方法)中调用 EjbBean2.remove 中的删除。

Samples

对于异常情况......

    When ever a System Exception thrown by a bean method, EJB Container invalidates 
the EJB object and destroys the bean instance.The bean instance directly moved into
DOES not exists state and any @PreDestroy methods are not invoked.

A System exception is any unchecked Exception not annotated as an @Application Exception

引用here

因此,您的 EjbBean3 将被 Ejb 容器自动销毁,并且异常将传播到父方法 EjbBean2 和 EJbBean1 。由于没有一个 bean 捕获 NullPointerException这些实例将被容器自动删除。

NOte**,假定 NullPointerException 是一个系统异常(即未注释/配置)

关于java - 如果最后一个 EJBBean 方法抛出 SystemException,EJB 容器是否会删除调用层次结构中的所有 EJB 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com