Порядок развертывания файла WAR, указанный с помощью дескриптора развертывания

Я использую XML-файл дескриптора развертывания для развертывания файла WAR, например sample.war. Я также развернул файл WAR sin webapps. Всегда ли 'sample.war' развертывается перед другими WAR в веб-приложениях?


person Malini Kennady    schedule 21.08.2017    source источник


Ответы (1)


Порядок развертывания зависит от файловой системы.

В спецификации сервлета нет положений, определяющих порядок загрузки веб-приложений. Иметь прямую зависимость друг от друга веб-приложений крайне не рекомендуется.

Общие классы или функциональные возможности обычно разделяются через загрузчик классов сервера и JNDI.

person Joakim Erdfelt    schedule 21.08.2017
comment
Спасибо. В моем приложении я использую файл jar для общих функций как синглтон. Этот jar должен быть вызван только одной War, скажем sample.War, хотя экземпляр jar присутствует во всех файлах war. Следовательно, 'sample.war' должен быть запущен перед любыми другими файлами war. Поскольку в Jetty каждое веб-приложение имеет собственный загрузчик классов, как можно использовать загрузчик классов сервера? Заранее спасибо :-) - person Malini Kennady; 21.08.2017
comment
каждое веб-приложение имеет свой собственный загрузчик классов - это поведение по умолчанию для всех контейнеров спецификации сервлетов (jetty, tomcat, jboss, weblogic и т. д.). Эта концепция / поведение предписывается спецификацией. - person Joakim Erdfelt; 21.08.2017
comment
Спасибо. Мне нужно, чтобы у меня были некоторые общие функции, которые нужно использовать во всех войнах. В настоящее время я определяю это как обычную банку и обращаюсь к ней с помощью файла манифеста. Какой метод предпочтительнее? Common jar или загрузчик классов сервера? Я использую сервер Jetty. Есть ли способ сделать этот сервер независимым, хотя предполагается, что это причал. заранее спасибо - person Malini Kennady; 21.08.2017
comment
Общие классы или функции обычно совместно используются через загрузчик классов сервера и JNDI. Можно ли создать загрузчик классов для файла WAR вместо одного файла .class? - person Malini Kennady; 22.08.2017
comment
Пользовательский загрузчик классов для файлов WAR не поддерживается. Вы не думали полностью использовать WAR? Вы можете использовать встроенную причалку без файлов войны и настроить сервер странным образом, который вы пытаетесь сделать. В противном случае, если файлы WAR являются обязательными, вы должны полностью отказаться от доступа к общему объекту через ссылки java и обращаться к нему через сетевое соединение, такое как HTTP, или WebSocket, или REST (как это делают тысячи других проектов сегодня). - person Joakim Erdfelt; 22.08.2017
comment
Требуется файл войны. Я использую JGroups для создания кластера. Этот кластер используется несколькими службами, которые развернуты как война. Здесь приложения используют шаблон наблюдателя. Кластер является субъектом, а другие службы являются наблюдателями. Каждая служба, то есть военные файлы, предоставляет REST для связи с внешним миром. Но связь между кластерным приложением и другими войнами не может использовать REST, поскольку им нужно совместно использовать одноэлементный объектный наблюдатель (я предполагаю, что разные войны не могут следовать шаблону наблюдателя), и, следовательно, я ищу методы связи. В настоящее время я использую кластер как обычную банку. Ищу другие методы реализации b4 - person Malini Kennady; 22.08.2017
comment
JGroups не требует и не использует одноэлементное поведение, трюки с загрузчиком классов или требования к порядку загрузки фанков. JGroups полностью работает через RPC-коммуникации (также известные как сетевые коммуникации). Каждое веб-приложение будет просто еще одним узлом в вашей среде JGroups, ни одно веб-приложение не будет главным. - person Joakim Erdfelt; 22.08.2017
comment
Каждое веб-приложение не должно быть отдельным узлом. Каждое устройство должно быть отдельным узлом. Каждая служба говорит, что s1 и s2, которые будут развернуты на всех серверах, должны использовать один и тот же канал Jgroups. Следовательно, требуется военное общение. заранее спасибо - person Malini Kennady; 22.08.2017
comment
Причина заказа заключается в том, что у меня есть основная война (которая просто инициирует Jgroups и содержит несколько служб REST), которая должна быть развернута и инициировать кластер перед любыми другими файлами войны (любое приложение, которое использует Jgroups для связи), другие файлы войны не должны инициировать Jgroups следовательно, я требую, чтобы master war загружался перед любой другой войной. - person Malini Kennady; 22.08.2017
comment
Обзор: в моем текущем приложении Jgroups и логика приложения говорят, что служба 1 вместе в файле войны. Теперь, если еще одна новая служба говорит, что добавлена ​​служба 2, она будет в том же файле войны. Эти две службы должны использовать одни и те же Jgroups. Вместо этого теперь пытаемся разделить Jgroups и сервисы. Jgroups будут работать независимо от служб. Поскольку моя реализация Jgroups также содержит вызов REST, я упаковал это в war, скажем, jWar, а основные функции - в jar. Теперь этот jar будет инициализирован через init jWar и REST будет выставлен. Другие службы должны взаимодействовать с файлом jar - person Malini Kennady; 22.08.2017
comment
Теперь это выходит за рамки исходного вопроса, поскольку он углубился в установку и настройку jgroups. Возможно, вам больше повезет с конкретным jgroups суженным вопросом о том, как установить jgroups на движке сервлетов с несколькими веб-приложениями, не так ли? Я предполагаю, что это должно быть сделано определенным образом, задавая конкретные вопросы о том, как сгибать / ломать спецификации, чтобы соответствовать этому предположению, просто приведет к разочарованию. - person Joakim Erdfelt; 22.08.2017
comment
Большое спасибо. Поскольку я не хочу добавлять много деталей, я сузил свой исходный вопрос, который мне любопытно узнать (может быть, полезно). Здесь есть много аспектов, на которые нужно обратить внимание, и поэтому я сохранил исходный вопрос точным и не должен путать те, которые кто это просматривает. Спасибо :-) - person Malini Kennady; 22.08.2017