3

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

4

4 回答 4

4

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

于 2008-10-07T14:01:43.197 回答
2

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

ServletContext.getContext(URIOfOtherWAR_resource)

我已经成功地用它来做你所说的事情。

于 2008-10-07T14:47:50.560 回答
1

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

于 2008-10-07T14:14:51.423 回答
1

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

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

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

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

于 2008-10-07T14:34:52.960 回答