如何在Wildfly配置文件中使用变量?

Koe*_*eus 6 environment-variables wildfly server devops wildfly-10

我正在standalone-full.xml为所有服务器环境设置一个公共文件,因此需要为数据库URL(等)提供变量,而不是对它们进行硬编码.

配置文件中的一个这样的部分可能如下所示:

<datasource jta="true" jndi-name="java:/somename" pool-name="somename" enabled="true" use-ccm="false">
                <connection-url>jdbc:mysql://${SOMENAME_DB_URL}</connection-url>
                <driver-class>com.mysql.jdbc.Driver</driver-class>
                <driver>mysql</driver>
                <pool>
                    <min-pool-size>5</min-pool-size>
                    <max-pool-size>15</max-pool-size>
                </pool>
                <security>
                    <user-name>${DB_USERNAME}</user-name>
                    <password>${DB_PASSWORD}</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>
Run Code Online (Sandbox Code Playgroud)

但是,在使用此配置文件启动服务器时,它只会为所有此类部分抛出"无法解析表达式"错误.

我已尝试将变量放入使用中/etc/environment,以及在.jbossclirc文件中/bin使用set DB_USERNAME=mydbusername,但无济于事.

正如你所看到的那样,我在黑暗中有点笨拙,因为我还没有找到任何关于如何做到这一点的正确文档.我甚至不确定它是否真的有可能.任何帮助是极大的赞赏.

Har*_*ann 6

您应该使用 Java 系统属性而不是环境变量。

您还可以将这些属性作为-D参数传递给standalone.sh,例如

bin/standalone.sh -DDB_USERNAME=me -DDB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)

或者,您可以在属性文件中定义您的属性,并使用一个-P选项将其传递给启动脚本:

bin/standalone.sh -P database.properties
Run Code Online (Sandbox Code Playgroud)