Чтение переменной по имени из server.xml - PullRequest
1 голос
/ 21 марта 2019
<?xml version="1.0" encoding="UTF-8"?>
<server>

  <variable 
    name="temp" 
    value="Something" />
</server>

Как программно прочитать temp из файла xml из веб-приложения на основе Java?

Пытался:

String temp = System.getenv("temp");

1 Ответ

3 голосов
/ 21 марта 2019

Есть несколько вариантов, которые вы должны сделать:

1. Использование MicroProfile Config

В server.xml:

<featureManager>
  <feature>mpConfig-1.3</feature>
  ....
</featureManager>

<variable  name="temp"  value="Something" />

Затем введите в любой компонент CDI:

@Inject
@ConfigProperty(name = "temp")
String temp;

2. Сохраните переменную в JNDI с помощью <jndiEntry>

В server.xml:

<featureManager>
  <feature>jndi-1.0</feature>
  ....
</featureManager>

<jndiEntry jndiName="config/foo" value="whatever"/>
<jndiEntry jndiName="config/bar" value="${temp}"/>
<jndiEntry jndiName="config/configDir" value="${server.config.dir}"/>

С внедрением ресурса в сервлет или EJB (или другой управляемый класс):

@Resource(lookup = "config/foo")
String foo;

Или программный поиск JNDI:

String configDir = InitialContext.doLookup("config/configDir");

3. Использование переменных среды:

Этот подход требует, чтобы вы устанавливали переменные среды в ${server.config.dir}/server.env или в среде процесса, который запускает сервер Liberty. Все здесь будет в конечном итоге в env.

сервера JVM
temp=Something
foo=bar

Затем получите env var в приложении:

String temp = System.getenv("temp");
...