如何在Tomcat的web.xml中使用变量替换作为上下文路径

时间:2014-06-30 18:02:30

标签: xml tomcat tomcat6 contextpath servlet-2.5

使用Tomcat作为我的Servlet容器,如何将两个相同的战争部署到不同的上下文,并简单地使用上下文路径作为变量来确定要加载哪些属性文件?我想在web.xml中做这样的事情:

    <context-param>
        <param-name>initialization.file</param-name>
        <param-value>
            WEB-INF/config/context${contextPath}.properties
        </param-value>
    </context-param>

然后根据此context属性加载初始化文件。这可能吗?如果是这样,怎么样?

我正在使用Tomcat 6,Java 6和Servlet API 2.5。

1 个答案:

答案 0 :(得分:1)

这取决于您尝试配置的内容。 web.xml是静态的,不能分配任何变量。但是您可以传递可以分配的变量名称。实现ServletContextListner并使用ServletContextEvent:

ServletContext servletContext = servletContextEvent.getServletContext();
String contextPath = servletContext.getContextPath();

您可以使用路径替换变量名称并加载属性文件。当然,您需要将侦听器添加到web.xml,作为第一个侦听器。

它将在应用程序启动时加载,但请记住,您无法确定以何种顺序。