如何使用JNDI处理可变数量的上下文参数

时间:2013-08-23 15:11:49

标签: java string tomcat jndi context.xml

我有一个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不同。有任何想法吗?提前谢谢!

1 个答案:

答案 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);  
}