Можно ли включить/встроить одно приложение Java EE(файл war) в другое?

#java #jakarta-ee #war

Вопрос:

У меня есть приложение, которое является приложением портала, и я хочу разрешить другим пользователям добавлять в него свои приложения. Для этого мне нужен какой-то способ получить доступ к их приложениям в моем. Возможно ли это?

Ответ №1:

Вы не можете помещать войны внутри других войн. Вам нужен файл EAR, содержащий войны, EJBS и т. Д. Один из способов реализовать межвоенную связь-это вложить эту логику непосредственно в УХО. Все зависит от того, что вы пытаетесь сделать.

Комментарии:

1. Чтобы уточнить, EAR-это контейнер для других развертываемых пакетов JEE, таких как WARs, банки EJB и так далее.

Ответ №2:

способ сделать интер .ВОЕННОЕ сообщение осуществляется методом http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext(java.lang.Строка)

ServletContext.getContext(URIOfOtherWAR_resource)

Я успешно использовал это для выполнения того, о чем вы говорите.

Ответ №3:

Возможно, вам нужна система плагинов или портлет, чтобы ваш пользователь не разрабатывал приложение war, а включал свой портлет в ваше приложение (war). Существует стандарт : JSR 168 и несколько реализаций : http://developers.sun.com/portalserver/reference/techart/jsr168/

Ответ №4:

Как отмечали другие, встраивание войн в войны-это не вариант. Тем не менее, у меня может быть для вас обходной путь.

Большинство веб-контейнеров, с которыми я знаком, имеют режим / возможность / «тестовое развертывание / автоматическое развертывание», в котором они автоматически развернут приложение, если ВОЙНА скопирована в нужный каталог.

Ваше приложение портала, безусловно, может разрешить загрузку WARs, и оно может хранить загруженные байты в заданном каталоге под заданным именем файла. Ваш веб-контейнер может сделать все остальное. Затем вы можете перейти по ссылке на новое приложение с вашего портала или что-то еще. Все это относительно легко сделать.

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

Комментарии:

1. Меня тошнит от этого. (По крайней мере, вы указываете на свои проблемы с безопасностью.)