JBoss 数据源中的环境变量

phi*_*831 4 jboss jboss7.x

我有一个 JBoss 服务器正在运行,并且想要部署一个服务。该服务连接到在以下 xml 文件中配置的数据库

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
    <datasource jta="false" jndi-name="java:/PMBootStrapDS"
        pool-name="PMBootStrapDS" enabled="true" use-ccm="false">
        <connection-url>jdbc:postgresql://localhost:5432/i2b2</connection-url>
        <driver-class>org.postgresql.Driver</driver-class>
        <driver>postgresql-9.2-1002.jdbc4.jar</driver>
        <security>
            <user-name>i2b2pm</user-name>
            <password>demouser</password>
        </security>
        <validation>
            <validate-on-match>false</validate-on-match>
            <background-validation>false</background-validation>
        </validation>
        <statement>
            <share-prepared-statements>false</share-prepared-statements>
        </statement>
    </datasource>
</datasources>
Run Code Online (Sandbox Code Playgroud)

为了轻松地将它部署在不同的系统上,我想将数据库位置绑定到一个环境变量。我试过这样的事情

<connection-url>jdbc:postgresql://${env.MY_DB_LOCATION}/i2b2</connection-url>
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

有关如何解决此问题的任何建议?

men*_*eta 5

确保您在 standalone.xml 中启用了属性替换。

在 standalone.xml 中查找以下子系统,并确保将值设置为 true

<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>
Run Code Online (Sandbox Code Playgroud)

编辑:这仅支持 eap6 和 jboss 7.1.2(或更高版本)