2.4.2. 基于描述符的属性替换

应用程序配置 - 例如,数据源连接参数 - 通常在开发、测试和产品部署时都会不同。这有时是通过构建系统脚本实现的,因为 Java EE 规格没有包含表达这些配置的方法。
对于 JBoss EAP 6,您可以使用 Descriptor-based property replacement 在外部管理配置。
基于描述符的属性替换(Descriptor-based property replacement)基于描述符替换属性,允许您从应用程序和构建链里删除关于环境的假设。您可以在部署描述符而不是应用程序或构建系统脚本里指定环境专有的配置。您可以在文件里或作为命令行参数提供配置。
基于描述符的属性替换可以通过 standalone.xmldomain.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.xmlpersistence.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'} 允许命令行提供的参数来覆盖连接参数,而且提供了默认值。