假设我想允许我的开发人员将他们的war
文件上传到我们内联网上运行的网络应用程序(而不是应用程序服务器本身)和该网络应用程序< / strong>然后运行那些战争好像它们是我们在J2EE容器中单独部署的单独应用程序。
换句话说,我们实际上并没有将wars
部署为容器中的单独应用程序 - 它们只是在这个Web应用程序中并行运行 就像一个J2EE容器。
这可能吗?
类似于war
虚拟化应用程序?
答案 0 :(得分:0)
您可以开始创建ClassLoader
,展开.war
,加载类并将请求发送到您的应用程序到正确的子网络应用程序。这看起来像是重新发明轮子(假设app。服务器已经这样做了)并且可能非常复杂。
另一方面,这与portlets
的工作方式非常相似。 Portlet打包到.war
文件中,然后由门户使用。例如,在Liferay门户中,您可以从liferay门户(而不是应用程序服务器本身)上载portlet .war
。然后,Liferay会将上传的.war
文件放在应用程序的自动部署目录中。然后将像常规Web应用程序一样部署服务器。然后有一个portlet桥,它将请求从门户网站分发到正确的portlet web应用程序等。可能值得仔细研究一下。
我不知道你的要求,但我明确地试着保持简单,因为这样的东西会变得非常复杂。但你可以:
.war
.war
和web.xml
以确保上下文类似于/ParentApp/ChildApp
.war
保存到自动部署文件夹并让应用。服务器部署它这将提供您可以从父Web应用程序部署子Web应用程序的错觉。
答案 1 :(得分:0)
为什么你需要他们在另一场战争的背景下奔跑?听起来你需要做些什么来实现你的目标 - 如果你在战争中运行它可能是不可能的 - 是建立一场战争然后接受他们上传的战争并使用API来部署Web服务器的战争暴露部署战争,从而让它作为顶级网络应用程序运行。我认为没有其他办法可以做到。