2010-04-01 1 views
1

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

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

Возможно ли это?

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

ответ

0

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

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

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

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

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

+0

Это замечательно. Вы действительно знаете свои вещи. Большое спасибо. – Smith

0

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

Смежные вопросы