次のアノテーションが付いたステートフルセッションBeanがあります。
@Stateful
@Name("fooBar")
public class FooBarAction implements FooBar {
FooBarインスタンスを取得する方法は2つあることに気づきました。
シームルックアップ:
Component.getInstance(FooBarAction.class);
JNDIルックアップ:
(new InitialContext()).lookup("MYAPP/FooBarAction/local");
JNDIルックアップを使用すると、ルックアップを実行するたびに、FooBarの新しいインスタンスが作成されていることに気付きます。デフォルトのコンストラクターが呼び出され、setterメソッドを使用してSFSBの状態(属性)を戻します。
Seamルックアップを使用すると、デフォルトのコンストラクターは呼び出されず、setterメソッドも呼び出されません。インスタンスがあります。前のルックアップと同じインスタンス。
では、違いは何ですか?そして、使用するための最良の方法は何ですか?