Как интегрировать CMS Магнолия с весны MVC? - PullRequest
3 голосов
/ 24 октября 2011

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

Я много читал на эту тему, но я все еще не понимаюна самом деле не знаю, как должны выглядеть мои web.xml и applicationContext.xml.

Должны ли в моем файле web.xml присутствовать 2 прослушивателя magnolia и прослушиватель spring и два сервлета: один для цветения и один для весны?И как должен выглядеть мой applicationContext?

Не могли бы вы дать мне пример работающей интеграции web.xml и applicationContext.xml?Я смотрел всюду в Интернете, но web.xml нигде.

Большое спасибо:)

Ответы [ 2 ]

5 голосов
/ 25 октября 2011

Для Blossom есть образец , который является полной настройкой веб-приложения.Взгляните на web.xml и applicationContext.xml там.

Образец основан на проекте magnolia-empty-webapp , который предназначен в качестве отправной точки, на которой вы можете построить.

В этом примере вы увидите, что обычного прослушивателя Spring нет в web.xml и что там нет DispatcherServlets.Вместо этого задача запуска пружины выполняется модулем образцов.Модуль также создает BlossomDispatcherServlet, который используется для визуализации шаблонов и абзацев в процессе визуализации.Причина этого в том, что при запуске Magnolia он перейдет в режим установки / обновления и покажет интерфейс установки.На этом этапе вы не хотите, чтобы Spring инициализировался, потому что если у вас есть bean-компоненты, основанные на Magnolia, они не запустятся, когда Magnolia не готова.Поэтому вместо этого Spring запускается модулем.

Однако, если ваши bean-компоненты не будут зависеть от Magnolia, вы можете безопасно добавить слушатель Springs в web.xml и просто запустить BlossomDispatcherServlets из модуля.

Другая вещь, которую, вероятно, полезно знать, это то, что Magnolia выполняет рендеринг с использованием фильтра, и этот фильтр будет обрабатывать все входящие запросы, если они не были исключены.Поэтому, если вы добавите сервлеты в web.xml, вы захотите исключить их URL-шаблоны из фильтра Магнолии.

Еще один вариант, который намного проще, - это добавить ваш сервлет в XML-файл дескриптора модуля.Тогда Магнолия поднимет их и вызовет из фильтра.Документация для дескриптора модуля: здесь .

Итак, в заключение я бы рекомендовал запустить Spring с использованием модуля и добавить сервлеты в дескриптор модуля xml.Конфигурирование вещей в web.xml также является жизнеспособным вариантом, но вы должны принять во внимание, как он взаимодействует с фазой установки / обновления и маршрутизацией запросов.

0 голосов
/ 25 октября 2011

Marius,

Документы для Blossom касаются настройки файла web.xml.

В частности, если вы запускаете Spring в своем собственном модулевам нужно добавить это в ваш файл web.xml перед прослушивателем контекста Magnolia:

<listener>
<listener-class>info.magnolia.module.blossom.support.ServletContextExposingContextListener</listener-class>
</listener>

Кроме того, вам нужно расширить класс модуля для инициализации и уничтожения сервлетов диспетчера Blossom, что-товот так:

public class BlossomSampleModule extends BlossomModuleSupport implements ModuleLifecycle {

public void start(ModuleLifecycleContext moduleLifecycleContext) {
        initRootWebApplicationContext("classpath:/applicationContext.xml");
        initBlossomDispatcherServlet("blossom", "classpath:/blossom-servlet.xml");
    }

public void stop(ModuleLifecycleContext moduleLifecycleContext) {
        destroyDispatcherServlets();
        closeRootWebApplicationContext();
    }
}

Надеюсь, это немного поможет!

Шон

...