Возможно ли когда-либо добавить зависимость к развернутой WAR без изменения / повторного развертывания WAR - PullRequest
0 голосов
/ 18 января 2012

У нас есть приложение XYZ, которое отображает формы для пользователя. Мы хотели бы распространять это приложение и разрешать сторонним разработчикам создавать свои собственные формы (расширяющие интерфейсы, предоставляемые приложением XYZ) и развертывать эти формы таким образом, чтобы приложение XYZ могло отображать их без необходимости изменения самостоятельно. Приложение XYZ знает, какие формы оно может отображать, просматривая файл конфигурации, в котором перечисляются все доступные классы форм (они затем создаются рефлексивно).

Мы используем Weblogic 10.3 в качестве сервера приложений, а приложение является приложением GWT / Java.

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

1 Ответ

1 голос
/ 18 января 2012

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

Документация tomcat очень хорошо описывает взаимоотношения различных загрузчиков классов.(Учитывая, что Tomcat был эталонной реализацией для сервлетов, Weblogic должен выполняться аналогичным образом)

Таким образом, альтернативой перекомпиляции WAR будет размещение этих дополнительных пользовательских jar-файлов в каталоге "$ CATALINA_BASE / lib" (илиWeblogic равнозначен).

Однако я вижу несколько проблем с реализацией:

  1. Ваше приложение должно быть скомпилировано с использованием фиксированного интерфейса.Это позволило бы пользователям заменить реализацию этих классов во время выполнения.
  2. Пользовательские jar-файлы будут доступны всем экземплярам приложения.Это может исключить запуск более старых версий вашего приложения на одном и том же экземпляре сервера приложений.
  3. Ожидаются проблемы с развертыванием ... Подумайте, как ваше приложение будет реагировать на отсутствующие зависимости.Пользователи не поймут трассировку стека Java: -)
...