Как сделать 2 applicationContexts, созданные в приложении Spring-MVC, дочерними для глобального applicationContext - PullRequest
2 голосов
/ 09 ноября 2010

У меня есть 3 контекста приложения:

  • Глобальный контекст, который отвечает за запуск контейнера сервлета Jetty, запускаемый из main ()
  • Родитель applicationContext для каждого веб-приложения в jetty (запущенный SpringSecurity
  • n контекстов xyz-servlet для каждого веб-приложения (я запускаю 1 веб-приложение)

Spring удалось создать отношения родитель-потомок для последних двух контекстов.

Теперь я хотел бы добавить простой сервис глобальных свойств в первый контекст и сделать его видимым для других (я мог бы добавить его в applicationContext, но позже я могу использовать его в другом месте вне контекста веб-приложения и планировать это).

Так как я не справился с созданием двух других контекстов (они были созданы сервлетом-диспетчером и Spring Security, которые были запущены из web.xml), я не понимаю, как и где я должен получить к ним доступдля определения первого как родителя (ну, только applicationContext должен принимать глобальный контекст в качестве родителя).

1 Ответ

1 голос
/ 10 ноября 2010

Родительско-дочерние отношения между (1) и (2) могут управляться с помощью ContextLoaderListener, который имеется в вашем web.xml.

В частности, посмотрите на javadocдля ContextLoader.loadParentContext().Это документирует, как ContextLoaderListener может найти контекст (1).Предполагается, что этот глобальный контекст был инициализирован через ContextSingletonBeanFactoryLocator, который вы могли или не могли использовать для создания этого контекста.

Если вы действительно использовали ContextSingletonBeanFactoryLocator, то это должно бытьтривиально, просто следуйте инструкциям в Javadoc.если вы использовали какой-то другой способ начальной загрузки глобального контекста, то вы можете создать подкласс ContextLoaderListener, переопределить метод loadParentContext(), чтобы найти свой глобальный контекст, а затем использовать его в web.xml вместо стандартного ContextLoaderListener.

...