Pourquoi contextInitialized () appelé plusieurs fois?
Question
Je suis en cours d'exécution d'une application Web Stripes sur Jboss 4.2.3.GA et essaie d'appeler une méthode quand je commence à JBoss. J'ai créé un ServletContextListener comme ceci:
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) {
}
}
et j'ajouté une entrée dans web.xml comme ceci:
<listener>
<listener-class>com.lawless.web.servletContextListeners.TimerContextListener</listener-class>
</listener>
mais contextInitialized () devient appelé 3 fois quand je commence mon serveur. Toute idée de ce que la question pourrait être? Merci.
La solution
Ok je compris. Il était appelé 3 fois parce que j'avais 3 hôtes virtuels définis dans mon jboss-web.xml. Je ne sais pas pourquoi il provoque ce comportement bien. Si quelqu'un peut expliquer la raison pour laquelle je vous serais reconnaissant.
Autres conseils
Il y aura une seule ServletContext
pour chaque application Web. ServletContext
sera créé lors du déploiement de l'application (3 hôtes virtuels moyens de déployer 3 hôtes différents avec 3 adresses IP différentes). Une fois que le ServletContext
est créé, il sera utilisé par tous les servlets et des fichiers JSP dans la même application. ServletContext
est aussi appelé les variables de champ d'application dans le scénario d'application Web.
Source - http://www.javabeat.net/2009/02/servletcontextlistener -example /