Можно ли при использовании расширения сервлета guice реагировать на разрушение сервлета? - PullRequest
2 голосов
/ 27 октября 2011

Мне нужно сделать некоторую очистку, когда сервлет guice удален.Можно ли подключиться к уничтожению сервлета при использовании сервлета guice?Мне нужно использовать Инжектор для очистки.

Я могу переопределить метод contextDestroyed в GuiceServletContextListener, но как мне получить доступ к инжектору?

Есть лилучший способ реагировать на разрушение сервлета?

1 Ответ

3 голосов
/ 04 ноября 2011

Я могу переопределить метод contextDestroyed в GuiceServletContextListener, но как мне получить доступ к инжектору?

Вы можете сделать это так:

public class MyGuiceServletConfig extends GuiceServletContextListener {
    private final Injector injector = Guice.createInjector(new ServletModule());

    @Override
    protected Injector getInjector() {
        return injector;
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        injector.getInstance(MyCleanUp.class);      
    }
}

Или вот так:

public class MyGuiceServletConfig extends GuiceServletContextListener {

    @Override
    protected Injector getInjector() {
        return Guice.createInjector(new ServletModule());
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        Injector injector = (Injector) sce.getServletContext()
                                          .getAttribute(Injector.class.getName());      
    }
}
...