2014-09-10 3 views
0

Я разрабатываю приложение, которое запускается как в Spring Boot (без web.xml), так и в WebSphere (с web.xml). Существует контроллер, которому необходимо ввести DispatcherServlet в него. В то время как он работает в среде Spring Boot, это не работает в WebSphere - никакой бит типа DispatcherServlet не найден.DispatcherServlet не вводится в контроллер

Внутри web.xml я использую родительский контекст (прослушиватель контекстного загрузчика) со средним уровнем и несколькими диспетчерами, имеющими свои отдельные контексты. Один из них содержит такой контроллер (среди прочих).

Почему это не работает? Мое первое предположение заключается в том, что Spring Boot сначала создает и регистрирует DispatcherServlet, а затем сканирует контроллеры, а при работе с web.xml происходит в обратном порядке, поэтому контроллеры создаются, прежде чем DispatcherServlet будет доступен из контекста.

Как я могу решить эту проблему?

+0

Прошу просить, но зачем вам вводить DispatcherServlet в контроллер? – geoand

+0

Для пакетной обработки. – kboom

+0

Можете ли вы немного рассказать об этом? – geoand

ответ

0

Вы не можете вводить DispatcherServlet напрямую, потому что он не зарегистрирован в Spring Context (например, XmlWebApplicationContext). Но вы можете расширить DispatcherServlet, сохранить ссылку на себя в статическом поле (в вызове constuctor). И вы эту ссылку в любом месте вашего кода.

Другой способ - если вы создадите DispatcherServlet «вручную» - вы можете зарегистрировать свой DispatcherServlet как bean-компонент в application-context.xml.

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