10.1 Cosminexusが対応しているアノテーション

アノテーションは,ソースコードに注釈を付けることができる言語仕様です。

Cosminexusが対応しているアノテーションの一覧を次の表に示します。

表10-1 Cosminexusが対応しているアノテーションの一覧

パッケージアノテーションアノテーションの説明属性属性のデフォルト値属性の説明
javax.annotation@Resourceリソースへの参照を宣言します。
クラス,メソッド,フィールドに設定できます。メソッドやフィールドに設定した場合,Dependency Injectionの対象となります。ただし,メソッドはsetメソッドである必要があります。
String name()
  • メソッドに設定した場合
    アノテーションを設定したクラス名/setメソッドのプロパティ
  • フィールドに設定した場合
    アノテーションを設定したクラス名/フィールド名
リソース参照の名称を設定します。設定した名称はJNDI名として使用されます。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
Class type()※1
  • メソッド設定した場合
    メソッドの引数の型
  • フィールドに設定した場合
    フィールドの型
リソースのJavaタイプを設定します。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
AuthenticationType authenticationType()CONTAINERリソースに使用する認証タイプを設定します。
boolean shareable()trueリソースを共用するかどうかを設定します。
String mappedName()※2""参照先リソースを特定するためにリソース表示名やキュー名を設定します。
String description()""リソースの説明を設定します。
@Resources@Resourceを複数設定します。
なお,クラスにだけ設定できます。
Resource[] valueなし複数のリソース(@Resource)を定義します。
@PostConstructEnterprise Beanインスタンスが生成された直後にコールバックするメソッドを設定します。なし
@PreDestroyEnterprise Beanインスタンスが削除される直前にコールバックするメソッドを設定します。なし
javax.annotation.security@RunAsEnterprise Beanを実行する際に適用するセキュリティロールを設定します。
なお,クラスにだけ設定できます。
String value()なしEnterprise Beanを実行する際に適用するセキュリティロール名を設定します。
@DeclareRolesセキュリティロールの参照を設定します。
なお,クラスにだけ設定できます。
String[] value()なし参照するセキュリティロール名を設定します。
@RolesAllowedクラスまたはメソッドに対してアクセスを許可するセキュリティロールを設定します。String[] value()なしアプリケーションでのメソッドにアクセスするのが許可されたロールリストを設定します。
@PermitAllすべてのセキュリティロールに対して,アクセスを許可するクラスまたはメソッドに設定します。なし
@DenyAllすべてのセキュリティロールに対して,アクセスを拒否するメソッドに設定します。なし
javax.ejb@StatelessStateless Session Beanのクラスに設定します。String name()Stateless Session Beanのパッケージを除いたクラス名Stateless Session Beanの名称を設定します。
String mappedName()※3なし
String description()""Stateless Session Beanの説明を設定します。
@StatefulStateful Session Beanのクラスに設定します。String name()Stateful Session Beanのパッケージを除いたクラス名Stateful Session Beanの名称を設定します。
String mappedName()※3なし
String description()""Stateful Session Beanの説明を設定します。
@InitStateful Session BeanのHomeインタフェースで定義したcreate<METHOD>()を実行した際,コールバックするメソッドに設定します。String value()""対応するcreate<METHOD>()名を設定します。
@RemoveStateful Session Beanを削除する働きを持つビジネスメソッドに設定します。boolean retainIfException()falseメソッドがアプリケーション例外で異常終了した場合に削除するかどうかを設定します。
@RemoteEnterprise Beanのリモートビジネスインタフェースを設定します。
アノテーションをインタフェースに設定した場合,そのインタフェースがリモートビジネスインタフェースとなります。Beanクラスに設定した場合,value属性にリモートビジネスインタフェースを設定する必要があります。
Class[] value(){}アノテーションをBeanクラスに設定した場合,リモートビジネスインタフェースのクラスを設定します。
@LocalEnterprise Beanのローカルビジネスインタフェースを設定します。
アノテーションをインタフェースに設定した場合,そのインタフェースがローカルビジネスインタフェースとなります。Beanクラスに設定した場合,value属性にローカルビジネスインタフェースを設定する必要があります。
Class[] value(){}アノテーションをBeanクラスに設定した場合,ローカルビジネスインタフェースのクラスを設定します。
@RemoteHomeリモートホームインタフェース,およびリモートコンポーネントインタフェースを使用した呼び出しをサポートするEnterprise Beanのクラスに設定します。Class value()なしリモートホームインタフェースを設定します。
@LocalHomeローカルホームインタフェース,およびローカルコンポーネントインタフェースを使用した呼び出しをサポートするEnterprise Beanのクラスに設定します。Class value()なしローカルホームインタフェースを設定します。
@TransactionManagementEnterprise Beanのトランザクション管理種別を設定します。
なお,クラスにだけ設定できます。
TransactionManagementType value()CONTAINERトランザクション管理種別を設定します。
@TransactionAttributeEnterprise BeanがCMTで動作する場合のトランザクション属性を設定します。
クラス,メソッドに設定できます。
TransactionAttributeType value()REQUIREDトランザクション属性を設定します。
@PostActivate※4Stateful Session Beanが活性化された直後にコールバックするメソッドに設定します。なし
@PrePassivate※4Stateful Session Beanが非活性化される直前にコールバックするメソッドに設定します。なし
@TimeoutTimerService使用時にコールバックするタイムアウトメソッドに設定します。なし
@ApplicationExceptionアプリケーション例外とする例外クラスに設定します。boolean rollback()false例外発生時にコンテナがトランザクションをロールバックするかどうかを設定します。
@EJBEJBのビジネスインタフェースまたはホームインタフェースへの参照を設定します。
クラス,メソッド,フィールドに設定できます。メソッドやフィールドに設定した場合,Dependency Injectionの対象となります。ただし,メソッドはsetメソッドである必要があります。
String name()
  • メソッドに設定した場合
    アノテーションを設定したクラス名/setメソッドのプロパティ
  • フィールドに設定した場合
    アノテーションを設定したクラス名/フィールド名
