繁体   English   中英

没有单独的J2EE容器部署,是否可以虚拟化war文件的执行?

[英]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
  • 操作.warweb.xml以确保上下文类似于/ParentApp/ChildApp
  • 将修改后的.war保存到自动部署文件夹中,然后使用该应用程序。 服务器部署它

这将提供您可以从父Web应用程序部署子Web应用程序的错觉。

是否有任何特定的原因为什么您需要它们来应对另一场战争? 听起来您要实现目标需要做的事情-如果要在战争中运行它,可能就做不到-要建立一场战争,然后接受他们上传的战争并使用API​​来部署网络服务器的战争公开部署战争,从而使其可以作为顶级Web应用程序运行。 我认为没有其他方法可以做到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM