ContextInitialized()が複数回呼び出されるのはなぜですか?
質問
JBoss 4.2.3.gaでStripes Webアプリを実行しており、JBossを開始するときにメソッドを呼び出そうとしています。 SORBLETCONTEXTLISTENERを作成しました。
public class TimerContextListener implements ServletContextListener {
@Inject
private TimerManager timerManager;
public void contextInitialized(ServletContextEvent servletcontextevent) {
((Injector) servletcontextevent.getServletContext().getAttribute(GuiceServletContextListener.KEY)).injectMembers(this);
timerManager.stopAllTimers();
timerManager.startTimer();
}
public void contextDestroyed(ServletContextEvent servletcontextevent) {
}
}
そして、私はweb.xmlのようなエントリを追加しました:
<listener>
<listener-class>com.lawless.web.servletContextListeners.TimerContextListener</listener-class>
</listener>
しかし、ContextInitialized()は、サーバーを起動するときに3回呼び出されています。問題が何であるかという考えはありますか?ありがとう。
解決
わかりました、私はそれを理解しました。 JBoss-web.xmlで3つの仮想ホストが定義されているため、3回呼ばれていました。それがなぜその動作を引き起こすのかわからない。誰かが理由を説明できるなら、私はそれを感謝します。
他のヒント
1つだけがあります ServletContext
各Webアプリケーション用。 ServletContext
アプリケーションの展開中に作成されます(3つの仮想ホストは、3つの異なるIPアドレスを持つ3つの異なるホストに展開することを意味します)。一度 ServletContext
作成され、同じアプリケーションのすべてのサーブレットとJSPファイルによって使用されます。 ServletContext
Webアプリケーションシナリオのアプリケーションスコープ変数とも呼ばれます。
ソース - http://www.javabeat.net/2009/02/servletcontextlistener-example/
所属していません StackOverflow