是否可以在另一个内部包含/嵌入一个Java EE应用程序(war文件)?Java EE war文件
我有一个应用程序是一个门户应用程序,我想让其他用户在那里添加应用程序。为了做到这一点,我需要一些方法来访问我的应用程序。
这可能吗?
是否可以在另一个内部包含/嵌入一个Java EE应用程序(war文件)?Java EE war文件
我有一个应用程序是一个门户应用程序,我想让其他用户在那里添加应用程序。为了做到这一点,我需要一些方法来访问我的应用程序。
这可能吗?
您不能将WAR放入其他WAR中。您需要一个EAR文件来包含WAR,EJB等。实现WAR间通信的一种方法是将该逻辑直接打包到EAR中。这完全取决于你想要做什么。
也许你需要一个插件系统或portlet,所以你的用户不会开发一个战争应用程序,但包括他们的portlet在你的应用程序(战争)。有一个标准:JSR 168和几个实现: http://developers.sun.com/portalserver/reference/techart/jsr168/
正如其他人指出的那样,将WARs嵌入到WAR中不是一种选择。不过,我可能会为您解决一个问题。
我熟悉的大多数Web容器都具有“测试部署/自动部署”模式/功能,如果WAR被复制到正确的目录中,他们将自动部署应用程序。
您的门户应用程序当然可以允许上传WAR,并且它可以将上传的字节存储在给定文件名下的给定目录中。您的Web容器可以完成剩下的工作。然后,您可以从您的门户链接到新的应用程序,或任何其他。所有这些都相对容易。
但是,请注意,如果有任何安全问题,这是一个可怕的想法。你基本上允许你的用户在你的服务器上执行任意代码。除非你完全相信所有的潜在用户都是非恶意的,并且完全胜任(认为无限循环),否则你在这里要求很大的麻烦。
我对这件事感到不安。 (至少你确实指出了你的安全问题。) – 2008-10-07 16:18:16
做间.WAR通信的方式是通过该方法 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext(java.lang.String)
ServletContext.getContext(URIOfOtherWAR_resource)
我用这个成功地去做你在说什么。
说明一下,EAR是其他JEE可部署软件包(如WAR,EJB JAR等)的容器。 – skaffman 2008-10-07 14:03:02