2.4.2. 記述子ベースのプロパティー置換

アプリケーションの設定 (データソース接続パラメーターなど)は、通常はデプロイメント、テスト、および製品のデプロイメントによって異なります。Java EE 仕様にはこれらの設定を外部化するメソッドが含まれておらず、このような違いはビルドシステムスクリプトで対応することがあります。
JBoss Enterprise Application Platform 6 では、記述子ベースのプロパティー置換 を使用して設定を外部で管理できます。
記述子ベースのプロパティー置換 は、記述子を基にプロパティーを置き換えるため、アプリケーションやビルドチェーンから環境に関する仮定を除外できます。環境固有の設定は、アノテーションやビルドシステムスクリプトでなく、デプロイメント記述子に指定できます。設定はファイルに指定したり、パラメーターとしてコマンドラインで提供したりできます。
記述子ベースのプロパティー置換は、standalone.xml または domain.xml からグローバルに有効化されます。
<subsystem xmlns="urn:jboss:domain:ee:1.1">
  <spec-descriptor-property-replacement>
    true
  </spec-descriptor-property-replacement>
  <jboss-descriptor-property-replacement>
    true
  </jboss-descriptor-property-replacement>
</subsystem>
ejb-jar.xml および persistence.xml の Java EE 記述子は置き換えできますが、デフォルトでは無効になっています。
JBoss 固有の記述子の置換はデフォルトで有効になっています。記述子は以下で置換できます。
  • jboss-ejb3.xml
  • jboss-app.xml
  • jboss-web.xml
  • *-jms.xml
  • *-ds.xml
たとえば、以下のアノテーションを持つ Bean があるとします。
 @ActivationConfigProperty(propertyName = "connectionParameters", propertyValue = "host=192.168.1.1;port=5445")
記述子ベースのプロパティー置換が有効になっている場合、コマンドラインで以下のように connectionParameters を指定できます。
./standalone.sh -DconnectionParameters='host=10.10.64.1;port=5445'
システムプロパティーで指定する場合は以下のようになります。
<activation-config>
  <activation-config-property>
    <activation-config-property-name>
      connectionParameters
      </activation-config-property-name>
    <activation-config-property-value>
      ${jms.connection.parameters:'host=10.10.64.1;port=5445'}
    </activation-config-property-value>
  </activation-config-property>
</activation-config>
${jms.connection.parameters:'host=10.10.64.1;port=5445'} では、デフォルト値を提供しながら、コマンドラインが指定するパラメーターによって接続パラメーターが上書きされます。