2016-06-01 3 views
1

В моем приложении на основе сервлета я хотел бы регистрировать события для запуска и выключения.Запись из контекста разрушенного сервлета

Я пытался реализовать интерфейс ServletContextListener, чтобы сделать это:

public class DiagnosticListener 
    implements ServletContextListener { 

    private static final Logger LOG = LogManager.getLogger(DiagnosticListener.class); 

    @Override 
    public void contextInitialized(final ServletContextEvent sce) { 
     LOG.info("Context initialized."); 
    } 

    @Override 
    public void contextDestroyed(final ServletContextEvent sce) { 
     LOG.info("Context destroyed."); 
    } 
} 

инициализированную событие регистрируется, как и ожидалось, но никогда не появляется разрушенная событие. Я предполагаю, что это связано с тем, как log4j2 управляет своим жизненным циклом с помощью аналогичного прослушивателя, что инфраструктура регистрации больше не доступна во время этого события.

Есть ли способ зарегистрировать событие для закрытия приложения?

ответ

0

Если вы настроили ServletContextListener Log4j перед вашим в web.xml, тогда Log4j должен быть инициализирован перед вашим ServletContextListener и быть выключен после вашего.

+0

Я бегу в контейнере Servlet 3.0 и не выполнял никакой ручной настройки компонентов сервлета Log4j. –

Смежные вопросы