Можно ли включить / встроить одно приложение Java EE (файл war) в другое?
Вопрос
У меня есть приложение, которое является портальным приложением, и я хочу разрешить другим пользователям добавлять в него свои приложения.Чтобы сделать это, мне нужен какой-то способ получить доступ к их приложениям в моем.Возможно ли это?
Решение
Вы не можете поместить WAR в другие WAR. Вам нужен файл EAR, содержащий WAR-файлы, EJB-компоненты и т. Д. Одним из способов реализации взаимодействия между WAR-ами является упаковка этой логики непосредственно в EAR. Все зависит от того, что вы пытаетесь сделать.
Другие советы
способ осуществления межвоенного общения заключается в методе:Военное общение осуществляется с помощью http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext (java.lang.Строка)
ServletContext.getContext(URIOfOtherWAR_resource)
Я успешно использовал это для выполнения того, о чем вы говорите.
Возможно, вам нужна система плагинов или портлет, чтобы ваш пользователь не разрабатывал военное приложение, а включал свой портлет в ваше приложение (война). Есть стандарт: JSR 168 и несколько реализаций: http://developers.sun.com/portalserver/reference/techart/jsr168/ а> р>
Как уже отмечали другие, встраивание WAR в WAR не допускается. Однако у меня может быть обходной путь для вас.
У большинства знакомых мне веб-контейнеров есть " тестовое развертывание / автоматическое развертывание " режим / возможность, где они автоматически развернут приложение, если WAR скопирован в правильный каталог.
Ваше приложение портала, безусловно, может разрешать загрузку WAR, и оно может хранить загруженные байты в заданном каталоге под заданным именем файла. Ваш веб-контейнер может сделать все остальное. После этого вы можете сделать ссылку на новое приложение на своем портале или что-то еще. Все это относительно легко сделать.
Однако имейте в виду, что это ужасная идея, если есть какие-либо проблемы с безопасностью. По сути, вы позволяете своим пользователям выполнять произвольный код на вашем сервере. Если вы не полностью доверяете всем потенциальным пользователям, чтобы они не были злонамеренными и не были совершенно компетентными (подумайте о бесконечных циклах), вы здесь создаете много проблем.