我有一些应用程序配置根据目标环境(例如配置文件位置)而有所不同。 由于这种配置因主机而异,我不想将它们嵌入到WAR文件中。
根据http://tomcat.apache.org/tomcat-5.5-doc/config/context.html中的“上下文参数”部分,将这样的配置放在Tomcat conf / context.xml文件上似乎是个好主意,如下所示:
<Context ...>
...
<Parameter name="companyName" value="My Company, Incorporated"
override="false"/>
...
</Context>
但问题是如何在我的应用程序中检索它们?
我不使用Servlet类来接收请求(它是一个soap web服务项目)。
我尝试创建一个类似下面的上下文监听器:
public class SystemPropertiesHelper implements
javax.servlet.ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("Started!");
ServletContext context = event.getServletContext();
Enumeration<String> params = context.getInitParameterNames();
while (params.hasMoreElements()) {
String param = (String) params.nextElement();
String value = context.getInitParameter(param);
System.out.println(param + " -> " + value);
}
}
@Override
public void contextDestroyed(ServletContextEvent event) {
}
}
我更改了应用程序web.xml以将此类声明为侦听器。 但是,它无法检索context.xml文件的参数。 另一方面,很好地检索了在web.xml上声明的属性(见下文)。
<context-param>
<param-name>test</param-name>
<param-value>value-test</param-value>
</context-param>
拜托,有谁可以帮我弄清楚如何检索这些参数? 没有JNDI的东西会有可能吗? 或者还有其他更适合放置此类配置的地方吗?
非常感谢你,
Leonardo Leite