質問

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/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top