Frage

Ich bin mit einer Stripes Web-App auf Jboss 4.2.3.GA und ich versuche, eine Methode aufrufen, wenn ich JBoss starten. Ich habe einen ServletContextListener etwa so:

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) {

    }
}

und fügte ich einen Eintrag in web.xml wie folgt:

<listener>
        <listener-class>com.lawless.web.servletContextListeners.TimerContextListener</listener-class>
    </listener>

aber contextInitialized () wird immer 3 mal aufgerufen, wenn ich meine Server zu starten. Jede Idee, was das Problem sein könnte? Danke.

War es hilfreich?

Lösung

Ok ich es herausgefunden. Es wurde 3 mal aufgerufen wird, weil ich drei virtuelle Hosts in meinem Jboss-web.xml definiert hatte. wenn auch nicht sicher, warum es dieses Verhalten verursacht. Wenn jemand den Grund erklären kann, würde ich es zu schätzen wissen.

Andere Tipps

Es wird nur ein ServletContext für jede Web-Anwendung sein. ServletContext wird erstellt, wenn die Anwendung den Einsatz (3 Virtual Hosts Mittel mit 3 verschiedenen IP-Adressen zu 3 verschiedenen Hosts bereitstellen). Sobald die ServletContext erstellt wird, wird es von allen Servlets und JSP-Dateien in der gleichen Anwendung verwendet. ServletContext wird auch als der Anwendungsbereich Variablen in der Web-Anwendung Szenario genannt.

Quelle - http://www.javabeat.net/2009/02/servletcontextlistener -Beispiel /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top