2.2.3 @Resource

<この項の構成>
(1) 説明
(2) 属性

(1) 説明

リソースへの参照を宣言します。クラス,メソッド,およびフィールドに設定できます。メソッドやフィールドに設定した場合,Dependency Injectionの対象となります。ただし,メソッドはsetメソッドである必要があります。

(2) 属性

@Resourceの属性の一覧を次の表に示します。

属性名機能
nameリソース参照の名称を設定します。設定した名称はJNDI名として使用されます。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
typeリソースのJavaタイプを設定します。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
authenticationTypeリソースに使用する認証タイプを設定します。
shareableリソースを共用するかどうかを設定します。
mappedName参照先リソースを特定するためにリソース表示名やキュー名を設定します。
descriptionリソースの説明を設定します。

各属性の詳細を次に示します。

(a) name属性
String
説明
リソース参照の名称を設定します。設定した名称はJNDI名として使用されます。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
なお,リソースの別名を指定することもできます。J2EEリソースの別名の設定については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「2.4.6 J2EEリソースの別名の設定」を参照してください。
デフォルト値
  • メソッドに設定した場合
    アノテーションを設定したクラス名/setメソッドのプロパティ
  • フィールドに設定した場合
    アノテーションを設定したクラス名/フィールド名
(b) type属性
Class
説明
リソースのJavaタイプを設定します。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
デフォルト値
  • メソッド設定した場合
    メソッドの引数の型
  • フィールドに設定した場合
    フィールドの型
type属性とDDの対応
type属性はJ2EE仕様と異なり,設定値(Java Type)によって対応するDDが変わります。Java Typeによって異なるDDの対応を次の表に示します。

表2-26 type属性によるDDの対応表

type属性J2EE仕様で対応するDDのタグCosminexus仕様で対応するDDのタグ※1
java.lang.String※2env-entryenv-entry
java.lang.Character※2env-entryenv-entry
java.lang.Integer※2env-entryenv-entry
java.lang.Boolean※2env-entryenv-entry
java.lang.Double※2env-entryenv-entry
java.lang.Byte※2env-entryenv-entry
java.lang.Short※2env-entryenv-entry
java.lang.Long※2env-entryenv-entry
java.lang.Float※2env-entryenv-entry
javax.xml.rpc.Serviceservice-ref例外※3
javax.xml.ws.Serviceservice-ref例外※3
javax.jws.WebServiceservice-ref例外※3
javax.sql.DataSourceresource-refresource-ref
javax.jms.ConnectionFactoryresource-refresource-ref
javax.jms.QueueConnectionFactoryresource-refresource-ref
javax.jms.TopicConnectionFactoryresource-refresource-ref
javax.mail.Sessionresource-refresource-ref
java.net.URLresource-ref例外※3
javax.resource.cci.ConnectionFactoryresource-refresource-ref
org.omg.CORBA_2_3.ORBresource-refresource-ref
リソースアダプタによって定義されるほかのコネクションファクトリresource-refresource-env-ref
javax.jms.Queuemessage-destination-refresource-env-ref
javax.jms.Topicmessage-destination-refresource-env-ref
javax.resource.cci.InteractionSpecresource-env-ref例外※3
javax.transaction.UserTransactionresource-env-refresource-env-ref
上記以外のすべてのタイプresource-env-refresource-env-ref
注※1
mappedName要素に「!#」が含まれていた場合は,Java Typeとは関係なく,<resource-env-ref>に対応づけます。
注※2
標準DDから値を取得できないため,属性ファイルには表示しますが,DIは行いません。
注※3
インポート時に例外となります。

(c) authenticationType属性
AuthenticationType
説明
リソースに使用する認証タイプを設定します。
デフォルト値
CONTAINER
(d) shareable属性
boolean
説明
リソースを共用するかどうかを設定します。
デフォルト値
true
(e) mappedName属性
String
説明
参照先リソースを特定するためにリソース表示名やキュー名を設定します。
リソース表示名に半角英数字およびアンダースコア(_)以外の文字を含む場合,半角英数字およびアンダースコア(_)以外の文字をアンダースコア(_)に置き換えて設定してください。
デフォルト値
""
mappedName属性の設定条件
mappedName属性はtype属性によって設定条件が変わります。@ResourceでのmappedName属性の設定条件を次の表に示します。

表2-27 @ResourceのmappedName()の設定条件

設定条件(Java Type,リソースなど)使用可否※1
java.lang.String×
java.lang.Character×
java.lang.Integer×
java.lang.Boolean×
java.lang.Double×
java.lang.Byte×
java.lang.Short×
java.lang.Long×
java.lang.Float×
javax.xml.rpc.Service×
javax.sql.DataSource
javax.jms.ConnectionFactory
javax.jms.QueueConnectionFactory
javax.jms.TopicConnectionFactory
javax.mail.Session
java.net.URL×
javax.resource.cci.ConnectionFactory
org.omg.CORBA_2_3.ORB×
javax.jms.Queue※2
javax.jms.Topic
javax.resource.cci.InteractionSpec×
javax.transaction.UserTransaction×
javax.ejb.EjbContext×
javax.ejb.SessionContext×
javax.ejb.TimerService×
JavaBeansリソース
(凡例)
○:使用できます。
×:使用できません。
注※1
管理対象オブジェクトへの対応づけは,Java Typeに関係なく,mappedName要素で対応づけます。リソースアダプタの表示名と管理対象オブジェクト名の区切り文字には,「!#」を使用してください。
注※2
uCosminexus TP1/Message Queue - AccessまたはCosminexus Reliable Messagingを使用時にjavax.jms.Queueを使用する場合,リソースアダプタの表示名とキューの表示名の区切り文字には,「#」を使用してください。

(f) description属性
String
説明
リソースの説明を設定します。
デフォルト値
""