configuration - 如何在 Wildfly 的standalone.xml 配置文件中引用环境变量?
问题描述
我在 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&autoReconnect=true&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 中引用环境变量的正确方法是什么?
解决方案
有两种方法可以在 Wildfly 配置中引用环境变量,我认为第二种方法可以解决您的问题。
您可以在启动 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>
另一种方法是使用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>
推荐阅读
- ios - CMMotionManager 中的不规则时间戳
- javascript - 赛普拉斯并不总是执行点击元素
- matlab - 加载 matlab.mixin.Copyable 对象时阻止 Matlab 使用 set 方法?
- reactjs - react-redux:在componentDidMount上并行调用多个api
- shell - twilio API 的 curl 脚本
- php - 无法弄清楚转换字符串
- python - 挥动作为模板函数的类成员函数
- laravel - 声明一个变量用于所有方法 Laravel
- java - Java反向三角串
- material-ui - Tab 键停止在输入字段之间移动