从server.xml中按名称读取变量

时间:2019-03-21 17:19:20

标签: java xml web-applications websphere-liberty

<?xml version="1.0" encoding="UTF-8"?>
<server>

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

如何从基于Java的Web应用程序中以编程方式从xml文件中读取temp

正在尝试:

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

1 个答案:

答案 0 :(得分:3)

您必须执行以下一些操作:

1。使用MicroProfile Config

server.xml中:

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

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

然后注入到任何CDI bean中:

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

2。使用<jndiEntry>

将变量存储在JNDI中

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}"/>

在servlet或EJB(或其他托管类)中注入资源:

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

或通过编程方式的JNDI查找:

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

3。使用环境变量:

此方法要求您在${server.config.dir}/server.env或启动Liberty服务器的进程环境中设置环境变量。此处的所有内容都将最终存储在服务器JVM的环境中。

temp=Something
foo=bar

然后在应用程序中以env var的形式获取:

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