使用Tomcat作为我的Servlet容器,我如何才能将两个完全相同的war部署到不同的上下文,而仅使用上下文路径作为变量来确定要加载的属性文件?我想在web.xml中执行以下操作:
<context-param>
<param-name>initialization.file</param-name>
<param-value>
WEB-INF/config/context${contextPath}.properties
</param-value>
</context-param>
然后基于此上下文属性加载初始化文件。这可能吗?如果是这样,怎么办?
我正在使用Tomcat 6,Java 6和Servlet API 2.5。
最佳答案
这取决于您尝试配置的内容。 web.xml是静态的,不能分配任何变量。但是您可以在可以分配变量的地方传递变量名。实现ServletContextListner并使用ServletContextEvent:
ServletContext servletContext = servletContextEvent.getServletContext();
String contextPath = servletContext.getContextPath();
比起您可以用路径替换变量名并加载属性文件。当然,您需要将侦听器添加到web.xml中,作为第一个侦听器。
它将在应用程序启动时加载,但是请记住,您无法确定顺序。