Как загрузить файл конфигурации при запуске в tomcat - PullRequest
0 голосов
/ 28 апреля 2010

Я хочу иметь возможность загружать свою конфигурацию для веб-приложения при запуске tomcat (библиотеки конфигурации apache commons), это возможно:

public class MyAppCfg implements javax.servlet.ServletContextListener {

private ServletContext context = null;

@Override
public void contextInitialized(ServletContextEvent event) {
    try{
        this.context = event.getServletContext();

        XMLConfiguration config = new XMLConfiguration("cfg.xml");
        config.setReloadingStrategy(new FileChangedReloadingStrategy());

        this.context.setAttribute("mycfg", config);
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void contextDestroyed(ServletContextEvent arg0) {
    this.context = null;
   }
}

web.xml

<listener>
    <listener-class>mypackage.MyAppCfg</listener-class>    
</listener>

и позже доступ к ним в веб-приложении через

this.cfg = (XMLConfiguration) servletRequest.getAttribute("mycfg");

1 Ответ

1 голос
/ 01 мая 2010

Нет. Вы не сможете получить конфигурацию таким образом. Вы устанавливаете его в контексте сервлета, но получаете его в контексте запроса.

Вам нужно получить cfg в вашей инициализации сервлета следующим образом:

public void init(final ServletConfig config) {
        // log it to the ServletContext
        ServletContext context = config.getServletContext();
        this.cfg = (Configuration)context.getAttribute("mycfg");
}
...