2010-04-28 2 views
0

Я хочу, чтобы иметь возможность загружать свою конфигурацию веб-приложение при запуске котом (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; 
    } 
} 

веб. XML

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

, а затем Acces их в веб-приложение с помощью

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

ответ

1

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

Вам нужно получить КТГ сервлет инициализации, как это,

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