динамическое конфигурирование источника данных dev и prod для динамической загрузки в зависимости от среды - PullRequest
0 голосов
/ 17 ноября 2018

Я запускаю пакет Java (jsr352), используя сервер Liberty. Источник данных настроен в файле server.xml. Я хотел бы загрузить server.xml в зависимости от региона (например, dev, sit, prod). Как передать аргументы для запуска сервера Liberty и динамической загрузки источника данных Там может быть возможность с файлом server.env и bootstrap.properties. так как новичок в этом .. может кто-нибудь помочь в этом.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Если у вас есть различия в конфигурации, которые выходят за пределы значений атрибутов, переменных может быть недостаточно. Например, предположим, что вы используете базу данных в памяти в dev (например, встроенный Derby) и более надежную базу данных в рабочей среде (например, DB2).

В ваш основной server.xml вы можете включить другой файл config xml, используя переменную, подобную этой:

<server>
  <include location="dbconfig-${env.ENV_LOCATION}.xml"/>

  <!-- rest of common config here -->
</server>

Тогда вы можете иметь конфигурацию только для разработчиков в dbconfig-dev.xml, например:

<server>
  <dataSource id="db" jndiName="jdbc/db">
    <jdbcDriver libraryRef="DerbyLib"/>
    <properties.derby.embedded databaseName="memory:testdb" createDatabase="create"/>
  </dataSource>
  <library id="DerbyLib">
    <fileset dir="/path/to/derby.jar"/>
  </library>
</server>

И конфигурация только для производства в dbconfig-prod.xml, например:

<server>
  <dataSource id="db" jndiName="jdbc/db">
    <jdbcDriver libraryRef="DB2JCCLib"/>
    <properties.db2.jcc databaseName="PRODUCTION_DB" 
                        serverName="serious.business.com" 
                        portNumber="50000"/>
  </dataSource>
  <library id="DB2JCCLib">
    <fileset dir="/path/to/db2.jar"/>
  </library>
</server>

Затем, в зависимости от того, какое значение установлено для ENV_LOCATION, либо dbconfig-dev.xml, либо dbconfig-prod.xml будут включены в основной файл server.xml.

0 голосов
/ 17 ноября 2018

Простой способ сделать это - использовать переменные в вашем server.xml следующим образом:

<dataSource jndiName="jdbc/db2">
    <jdbcDriver libraryRef="DB2JCCLib"/>
    <properties.db2.jcc databaseName="${evn.db2_name}" 
                        serverName="${env.db2_server}" 
                        portNumber="${env.db2_port}"/>
</dataSource>

Затем вы можете установить переменные в вашем server.env следующим образом:

db2_name=mydb
db2_server=whatever.com
db2_port=50000

В качестве альтернативы, если вы используете какие-либо сценарии для запуска серверов Liberty, вы можете экспортировать их в среду bash следующим образом:

$ export db2_name=mydb
$ etc...
$ wlp/bin/server start myServer
...