加載它們,建議的方法來配置網絡應用的應用服務器爲每JNDI。
每個應用程序服務器(包括Jetty和Tomcat)都允許您配置JNDI參數。
對於碼頭,你可以添加以下到您的jetty.xml添加JNDI參數param.file
:
<!-- JNDI java:comp/env -->
<New id="param.file" class="org.mortbay.jetty.plus.naming.EnvEntry">
<Arg>param.file</Arg>
<Arg type="java.lang.String"><SystemProperty name="jetty.home" default="."/>etc/config.properties</Arg>
<Arg type="boolean">true</Arg>
</New>
然後在你的servlet可以讀取JNDI參數:
import javax.naming.InitialContext;
import javax.naming.NamingException;
...
public Object readJndi(String paramName) {
Object jndiValue = null;
try {
final InitialContext ic = new InitialContext();
jndiValue = ic.lookup("java:comp/env/" + paramName);
} catch (NamingException e) {
// handle exception
}
return jndiValue;
}
public String getConfigPath() {
return (String) readJndi("param.file");
}
方式爲其他應用程序服務器設置JNDI值不同,但讀取配置的代碼始終相同。
推薦的解決方案是使用JNDI作爲vanje以下回答。考慮到他作爲第二個最好的答案也有雙倍的優惠,請給他他應得的信用,並標記他的答案是正確的。 – HipsterZipster 2011-02-17 15:14:26
@完全:完成。幾個月前,當我發佈這個問題時,情況並不是那麼明顯...... – 2011-02-21 16:19:56