8.4.5. アプリケーションで EJB および MDB プロパティーの置換を有効にする
Red Hat JBoss Enterprise Application Platform の新機能により、EJB および MDB でプロパティー置換を有効にできます。
@ActivationConfigProperty
と@Resource
注釈。プロパティーの置換には、以下の設定およびコードの変更が必要です。
- JBoss EAP サーバー設定ファイルでプロパティー置換を有効にする必要があります。
- JBoss EAP サーバーの起動時に、システムプロパティーをサーバー設定ファイルに定義するか、引数として渡す必要があります。
- 置換変数を使用するには、コードを変更する必要があります。
手順8.7 MDB アプリケーションにプロパティー置換を実装する
以下のコード例は、JBoss EAP 以降に同梱されている
helloworld-mdb
クイックスタートに基づいています。このトピックでは、そのクイックスタートを変更してプロパティーの置換を有効にする方法を示します。
プロパティー置換を有効にするように JBoss EAP サーバーを設定します。
プロパティーの置換を有効にするように JBoss EAP サーバーを設定する必要があります。これを行うには、<annotation-property-replacement>
サーバー設定ファイルのee
サブシステムの属性をtrue
に設定します。- サーバー設定ファイルをバックアップします。
helloworld-mdb
クイックスタートの例では、スタンドアロンサーバーの完全なプロファイルが必要であるため、これはstandalone/configuration/standalone-full.xml
ファイルです。管理対象ドメインでサーバーを実行している場合は、domain/configuration/domain.xml
ファイルになります。 - フルプロファイルで JBoss EAP サーバーを起動します。Linux の場合
EAP_HOME/bin/standalone.sh -c standalone-full.xml
Windows の場合:EAP_HOMEbin\standalone.bat -c standalone-full.xml
- ご使用のオペレーティングシステム向けのコマンドを使用して、管理 CLI を起動します。Linux の場合
EAP_HOME/bin/jboss-cli.sh --connect
Windows の場合:EAP_HOME\bin\jboss-cli.bat --connect
- アノテーションプロパティーの置換を有効にするには、以下のコマンドを実行します。
/subsystem=ee:write-attribute(name=annotation-property-replacement,value=true)
- 以下の結果が表示されるはずです。
{"outcome" => "success"}
- JBoss EAP サーバー設定ファイルへの変更を確認します。
ee
サブシステムには以下の XML が含まれるはずです。<subsystem xmlns="urn:jboss:domain:ee:1.2"> <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> <annotation-property-replacement>true</annotation-property-replacement> </subsystem>
システムプロパティーの定義
サーバー設定ファイルでシステムプロパティーを指定するか、JBoss EAP サーバーの起動時にコマンドラインの引数としてプロパティーを渡すことができます。サーバー設定ファイルで定義されたシステムプロパティーは、サーバーの起動時にコマンドラインに渡されるプロパティーよりも優先されます。- サーバー設定でのシステムプロパティーの定義
- 前のステップで説明したように、JBoss EAP サーバーと管理 API を起動します。
- 以下のコマンド構文を使用して、JBoss EAP サーバーのシステムプロパティーを設定します。
/system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE)
helloworld-mdb
クイックスタートでは、次のシステムプロパティーを設定します。/system-property=property.helloworldmdb.queue:add(value=java:/queue/HELLOWORLDMDBPropQueue) /system-property=property.helloworldmdb.topic:add(value=java:/topic/HELLOWORLDMDBPropTopic) /system-property=property.connection.factory:add(value=java:/ConnectionFactory)
- JBoss EAP サーバー設定ファイルへの変更を確認します。以下のシステムプロパティーは、
<extensions>
の後に表示されるはずです。<system-properties> <property name="property.helloworldmdb.queue" value="java:/queue/HELLOWORLDMDBPropQueue"/> <property name="property.helloworldmdb.topic" value="java:/topic/HELLOWORLDMDBPropTopic"/> <property name="property.connection.factory" value="java:/ConnectionFactory"/> </system-properties>
- JBoss EAP サーバーを起動するときにコマンドラインでシステムプロパティーを引数として -DPROPERTY_NAME=PROPERTY_VALUE の形式で渡します。以下は、前の手順で定義されたシステムプロパティーの引数を渡す方法の例になります。
EAP_HOME/bin/standalone.sh -c standalone-full.xml -Dproperty.helloworldmdb.queue=java:/queue/HELLOWORLDMDBPropQueue -Dproperty.helloworldmdb.topic=java:/topic/HELLOWORLDMDBPropTopic -Dproperty.connection.factory=java:/ConnectionFactory
システムプロパティーの置換を使用するようにコードを変更します。
ハードコードされたものを置き換える@ActivationConfigProperty
と@Resource
新しく定義されたシステムプロパティーを置換した注釈値。以下は、helloworld-mdb
クイックスタートを変更して、ソースコードのアノテーション内で新しく定義されたシステムプロパティーの置換を使用する方法の例です。- 変更
@ActivationConfigProperty
システムプロパティーの置換を使用するためのHelloWorldQueueMDB
クラスの宛先
プロパティー値。The@MessageDriven
注釈は次のようになります。@MessageDriven(name = "HelloWorldQueueMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "${property.helloworldmdb.queue}"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
- 変更
@ActivationConfigProperty
システムプロパティーの置換を使用するためのHelloWorldTopicMDB
クラスの宛先
プロパティー値。The@MessageDriven
注釈は次のようになります。@MessageDriven(name = "HelloWorldQTopicMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "${property.helloworldmdb.topic}"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
HelloWorldMDBServletClient
クラスの@Resource
アノテーションを変更して、システムプロパティーの置換を使用します。コードは以下のようになります。@Resource(mappedName = "${property.connection.factory}") private ConnectionFactory connectionFactory; @Resource(mappedName = "${property.helloworldmdb.queue}") private Queue queue; @Resource(mappedName = "${property.helloworldmdb.topic}") private Topic topic;
hornetq-jms.xml
ファイルを変更して、システムプロパティーの置換値を使用します。<?xml version="1.0" encoding="UTF-8"?> <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0"> <hornetq-server> <jms-destinations> <jms-queue name="HELLOWORLDMDBQueue"> <entry name="${property.helloworldmdb.queue}"/> </jms-queue> <jms-topic name="HELLOWORLDMDBTopic"> <entry name="${property.helloworldmdb.topic}"/> </jms-topic> </jms-destinations> </hornetq-server> </messaging-deployment>
- アプリケーションをデプロイします。アプリケーションは、システムプロパティーで指定された値を使用します。
@Resource
と@ActivationConfigProperty
プロパティー値。