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

Използвайки 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