我正在Jboss 4.2.3.GA上运行Stripes Web应用程序,并在我启动JBoss时尝试调用一个方法。我创建了一个ServletContextListener,如下所示:
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次。知道可能是什么问题吗?谢谢。
最佳答案
好吧,我想通了。之所以被调用3次是因为我在jboss-web.xml中定义了3个虚拟主机。虽然不确定为什么会导致该行为。如果有人能解释原因,我将不胜感激。
关于java - 为什么多次调用contextInitialized()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3543214/