3

次のアノテーションが付いたステートフルセッション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メソッドも呼び出されません。インスタンスがあります。前のルックアップと同じインスタンス。

では、違いは何ですか?そして、使用するための最良の方法は何ですか?

4

1 に答える 1

2

ドキュメントから:このメソッドは、指定されたコンポーネントのシングルトンを返すため、同じコンポーネント名で2回続けて呼び出すと、コンポーネントの同じインスタンスが返されます。

于 2012-08-27T07:49:18.123 に答える