Порядок выполнения ServletContextListener для разных войн

Можно ли контролировать порядок выполнения ServletContextListener в разных войнах?

Предположим, что в веб-сервисе есть 3 отдельных независимых модуля A, B и C. Их можно инициализировать в любом порядке, и никаких последствий. Однако, если присутствует дополнительный модуль D, его необходимо сначала инициализировать, и он может повлиять на другие модули. Возможна ли эта конфигурация через Spring? Единственное, что приходит на ум, — это глобальный ServletContextListener, который опрашивает, существует ли класс инициализации для каждого модуля в пути к классу, но это решение кажется довольно запутанным.


person aiguy    schedule 06.01.2016    source источник


Ответы (2)


Управление запуском приложений может осуществляться, когда все они WAR объединены в EAR. Это можно сделать, добавив <initialize-in-order>true</initialize-in-order> в application.xmkl.

Если все WAR независимы, то стандартного способа сделать это не существует. Но есть специальные функции контейнера, которые позволяют вам это сделать.

Ссылки:

Если вы хотите определить зависимость между сервлетами приложения. Вы можете определить Absolute ordering in web.xml или relative ordering in web-fragment.xml.

Вот как работает абсолютный порядок:

<web-app>
...
    <absolute-ordering>
      <name>A</name>
      <others/>
      <name>B</name>
    <absolute-ordering>
</web-app> 

Если в файле web.xml нет абсолютного порядка, контейнер будет искать относительный порядок в файле web-fragment.xml. Это выглядит примерно так:

<ordering>
    <before>
    <others />
    </before>
</ordering>
person Ramesh PVK    schedule 07.01.2016
comment
У меня не было времени исследовать это дальше, но я думаю, что web-fragment.xml требует, чтобы все модули были добавлены в какую-то супервойну. Пожалуйста, поправьте меня, если я ошибаюсь. Чего я пытаюсь добиться, так это развертывания 4 отдельных войн, которые явно не знают друг о друге. - person aiguy; 08.01.2016

Вы можете определить порядок в web-fragment.xml или web.xml. обратитесь к ссылке ниже, чтобы понять больше. https://blogs.oracle.com/swchan/entry/servlet_3_0_web_fragment

person pankaj    schedule 06.01.2016