1

MyServiceリモートインターフェイスと対応する実装EJBがあるかどうか、同じアプリケーションサーバーで実行されているjsfから他のejbsまたはマネージドBeanにアノテーションをMyServiceBean使用してBeanインスタンスを注入できるかどうか疑問に思っています。@EJB

この場合、インターフェイスまたは実装に注釈を付ける必要がありますか?例えば:

@EJB
private MyService myService;

また

@EJB
private MyServiceBean myService;
4

2 に答える 2

2

EJBと同じJVM内のクライアントからEJBにアクセスしている場合、リモートインターフェースは不要です。リモートインターフェースは、EJBがデプロイされているJVMの外部にあるEJBクライアントによって使用されます。したがって、特定のケースでは、必要なのは

       @EJB
       private MyServiceBean myService;

あなたのケースでリモートインターフェースインジェクションメカニズムを使用すると、同じ結果に到達するために不必要なラウンドトリップが発生します。

さまざまなEJB呼び出しモードのユースケースは次のとおりです。

  1. @Remote:リモートビジネスインターフェイスを示します。メソッドパラメータは値で渡され、RMIプロトコルの一部としてシリアル化可能である必要があります(Apressの最初のJava EE6プラットフォームから引用)

  2. @Local:ローカルビジネスインターフェイスを示します。メソッドパラメータは、参照によってクライアントからBeanに渡されます(Apressの最初のJava EE6プラットフォームから引用)

  3. なし:これは、インターフェースが指定されていないプレーンインジェクションタイプです。EJBと同じJVM内では、これで問題ありません。設計の観点から(緩い結合原理)、@Local注入法を使用することをお勧めします

于 2013-03-16T15:23:11.783 に答える
0

ローカルまたはリモートのエンタープライズBeanの参照@EJBをどのように取得するかは重要ではありません。注釈を使用する

@EJB
ExampleBean exampleBean;
于 2013-03-16T15:24:17.743 に答える