¿Por qué se contextInitialized () se llama varias veces?
Pregunta
Me estoy quedando una aplicación web bandas en Jboss 4.2.3.GA y estoy tratando de llamar a un método cuando comienzo JBoss. He creado un ServletContextListener este 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) {
}
}
y añade una entrada en web.xml así:
<listener>
<listener-class>com.lawless.web.servletContextListeners.TimerContextListener</listener-class>
</listener>
pero contextInitialized () está consiguiendo llama 3 veces cuando se inicia mi servidor. Cualquier idea de lo que podría ser el problema? Gracias.
Solución
Ok lo he descubierto. Que estaba siendo llamado 3 veces porque tenía 3 hosts virtuales definidas en mi jboss-web.xml. No sé por qué causa que el comportamiento sin embargo. Si alguien puede explicar la razón por la que apreciaría.
Otros consejos
No será sólo un ServletContext
para cada aplicación web. ServletContext
será creado durante la implementación de la aplicación (3 anfitriones de medios virtuales desplegar a 3 anfitriones diferentes con 3 direcciones IP diferentes). Una vez creada la ServletContext
, que será utilizado por todos los servlets y archivos JSP en la misma aplicación. ServletContext
también se llama como las variables de ámbito de aplicación en el escenario de aplicación web.
Fuente - http://www.javabeat.net/2009/02/servletcontextlistener -Ejemplo /