是否可以在另一个中包含/嵌入一个Java EE应用程序(war文件)?

时间:2008-10-07 13:54:43

标签: java java-ee war

我有一个应用程序,它是一个门户应用程序,我想允许其他用户添加他们的应用程序。为了做到这一点,我需要一些方法来访问我的应用程序。这可能吗?

4 个答案:

答案 0 :(得分:4)

您不能将WAR放在其他WAR中。您需要一个包含WAR,EJB等的EAR文件。实现WAR间通信的一种方法是将该逻辑直接打包在EAR中。这一切都取决于你想要做什么。

答案 1 :(得分:2)

通过该方法进行国际.WAR通信的方式 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext(java.lang.String)

ServletContext.getContext(URIOfOtherWAR_resource)

我成功地使用了这个来做你正在谈论的事情。

答案 2 :(得分:1)

也许您需要一个插件系统或portlet,因此您的用户不会开发war应用程序,而是将其portlet包含在应用程序中(war)。有一个标准:JSR 168和几个实现: http://developers.sun.com/portalserver/reference/techart/jsr168/

答案 3 :(得分:1)

正如其他人所指出的那样,在WAR中嵌入WAR不是一种选择。但是,我可能会为您解决。

我熟悉的大多数Web容器都具有“测试部署/自动部署”模式/功能,如果将WAR复制到正确的目录中,它们将自动部署应用程序。

您的门户网站应用程序当然可以允许上传WAR,它可以将上传的字节存储在给定文件名下的给定目录中。您的Web容器可以完成剩下的工作。然后,您可以从门户网站链接到新应用程序,或者其他任何内容。所有这一切都相对容易。

然而,请注意,如果存在任何安全问题,这是一个可怕的想法。实质上,您允许用户在您的服务器上执行任意代码。除非你完全相信所有潜在用户都是非恶意的并且完全胜任(想想无限循环),否则你在这里要求很多麻烦。