Как ссылаться на переменные окружения в конфигурационном файле Standalone.xml Wildfly? - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Wildfly 11 в Mac OS X. В моем файле ~ / .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?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Существует два способа обращения к переменным среды в вашей конфигурации 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>
0 голосов
/ 04 декабря 2018

Для меня в Fedora сработало следующее:

В ~ / .bashrc добавлена ​​строка с export DB_USERNAME=user1

Альтернативой может быть указание файла свойств при запуске wildfly.

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

Но тогда вам нужно удалить env из standalone.xml: $ {DB_USERNAME}

...