| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==Java EE JNDI ENC 注入==
[[Java EE]]
{{amazon|4873115086}}
*EJB3.xでは、ENCが強化され、JNDI ENC参照をBeanクラスのフィールドに直接注入できるようになった
*このためにアノテーションが主に利用されるがm,XMLデプロイメント記述子も利用可能
<&lt;blockquote>&gt;EJB、インターフェースへの参照、JMSキューまたはトピックの送信先、JMS接続ファクトリ、データソース、JCAリソース、プリミティブ型など、様々なものをENCに登録できる<&lt;/blockquote>&gt;
===JNDI ENCへの投入方法===
*2つの異なる方法で設定できる
*ejb-local-ref:MyEJBがMyEJB2のローカルビジネスインターフェースへの参照を必要としていることをEJBコンテナに通知
*ejbs/referenceToMyEJB2 という名前でJNDI ENC に登録
<&lt;ejb-jar>&gt; <&lt;enterprise-bean>&gt; <&lt;session>&gt; <&lt;ejb-name>&gt;MyEJB<&lt;/ejb-name>&gt; <&lt;ejb-local-ref>&gt; <&lt;ejb-ref-name>&gt;ejbs/referenceToMyEJB2<&lt;/ejb-ref-name>&gt; <&lt;ejb-ref-type>&gt;Session<&lt;/ejb-ref-type>&gt; <&lt;local>&gt;org.ejb3book.example.MyEJB2LocalBusiness<&lt;/local>&gt; <&lt;ejb-link>&gt;MyEJB2<&lt;/ejb-link>&gt; <&lt;/ejb-local-ref>&gt; <&lt;/session>&gt; <&lt;/enterprise-bean>&gt; <&lt;/ejb-jar>&gt;
====アノテーションによる設定====
*アノテーションで定義された情報でJNDI ENCに投入
java:comp/env/org.ejb3book.example.MyEJBBean/otherBean
====XMLによる注入====
*フィールドの初期化にアノテーションを利用したくない場合、ejb-jar.xmlデプロイメント記述子で<&lt;jnjection-target> &gt; を利用できる <&lt;ejb-jar>&gt; <&lt;enterprise-bean>&gt; <&lt;session>&gt; <&lt;ejb-name>&gt;MyEJB<&lt;/ejb-name>&gt; <&lt;ejb-local-ref>&gt; <&lt;ejb-ref-name>&gt;ejbs/referenceToMyEJB2<&lt;/ejb-ref-name>&gt; <&lt;ejb-ref-type>&gt;Session<&lt;/ejb-ref-type>&gt; <&lt;local>&gt;org.ejb3book.example.MyEJB2LocalBusiness<&lt;/local>&gt; <&lt;ejb-link>&gt;MyEJB2<&lt;/ejb-link>&gt; <&lt;injection-target>&gt; <&lt;injection-target-class>&gt;
org.ejb3book.example.MyEJBBean
<&lt;/injection-target-class>&gt; <&lt;injection-target-name>&gt;otherBean<&lt;/injection-target-name>&gt; <&lt;/injection-target>&gt; <&lt;/ejb-local-ref>&gt; <&lt;/session>&gt; <&lt;/enterprise-bean>&gt; <&lt;/ejb-jar>&gt;
====XMLによるオーバーライド====
*注入アノテーションを使うと、Beanクラスのコードに構成をハードコーディングすることになるとみなされる場合もある
*EJB仕様ではXMLデプロイメント記述子を使って注入アノテーションをオーバーライドできる
<&lt;blockquote>&gt;XMLは常にアノテーションメタデータよりも優先される。XMLはハードコーディングされたアノテーションを再構成する手段を提供する<&lt;/blockquote>&gt;
====注入と継承====
*Beanクラスをクラス階層に含めることができる
}
*このようにすると、SomeEJBではなく、AnotherEJBが注入される
<&lt;blockquote>&gt;someMethod が private の場合、Base には SomeEJBが注入される<&lt;/blockquote>&gt;
===参照の注入と型 ===

案内メニュー