1

次の 2 つの EJB について考えてみましょう。

@Stateless
public class MyBean1 {

    pulic void method1() {
        //method implementation comes here
    }

    pulic void method2() {
        //method implementation comes here
    } 
}


@Stateless
public class MyBean2 {

    @EJB
    MyBean1 myBean1;

    public void businessMethod() {
        myBean1.method1();
        myBean1.method2();
    }
}

コンテナーは、2 つのメソッドが MyBean1 の同じインスタンスで呼び出されることを保証しますか (また、そのインスタンスの 2 つのメソッド呼び出しの間に他のメソッドは呼び出されません)?

4

1 に答える 1

2

同じインスタンスにアクセスできるかどうかはわかりません。コンテナはそれについて決定します。

同じインスタンス (たとえば、コード内の 1 つ) であると「考え」ていても、@EJB MyBean1それらの呼び出しは異なるMyBeanインスタンスにヒットする可能性があります。

myBean1.method1()との呼び出しの間に、EJB の他のビジネス メソッドが呼び出される場合がありmyBean1.method2()ます。これは、たとえば、別のコンポーネントから行われた EJB への呼び出しである可能性があります。

ただし、ステートレス EJB を使用しているため、これにはあまり関心がないはずです。つまり、EJB に状態を格納するべきではありません。
したがって、呼び出しの間に同じまたは異なる EJB インスタンスを取得するか、他のコンポーネントが同じタイプの EJB でビジネス メソッドを呼び出すかは問題ではありません。

于 2013-04-10T08:54:45.310 に答える