我有一个Web应用程序,需要能够在运行时从JNDI中读取N个键(字符串):
Context ctx = new InitialContext();
String[] values = (String[])ctx.lookup("KEYS");
for(String value : values) {
// Do something with the key's value...
}
这将在Tomcat上运行,因此我需要能够将这些键作为Context/Parameter
元素存储在context.xml
内,如下所示:
<Context>
<Parameter name="key1" value="value1" override="false" />
<Parameter name="key2" value="value2" override="false" />
<Parameter name="key3" value="value3" override="false" />
...etc.
</Context>
问题是,我将此应用程序部署到(DEV,QA,DEMO,LIVE等)的每个环境都有不同数量的密钥。例如,DEV可能只有1个密钥(即只有1 Context/Parameter
个元素)。 LIVE可能有20个。
我如何在Java代码中适应这一点?代码不能跨环境改变,所以我需要一种方法来通过JNDI加载任意数量的密钥,使用相同的Java代码,Context/Parameters
内的context.xml
不同。有任何想法吗?提前谢谢!
答案 0 :(得分:0)
Context ctx = new InitialContext();
Enumeration e = ctx.getInitParameterNames();
while (e.hasMoreElements()) {
String key = (String)e.nextElement();
String value = getInitParameter(key);
out.println(" " + key + " = " + value);
}