Ric*_*rri 14 java servlets properties servletconfig
我正在编写一个Java servlet,需要读取一些特定于站点的配置数据; 我希望系统管理员在部署时可以轻松访问/修改它.没有合理的默认值,因此数据必须由站点管理员提供.
它由几个字符串键/值对组成(想想属性).它只会被读取一次(在初始化时).
我知道这个SO问题
和ServletContext.getInitParameter()机制,但就我的理解而言,它们需要将数据捆绑在servlet包中(作为属性文件,或在web.xml其中指定
),这使得升级不方便servlet代码.
servlet是否有任何"标准"接口来获取这种键/值配置数据?如果编程接口在任何地方都相同,那就没问题,但设置配置数据的实际方式取决于所使用的实际servlet容器.
我最喜欢便携式解决方案,但我会满足于仅适用于Tomcat和Jetty的东西.
van*_*nje 18
为Web应用程序配置应用程序服务器的推荐方法是根据JNDI.
每个应用程序服务器(包括Jetty和Tomcat)都允许您配置JNDI参数.
对于Jetty,您可以将以下内容添加到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>
Run Code Online (Sandbox Code Playgroud)
然后在您的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");
}
Run Code Online (Sandbox Code Playgroud)
设置JNDI值的方法因其他应用程序服务器而异,但读取配置的代码始终相同.
| 归档时间: |
|
| 查看次数: |
14288 次 |
| 最近记录: |