2

使用 Tomcat 作为我的 Servlet 容器,我如何将两个相同的战争部署到不同的上下文,并简单地使用上下文路径作为变量来确定要加载哪个属性文件?我希望在 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。

4

1 回答 1

1

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

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

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

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

于 2014-06-30T18:38:42.183 回答