【问题标题】:How do I reference environment variables in Wildfly's standalone.xml config file?如何在 Wildfly 的standalone.xml 配置文件中引用环境变量?
【发布时间】:2018-12-03 22:15:33
【问题描述】:

我在 Mac OS X 上使用 Wildfly 11。在我的 ~/.profile 文件中,我定义了几个环境变量,我可以在我的控制台上看到它们......

localhost:bin davea$ echo $DB_USERNAME
user1
localhost:bin davea$ echo $DB_PASSWORD
pwd1

在我的 $WILDFLY_HOME/standalone/configuration/standalone.xml 文件中,我尝试引用这些变量...

            <datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:mysql://localhost:3306/my_db?serverTimezone=CST&amp;autoReconnect=true&amp;useSSL=false</connection-url>
                <driver>mysql</driver>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                    <prefill>true</prefill>
                </pool>
                <security>
                    <user-name>${env.DB_USERNAME}</user-name>
                    <password>${env.DB_PASSWORD}</password>
                </security>

但是当我启动我的 Wildfly 实例时,我得到了这个错误......

14:35:16,817 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 55) WFLYUT0014: Creating file handler for path '/opt/wildfly-10.0.0.CR2/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
14:35:16,846 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 33) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("data-source" => "MySqlDS")
]) - failure description: "WFLYCTL0211: Cannot resolve expression '${env.DB_USERNAME}'"
14:35:16,855 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-5) WFLYUT0012: Started server default-server.

在 Wildfly 中引用环境变量的正确方法是什么?

【问题讨论】:

    标签: configuration jboss environment-variables wildfly


    【解决方案1】:

    有两种方法可以在 Wildfly 配置中引用环境变量,我认为第二种方法可以解决您的问题。

    1. 您可以在启动wildfly服务器时导出变量并在命令行中传递它。

      $ export LOGPATH=/home/jboss/log 
      $ ./standalone.sh -DlogPath=LOGPATH
       <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
             <param name="File" value="${logPath}/server.log"/>
                 . . . .  
       </appender>
      
    2. 另一种方法是使用 env. 前缀直接访问它们。

      <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
           <param name="File" value="${env.LOGPATH}/server.log"/>
               . . . .  
       </appender>
      

      请注意,您需要编辑以下文件“$WILDFLY_HOME/bin/jboss-cli.xml”,并且需要将以下属性设置为“true”(默认为 false)

       <!-- whether to resolve system properties specified as command argument or operation parameter values  
            in the CLI VM before sending the operation requests to the controller -->  
       <resolve-parameter-values>true</resolve-parameter-values> 
      

    尝试将这些属性添加到您的standalone.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>
    

    【讨论】:

    • 我注意到“”设置为 false,所以我将其设置为“true”,但是当我重新启动服务器时,我收到一条消息,“故障描述:” WFLYCTL0211:尽管我可以在我的 shell 上回显 $DB_USERNAME,但无法解析表达式 '${env.DB_USERNAME}'"'。
    • 将 resolve-parameter-values 设置为 true 应该可以解决您的问题。能否请您粘贴完整的日志。
    • 另外,您应该将您的问题发布到developer.jboss.org。该论坛专门针对 JBoss 和 WildFly 问题。
    • 嗨@AtulK,我从日志中添加了完整的错误消息,但那里真的不多。如果我需要启用其他调试设置以获取更多信息,我很乐意这样做。
    • @Dave:将替换属性设置为 true(在答案中添加),看看它是否有效。
    【解决方案2】:

    以下在 Fedora 上对我有用:

    在 ~/.bashrc 中添加 export DB_USERNAME=user1

    另一种方法是在启动 wildfly 时指定一个属性文件。

    ./standalone.sh --properties=mypropertiesfile.properties

    但是你必须从standalone.xml中删除env:${DB_USERNAME}

    【讨论】:

    • 使用您的第一个选项“export DB_USERNAME=user1”,您的standalone.xml 文件中对应的条目是什么样的?
    • 喜欢你的:&lt;user-name&gt;${env.DB_USERNAME}&lt;/user-name&gt;
    • 好的,谢谢。我想弄清楚为什么我的配置不起作用,然后我会继续你关于属性文件的其他想法。
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 2014-08-05
    • 1970-01-01
    • 2022-07-20
    • 2019-11-08
    • 1970-01-01
    • 2022-12-21
    • 2016-07-31
    相关资源
    最近更新 更多