Domanda

Io corro una web app Stripes su Jboss 4.2.3.GA e sto cercando di chiamare un metodo quando inizio JBoss. Ho creato un ServletContextListener in questo modo:

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

    }
}

e ho aggiunto una voce nel web.xml in questo modo:

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

ma contextInitialized () viene sempre chiamato 3 volte quando inizio il mio server. Qualche idea di cosa il problema potrebbe essere? Grazie.

È stato utile?

Soluzione

Ok ho capito. E 'stato di essere chiamato 3 volte perché ho avuto 3 host virtuali definiti nel mio jboss-web.xml. Non certo perché esso provoca che il comportamento però. Se qualcuno può spiegare il motivo sarei grato.

Altri suggerimenti

Non ci sarà solo uno ServletContext per ogni applicazione web. ServletContext verrà creato durante la distribuzione dell'applicazione (3 host virtuali mezzo la distribuzione a 3 diversi host con 3 diversi indirizzi IP). Una volta creato il ServletContext, sarà utilizzato da tutti i servlet e file JSP nella stessa applicazione. ServletContext è anche chiamato come le variabili portata di applicazione nello scenario applicazione web.

Fonte - http://www.javabeat.net/2009/02/servletcontextlistener -example /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top