2

Guice サーブレットが削除されたら、クリーンアップを行う必要があります。Guice サーブレットを使用しているときに、サーブレットの破壊にフックすることは可能ですか? クリーンアップ作業を行うには、インジェクターを使用する必要があります。

contextDestroyedのメソッドをオーバーライドできますがGuiceServletContextListener、インジェクターにアクセスするにはどうすればよいですか?

サーブレットの破壊に対応するより良い方法はありますか?

4

1 に答える 1

3

GuiceServletContextListener で contextDestroyed メソッドをオーバーライドできますが、インジェクターにアクセスするにはどうすればよいでしょうか?

次のようにできます。

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());      
    }
}
于 2011-11-03T20:23:16.267 に答える