Как я могу использовать подстановку переменных в Tomcat web.xml для контекстного пути

Используя Tomcat в качестве моего контейнера сервлетов, как я могу развернуть две идентичные войны в разных контекстах и ​​просто использовать контекстный путь в качестве переменной, которая будет определять, какой файл свойств загружать? Я хочу сделать что-то подобное в 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.


person noisebelt    schedule 30.06.2014    source источник


Ответы (1)


Это зависит от того, что вы пытаетесь настроить. Web.xml является статическим, никакие переменные не могут быть назначены. Но вы можете передать имя переменной, где оно может быть назначено. Реализуйте ServletContextListner и используйте ServletContextEvent:

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

Затем вы можете заменить имя переменной на путь и загрузить файл свойств. Конечно, вам нужно добавить прослушиватель в web.xml, как самый первый слушатель.

Он будет загружаться при запуске приложения, но имейте в виду, что вы не можете быть уверены, в каком порядке.

person Stefan    schedule 30.06.2014