Почему контекстецинициализирован () называется несколько раз?

StackOverflow https://stackoverflow.com/questions/3543214

  •  30-09-2019
  •  | 
  •  

Вопрос

Я запускаю полосы веб-приложения на JBOSS 4.2.3.ga и пытаюсь вызвать метод, когда я начну jboss. Я создал сервлетконтестенсистенер, как так:

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>

Но контективное () вызывается 3 раза, когда я запускаю свой сервер. Есть идеи, что может быть проблема? Спасибо.

Это было полезно?

Решение

Хорошо, я понял это. Он назывался 3 раза, потому что у меня было 3 виртуальных хоста, определенные в моем jboss-web.xml. Не уверен, почему это вызывает это поведение, хотя. Если кто-то может объяснить причину, что я буду признателен за это.

Другие советы

Там будет только один ServletContext Для каждого веб-приложения. ServletContext Будет создан при развертывании приложения (3 виртуальных хоста означает развертывание до 3 разных хостов с 3 разными IP-адресами). Однажды ServletContext Создан, он будет использоваться всеми файлами сервлетов и JSP в одном и том же приложении. ServletContext Также называется переменными приложения в сценарии веб-приложений.

Источник - http://www.javabeat.net/2009/02/servletcontextListener-example/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top