tomcat - 是否可以在没有单独的 J2EE 容器部署的情况下虚拟化 war 文件执行?

标签 tomcat jakarta-ee websphere weblogic jetty

假设我想让我的开发人员将他们的war 文件上传到在我们的 Intranet 上运行的 Web 应用程序(不是应用程序服务器本身)并且 Web 应用程序 然后将运行 这些 war 就好像它们是单独部署在我们的 J2EE 容器中的独立应用程序

换句话说,我们实际上并没有将wars部署为容器中的单独应用程序——它们只是在这个网络应用程序中并排运行 < strong>就像一个 J2EE 容器。

这可能吗?

类似war 虚拟化应用程序的东西?

最佳答案

您可以开始创建 ClassLoader,扩展 .war,加载类并将对应用程序的请求分派(dispatch)到正确的子 Web 应用程序。这看起来像是在重新发明轮子(假设 app.server 已经这样做了)并且可能非常复杂。

另一方面,这看起来与 portlet 的工作方式非常相似。 Portlet 被打包成一个.war 文件,然后供门户使用。例如,在 Liferay 门户中,您可以从 liferay 门户(而不是应用程序服务器本身)上传一个 portlet .war。然后 Liferay 会将上传的 .war 文件放在应用程序的自动部署目录中。然后将像常规 Web 应用程序一样部署的服务器。然后是将请求从门户分派(dispatch)到正确的 Portlet Web 应用程序等的 Portlet 桥。可能值得仔细研究一下。

我不知道您的要求,但我肯定会尝试保持简单,因为这样的事情可能会变得非常复杂。但是你可以:

  • 让用户从您的应用程序上传.war
  • 操作 .warweb.xml 以确保上下文类似于 /ParentApp/ChildApp
  • 将修改后的.war保存到auto-deploy文件夹中,让app.服务器部署它

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

关于tomcat - 是否可以在没有单独的 J2EE 容器部署的情况下虚拟化 war 文件执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557915/

相关文章:

java - 在 IntelliJ Java 应用程序 SLF4j 记录器错误中运行 Tomcat

tomcat - 托管 GWT WebApp

database - 在测试 API 时编写用于验证数据库条目的测试代码

java - Jasper Reports + WebSphere 7,ExceptionInInitializerError 异常

java - 在我的 Websphere 服务器中安装的 EJB 无状态 bean 中获取主机和端口

java - 将mysql数据库连接到jsp

Tomcat - 如何阻止对特定文件夹\页面的访问

无框架的 Java EE MVC

java - 通过 EJB RMI 传递对象 - NullPointerException

e-commerce - 在 WebSphere Commerce 的结账过程/流程中调用了哪些命令?