Можно ли виртуализировать выполнение военного файла без отдельного развертывания J2EE-контейнера? - PullRequest
1 голос
/ 01 апреля 2010

Допустим, я хочу позволить моим разработчикам загружать свои war файлы в веб-приложение (, а не сам сервер приложений ), работающее в нашей интрасети, и , которое веб-приложение будет затем запустите эти войны , как если бы они были отдельными приложениями, развернутыми индивидуально в нашем контейнере J2EE .

Другими словами, мы на самом деле не развертываем wars как отдельные приложения в контейнере - они просто работают бок о бок внутри этого одного веб-приложения , которое действует как Контейнер J2EE .

Это возможно?

Что-то вроде war приложения для виртуализации?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2010

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

0 голосов
/ 01 апреля 2010

Вы можете начать создавать ClassLoader, развернуть .war, загрузить классы и отправить запрос в ваше приложение в нужное суб-веб-приложение. Это похоже на повторное изобретение колеса (учитывая, что сервер приложений уже это делает) и, вероятно, очень сложно.

С другой стороны, это выглядит очень похоже на то, как работает portlets. Портлеты упаковываются в файл .war и затем используются порталом. Например, на портале Liferay вы можете загрузить портлет .war с портала liferay (не самого сервера приложений). Затем Liferay поместит загруженный файл .war в каталог автоматического развертывания приложения. сервер, который затем будет развернут как обычное веб-приложение. Кроме того, существует мост с портлетами, который отправляет запрос от портала к нужному веб-приложению с портлетами и т. Д. Возможно, стоит взглянуть поближе.

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

  • Позволяет пользователю загружать .war из вашего приложения
  • Манипулируйте .war и web.xml, чтобы убедиться, что контекст выглядит как /ParentApp/ChildApp
  • Сохраните измененный .war в папку автоматического развертывания и запустите приложение. сервер развернуть его

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

...