検索

8.4.5. アプリケーションで EJB および MDB プロパティーの置換を有効にする

download PDF
Red Hat JBoss Enterprise Application Platform の新機能により、EJB および MDB でプロパティー置換を有効にできます。@ActivationConfigProperty@Resource注釈。プロパティーの置換には、以下の設定およびコードの変更が必要です。
  • JBoss EAP サーバー設定ファイルでプロパティー置換を有効にする必要があります。
  • JBoss EAP サーバーの起動時に、システムプロパティーをサーバー設定ファイルに定義するか、引数として渡す必要があります。
  • 置換変数を使用するには、コードを変更する必要があります。

手順8.7 MDB アプリケーションにプロパティー置換を実装する

以下のコード例は、JBoss EAP 以降に同梱されている helloworld-mdb クイックスタートに基づいています。このトピックでは、そのクイックスタートを変更してプロパティーの置換を有効にする方法を示します。
  1. プロパティー置換を有効にするように JBoss EAP サーバーを設定します。

    プロパティーの置換を有効にするように JBoss EAP サーバーを設定する必要があります。これを行うには、<annotation-property-replacement>サーバー設定ファイルの ee サブシステムの属性を true に設定します。
    1. サーバー設定ファイルをバックアップします。helloworld-mdb クイックスタートの例では、スタンドアロンサーバーの完全なプロファイルが必要であるため、これは standalone/configuration/standalone-full.xml ファイルです。管理対象ドメインでサーバーを実行している場合は、domain/configuration/domain.xml ファイルになります。
    2. フルプロファイルで JBoss EAP サーバーを起動します。
      Linux の場合
      EAP_HOME/bin/standalone.sh -c standalone-full.xml
      Windows の場合:
      EAP_HOMEbin\standalone.bat -c standalone-full.xml
    3. ご使用のオペレーティングシステム向けのコマンドを使用して、管理 CLI を起動します。
      Linux の場合
      EAP_HOME/bin/jboss-cli.sh --connect
      Windows の場合:
      EAP_HOME\bin\jboss-cli.bat --connect
    4. アノテーションプロパティーの置換を有効にするには、以下のコマンドを実行します。
      /subsystem=ee:write-attribute(name=annotation-property-replacement,value=true) 
    5. 以下の結果が表示されるはずです。
      {"outcome" => "success"}
    6. 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>
  2. システムプロパティーの定義

    サーバー設定ファイルでシステムプロパティーを指定するか、JBoss EAP サーバーの起動時にコマンドラインの引数としてプロパティーを渡すことができます。サーバー設定ファイルで定義されたシステムプロパティーは、サーバーの起動時にコマンドラインに渡されるプロパティーよりも優先されます。
    • サーバー設定でのシステムプロパティーの定義
      1. 前のステップで説明したように、JBoss EAP サーバーと管理 API を起動します。
      2. 以下のコマンド構文を使用して、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)
      3. 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
  3. システムプロパティーの置換を使用するようにコードを変更します。

    ハードコードされたものを置き換える@ActivationConfigProperty@Resource新しく定義されたシステムプロパティーを置換した注釈値。以下は、helloworld-mdb クイックスタートを変更して、ソースコードのアノテーション内で新しく定義されたシステムプロパティーの置換を使用する方法の例です。
    1. 変更@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") })
      
    2. 変更@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") })
    3. 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;
      
    4. 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>
  4. アプリケーションをデプロイします。アプリケーションは、システムプロパティーで指定された値を使用します。@Resource@ActivationConfigPropertyプロパティー値。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.