É possível incluir / incorporar uma aplicação Java EE (arquivo de guerra) dentro de outro?
Pergunta
Eu tenho um aplicativo que é um aplicativo de portal e quero permitir que outros usuários adicionar seus aplicativos para ele. A fim de fazer isso eu preciso de alguma forma para ser capaz de acessar seus aplicativos no meu. Isso é possível?
Solução
Você não pode colocar WARs dentro de outras guerras. Você precisa de um arquivo EAR para conter guerras, EJBs, etc. Uma maneira de implementar a comunicação inter-guerra é empacotar essa lógica diretamente na EAR. Tudo depende do que você está tentando fazer.
Outras dicas
a maneira de fazer comunicação entre .WAR é pelo método http: / /java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext(java.lang.String)
ServletContext.getContext (URIOfOtherWAR_resource)
Eu usei isso com sucesso para fazer o que você está falando.
Talvez você precise de um sistema de plugins ou portlet, para que o seu usuário não vai desenvolver uma aplicação de guerra, mas incluir seu portlet dentro do seu aplicativo (guerra). Não há um padrão: JSR 168 e várias implementações: http://developers.sun.com/portalserver/reference/techart/jsr168/
Como outros apontaram, a incorporação de WARs dentro guerras não é uma opção. No entanto, eu posso ter uma solução para você.
A maioria dos containers web que estou familiarizado com ter uma "implantação de teste / auto deploy" / modo de capacidade, onde eles vão distribuir automaticamente uma aplicação Se a guerra é copiado para o diretório correto.
O aplicativo portal certamente poderia permitir que WARs upload, e poderia armazenar os bytes enviados em um determinado diretório sob um determinado nome de arquivo. Seu recipiente Web poderia fazer o resto. Você poderia, então link para o novo aplicativo de seu portal, ou o que quer. Tudo isso é relativamente fácil de fazer.
No entanto, é aconselhável que esta é uma idéia horrível, se houver qualquer preocupação de segurança qualquer. Você é essencialmente permitindo que seus usuários para executar código arbitrário no seu servidor. A menos que você confia completamente todos os potenciais utilizadores para ser não-malicioso e perfeitamente competente (pense loops infinitos), você está pedindo um monte de problemas aqui.