2012-05-10 17 views
2

私はのは、私はEJB 3.1で2つのステートレス豆を持っているとしましょう...と思いまして:@EJBが一意のejbインスタンスであることが保証された@Stateless Bean?

  1. @Stateless Class1の

    @EJB MyUniqueInstanceBean uniqueBean1。

2.

@Stateless 
Class2 

@EJB MyUniqueInstanceBean uniqueBean2; 

uniqueBean1とuniqueBean2がMyUniqueInstanceBeanのユニークなインスタンスであることが保証されて?

+1

1.コードをフォーマットし、必要に応じて角括弧を使用することを忘れないでください(MyUniqueInstanceBeanはClass1とClass2の内部に挿入されていますか?)。 2.答えはあなたがMyUniqueInstanceBeanをどのように定義したかによって異なります。明確化のためにシングルトン – perissf

答えて

2

MyUniqueInstanceBeanがの場合ステートレス uniquebean1とuniquebean2の呼び出しが実際に同じインスタンスを呼び出すのは手元にありません。 EJB 3.1仕様では、これは、次の言葉で語られている:

ステートレスセッションBeanのすべてのインスタンスが等価であるので、 コンテナは任意の 使用可能なインスタンスへのクライアント・呼び出されたメソッドを委任することを選択できます。これは、例えば、コンテナが同じトランザクション内の同一クライアントからの要求を異なるインスタンスに委託し、コンテナが複数のトランザクションからの要求を同じインスタンスにインターリーブする可能性があることを意味する。

MyUniqueInstanceBeanがステートフルであれば、uniquebean1とuniquebean2が同じインスタンスを参照していないことが保証されています。再び仕様から:クライアントは、依存関係 注射またはJNDIルックアップを使用してステートフルセッションBeanインスタンスへ の参照を取得した場合

セッションBeanインスタンスの人生が始まる、またはクライアントがセッションBeanのホームに作成メソッドを呼び出すときインタフェース。これにより、 コンテナがセッションBeanクラスのnewInstanceを呼び出して、 に新しいセッションBeanインスタンスを作成します。

AシングルトンセッションBeanは アプリケーションごとに一度インスタンス化されるセッションBeanコンポーネントです:インスタンスが1つしかないので

あなたはシングルトンを使用している場合は、その両方が、同じインスタンスを参照してください。 。コンテナが多くの仮想マシンに分散された の場合、各アプリケーションは各JVMに対して1つのシングルトンのインスタンスを持ちます。

+0

ありがとうございました。ステートフルはClass1とClass2の一意のインスタンスを保証すると思っていました。 – user899757

+0

同じステートフルBeanインスタンスを2つの異なるステートレスBeanで使用できるようにする方法 – jch

関連する問題