Hitachi

Cosminexus V11 アプリケーションサーバ リファレンス API編


2.9 アプリケーションサーバが対応するDependency Injection

Dependency Injection(DI)とは,ターゲットクラスのフィールドやsetメソッドにアノテーション(@EJB,@Resource,@Inject)を設定することで,オブジェクトの参照をJ2EEサーバが自動的にセットする機能です。

EJBコンテナ上で動作するクラスの中で,ターゲットクラスとなるクラスを次に示します。

また,Webコンテナ上で動作するクラスの中で,ターゲットクラスとなるクラスを次に示します。

Enterprise Beanのホームインタフェース,またはビジネスインタフェースへの参照をDIする場合は,@EJBを設定します。

@Resourceを設定した場合は,次の表に示すリソースのタイプをDIできます。

表2‒31 @ResourceでDIできるリソースのタイプ

リソースのタイプ

DIの可否※1

java.lang.String※2

×

java.lang.Character※2

×

java.lang.Integer※2

×

java.lang.Boolean※2

×

java.lang.Double※2

×

java.lang.Byte※2

×

java.lang.Short※2

×

java.lang.Long※2

×

java.lang.Float※2

×

javax.xml.rpc.Service

×

javax.xml.ws.Service

×

javax.jws.WebService

×

javax.sql.DataSource※3

javax.jms.ConnectionFactory

javax.jms.QueueConnectionFactory※4

javax.jms.TopicConnectionFactory

javax.mail.Session

java.net.URL

×

javax.resource.cci.ConnectionFactory※5

org.omg.CORBA_2_3.ORB

  ※6

javax.jms.Queue※3,※7

javax.jms.Topic※7

javax.resource.cci.InteractionSpec

×

javax.transaction.UserTransaction

  ※8

javax.ejb.EJBContext

  ※9

javax.ejb.SessionContext

  ※9

javax.ejb.TimerService

    ※9,※10

JavaBeansリソース

管理対象オブジェクトの独自のインタフェース

(凡例)

○:使用できます。

×:使用できません。

注※1

管理対象オブジェクトへの対応づけは,Java Typeに関係なく,mappedName要素で対応づけます。リソースアダプタの表示名と管理対象オブジェクト名の区切り文字には,「!#」を使用してください。

注※2

<env-entry-value>に値を設定できないので,DI,lookupで得られる値を設定できません。

注※3

DB Connectorが該当します。

注※4

TP1/Message Queue - Access,Reliable Messagingが該当します。

注※5

TP1 Connectorが該当します。

注※6

ORBのshareable属性はtrueが設定されているものとして動作します。なお,注入されるORBオブジェクトは,ほかのコンポーネントでも使用される共有のインスタンスです。

注※7

Connector 1.5に準拠したリソースアダプタを使用する場合は,JMSで定義する管理対象オブジェクト(javax.jms.Destinationインタフェースまたはサブインタフェース)をリソースアダプタの標準DD(ra.xml)の<connector>-<resourceadapter>-<adminobject>-<adminobject-interface>タグに指定してください。

注※8

CMTで動作するEnterprise Beanまたはインターセプタでは使用できません。

注※9

Webコンテナ上で動作するクラスでは使用できません。

注※10

Stateful SessionBeanや,Stateful SessionBeanに適用されたインターセプタでは使用できません。