2010-07-20 2 views
0

Нам нужно загрузить контекст весеннего приложения в нашем веб-приложении после, один из наших сервлетов инициализирован, поэтому я задаюсь вопросом, как лучше всего это сделать?Загрузка весеннего контекста в веб-приложении после некоторого сервлета

Я знаю, что рекомендуется использовать прослушиватель в web.xml, но это явно не хорошо для нас, потому что в этом случае контекст будет загружен до первого сервлета. Я видел, что этот класс - ContextLoaderServet - весной 2.5, но отсутствует в Spring 3.0. Поэтому я думаю, что мы должны написать какой-то фиктивный сервлет с единственной целью загрузки контекста? Есть ли лучший способ?

Спасибо.

+0

'ContextLoaderSerlvet' просто передал' ContextLoaderListener' в любом случае. Зачем вам это нужно? Если бы вы объяснили причины, возможно, мы могли бы предложить альтернативу. – skaffman

+0

Причины: один из устаревших сервлетов выполняет некоторую процедуру инициализации, создавая и настраивая некоторые структуры данных, которые мы хотим использовать на верхнем уровне, использующем Spring. Таким образом, весенний контекст должен быть загружен позже, поэтому он может ссылаться на эти структуры в его инициализации бобами. – Stas

ответ

0

OK, поэтому, если у вас есть этот устаревший сервлет, который устанавливает содержимое, вам нужно будет убедить сервлета Spring загрузить его после этого.

Это просто - используйте Spring DispatcherServlet для загрузки контекста Spring и используйте стандартный <load-on-startup> в web.xml, чтобы указать порядок запуска, например.

<servlet> 
    <servlet-name>LegacyServlet</servlet-name> 
    <servlet-class>com.xy.LegacyServlet</servlet-class> 
    <load-on-startup>0</load-on-startup> 
</servlet> 


<servlet> 
    <servlet-name>SpringServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
Смежные вопросы