我正在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/

10-11 20:14