[英]Is it possible to virtualize war file execution without separate J2EE container deployments?
假设我要允许我的开发人员将其war
文件上传到在我们的Intranet上运行的Web应用程序( 而不是应用程序服务器本身 ) ,然后该Web应用程序将运行这些Wars ,就像它们是单独部署在J2EE容器中的单独应用程序一样 。
换句话说,我们实际上并没有将wars
作为单独的应用程序部署在容器中,它们只是在一个 像J2EE容器的 Web应用程序 中并排运行。
那可能吗?
像war
虚拟化应用程序一样?
您可以开始创建ClassLoader
,展开.war
,加载类并将请求分发到应用程序到正确的子Web应用程序。 这看起来像是在重新发明轮子(假设应用服务器已经做到了),而且可能非常复杂。
另一方面,这看起来与portlets
工作方式极为相似。 Portlet被打包为.war
文件,然后由门户使用。 例如,在Liferay门户中,您可以从liferay门户(而不是应用程序服务器本身)上载Portlet .war
。 然后,Liferay将上载的.war
文件放置在应用程序的自动部署目录中。 服务器,然后将其像常规Web应用程序一样进行部署。 然后是Portlet桥接器,它将请求从门户分发到正确的Portlet Web应用程序,等等。值得仔细研究一下。
我不知道您的要求,但是我会尽力使它保持简单,因为这样的事情可能会变得非常复杂。 但是您可以:
.war
.war
和web.xml
以确保上下文类似于/ParentApp/ChildApp
.war
保存到自动部署文件夹中,然后使用该应用程序。 服务器部署它 这将提供您可以从父Web应用程序部署子Web应用程序的错觉。
是否有任何特定的原因为什么您需要它们来应对另一场战争? 听起来您要实现目标需要做的事情-如果要在战争中运行它,可能就做不到-要建立一场战争,然后接受他们上传的战争并使用API来部署网络服务器的战争公开部署战争,从而使其可以作为顶级Web应用程序运行。 我认为没有其他方法可以做到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.