2011-10-27 7 views
2

guiceサーブレットを削除するときにクリーンアップを行う必要があります。 guiceサーブレットを使用しているときにサーブレットが破壊される可能性はありますか?私は、クリーンアップ作業を行うためにインジェクターを使用する必要があります。guiceサーブレット拡張を使用すると、サーブレットの破壊に反応する可能性がありますか?

contextDestroyedメソッドをGuiceServletContextListenerに上書きすることはできますが、インジェクタへのアクセス方法を教えてください。

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

答えて

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());  
    } 
} 
関連する問題