リソース参照の名称を設定します。設定した名称はJNDI名として使用されます。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
Class beanInterface()
  • メソッド設定した場合
    メソッドの引数の型
  • フィールドに設定した場合
    フィールドの型
ビジネスインタフェースまたはホームインタフェースのクラスを設定します。アノテーションをメソッドまたはフィールドに設定する場合,省略できます。
String beanName()""参照するEJBのパッケージなしクラス名を設定します。ただし,参照するEJBクラスを定義するアノテーション(@Stateless, @Stateful)にname属性が設定されている場合,name属性の値を設定します。また,DDによる定義をサポートするEJBの場合,DDの<ejb-name>タグの値を設定します。
String mappedName()※3なし
String description()""参照するEJBの説明を設定します。
@EJBs@EJBを複数設定します。
なお,クラスにだけ設定できます。
EJB[] value()なし@EJBを設定します。
javax.interceptor@AroundInvokeビジネスメソッドの呼び出しをインターセプトするメソッドに設定します。なし
@ExcludeDefaultInterceptorsデフォルトインターセプタを適用しないクラス,およびメソッドに設定します。なし
@ExcludeClassInterceptorsクラスインターセプタを適用しないメソッドに設定します。なし
@Interceptors適用するインターセプタクラスを設定します。
クラス,およびメソッドに設定できます。
Class[] value()なし適用するインターセプタクラスを設定します。
(凡例)
-:該当しません。
注※1
type属性はJ2EE仕様と異なり,設定値(Java Type)によって対応するDDが変わります。Java Typeによって異なるDDの対応を表10-2に示します。
注※2
mappedName属性はtype属性によって設定条件が変わります。@ResourceでのmappedName属性の設定条件を表10-3に示します。
注※3
属性を指定できますが,サポートしないため,動作しません。
注※4
アノテーションを設定できますが,活性化,非活性化の状態変化をサポートしないため,動作しません。

表10-2 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
インポート時に例外となります。

表10-3 @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を使用する場合,リソースアダプタの表示名とキューの表示名の区切り文字には,「#」を使用してください。