2010-11-08 2 views
1

У меня есть сервлет, который входит в состав моего приложения. Я хочу, чтобы настроить Tomcat или Spring для загрузки этого сервлета в boostrap, прежде чем контекст приложения окончательно инициализируется.Запуск сервлета перед загрузкой контекста приложения

Я делаю это, потому что - я использую сервлет, чтобы выполнить начальную проверку окружения и загрузку файла до того, как фактический контекст будет запущен.

Неужели кто-нибудь знает это?

Я добавил определение сервлета как это;

<servlet> 
      <servlet-name>init-class</servlet-name> 
      <servlet-class>package.initClass</servlet-class> 
      <load-on-startup>0</load-on-startup> 
    </servlet> 

Это только активируется после завершения загрузки приложения.

+0

, на который вы ссылаетесь? Другой сервлет? – skaffman

+0

Я имею в виду контекст приложения Spring, который содержит все мои компоненты. – Bitmap

+0

и что вам нужно делать там? А что не уволено - метод init() сервлета ..? – Bozho

ответ

6

Вы должны поместить эту логику инициализации в ServletContextListener вместо сервлета и объявить его в web.xml, как

<listener><listener-class>YourListenerClass</listener-class></listener> 

Кроме того, если ваш контекст весна загруженный ContextLoaderListener, ваш слушатель должен быть объявлен в web.xml перед ним, так как слушатели уволены в порядке объявления.

+0

Работал как шарм! – Bitmap

+0

Есть ли способ запустить код до инициализации контекста? ServletContextListener имеет 2 метода. contextInitialized метод, который запускается после инициализации контекста, и contextDestroyed, который запускается после того, как контекст уничтожен. Я хочу, чтобы метод, который запускался сразу после инициализации параметров контекста и до начала прослушивания Spring. –

Смежные вопросы