2016-08-08 16 views
0

注入されたBeanインスタンスとして使用された場合のejbセッションBeanの動作に関する質問。 これはどのように動作するのか100%はわかりません。私はそれを練習や主題に関する文書を読むことから推測します。 @EJB注釈がコンテナによってどのように詳細に処理されているか知りたい。ejbコンポーネントをデプロイした瞬間から@EJB注釈がEJBコンテナ3.xでどのように処理されるのですか?

セッションBeanには、インタフェース、実装クラス、デプロイメント記述子があります。それらをejb jarでパッケージ化します。

  1. コンテナによってグローバルJNDIにパットされるものは何ですか? ビジネスインタフェースへの静的参照?
  2. グローバルJNDIの読み込み方法と時期はいつですか?
  3. コンポーネントJNDI ENCにejbリファレンスが設定されているとしますか?
  4. この参照はJNDI ENC(java:comp/env/beanB)は セッションBeanコンポーネントインターフェイス、セッションBeanインスタンスプロキシまたは セッションBeanインスタンスへの参照ですか。 SLSBとSFSBの違いはありますか?フィールド上の@EJB注釈付き
  5. すべての新しいEJBセッションBean インスタンスは、すべてのEJBインスタンスは、同じ注入されたEJBセッションBeanインスタンス を共有し、注釈付きフィールドまたは に注入されたEJBの新しいインスタンスを取得していますか?
  6. ルックアップ(セッションコンテキストで)によるejb注入は、常に新しい 注入ejbインスタンスを提供しますか?例: ループでctx.lookup(ejbReference)を呼び出しますか? EJB 3.0では

答えて

1
  1. 、JNDI名は(使用可能な場合、すべて、理論的には、コンテナが唯一のEJB参照をサポートできる)ベンダー固有ですが、ベンダーは通常、EJBの参照/プロキシを返します。 EJB 3.1では、EJBコンテナで特定のjava:global,java:app、およびjava:moduleという名前を使用できるようにする必要があり、これらのルックアップから返されるオブジェクトはEJB参照/プロキシでなければなりません。
  2. グローバルなJNDIは、JNDIルックアップを実行するときにアクセスされます。他の場合(たとえば、@EJB(lookup="java:app/...")を解決する場合)には、コンテナはグローバルJNDI名にアクセスする可能性があります。
  3. コンテナにjava:が入力されても定義されていませんが、コンポーネントインスタンスでライフサイクルコールバックメソッドまたはビジネスメソッドが呼び出される前に内容を使用できる必要があります。
  4. @EJB/<ejb-ref>/<ejb-local-ref>ルックアップが常にEJB参照/プロキシを返し、実際のBeanインスタンスを返さないようにします。プロキシは、実際のBeanインスタンスを呼び出す前に、すべてのコンテナサービスが実行されることを保証します(セキュリティ、トランザクション、リモート処理など)。 SLSBの場合、任意のBeanインスタンスが呼び出され、スレッド、並行性、タイミング、ベンダー固有の構成などに応じて、同じかまたは異なる実際のインスタンスが呼び出されます。SFSBの場合、特定のIDを持つBeanインスタンスが呼び出されます;同じBeanインスタンスを取得する可能性がありますが、EJBコンテナが実際のBeanインスタンスをパッシベーションしている場合はそうではないかもしれませんが、再アクティブ化すると同等の状態のインスタンスになるはずです。 EJB 3.1のシングルトンセッションBeanでは、シングルトンBeanインスタンスが呼び出されることが保証されます。
  5. 同じプロキシインスタンスを取得するかどうかは未定義です。 SLSBとシングルトンBeanの場合、インジェクションまたはルックアップは、前述のように実際のBeanインスタンスに委譲する単一のプロキシを返す可能性があります。 SFSBの場合、プロキシは特定の実際のBeanインスタンスを呼び出すことができるように、プロキシが特定の状態をIDと共に格納する必要があるため、基本的には注入またはルックアップごとに別々のインスタンスにする必要があります。
  6. コンテナの動作は定義されていませんが、注入は通常Context.lookupを使用してコンテナによって実装され、次にField.set(またはセッターメソッド注入の場合はMethod.invoke)が使用されます。それにかかわらず、インスタンスの処理は上記のとおりです。
関連する問題