Получить относительный путь к файлу XML из класса не сервлета в WAR - PullRequest
2 голосов
/ 06 августа 2010

У меня есть XML-файл, который мне нужен для чтения и загрузки данных в память при каждом запуске приложения.Итак, пока проект был в Eclipse, я жестко прописал путь: «/ path / to / xml», но когда я создаю WAR, как я могу указать относительный путь к файлу XML.он использует URL url = getServletContext().getResource(fileName);

Но у меня нет доступного мне контекста сервлета, так как это всего лишь класс загрузчика Config.:

Я сделал это, был самый простой подход:

URL urlOfXml =

Thread.currentThread().getContextClassLoader().getResource("ConfigXmlFile.xml");

1 Ответ

2 голосов
/ 06 августа 2010

Реализация ServletContextListener. В методе contextInitialized(), который вызывается при запуске веб-приложения, вы получаете указатель на ServletContextEvent, который, в свою очередь, предлагает вам метод getServletContext() .

public class Config implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        URL url = event.getServletContext().getResource(fileName);
        // ...
    }

    // ...
}

Зарегистрируйте его в web.xml как <listener>.

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>
...