我想运行一个Web容器,其中每个webapp都在自己的进程(JVM)中运行。传入请求由端口80上运行的代理Web应用程序转发到各个Web应用程序,每个Web应用程序(webapp)在其自己的JVM中的自己的端口上运行。
这将解决三个问题:
java.lang.UnsatisfiedLinkError: Native Library x already loaded in another classloader.
现有的网络容器今天都这样做吗?
答案 0 :(得分:1)
我正在结束这个问题,因为我似乎陷入了死胡同:http://tomcat.10.n6.nabble.com/One-process-per-webapp-td2084881.html
作为一种解决方法,我手动为每个webapp启动一个单独的Jetty实例。
答案 1 :(得分:0)
你不能只为每个容器部署一个应用程序,然后使用DNS条目和反向代理来完成同样的事情吗?我相信Weblogic以托管域的形式有这样的东西。
答案 2 :(得分:0)
不,AFAIK,他们都不这样做,可能是因为Java Web容器强调遵循servlet API - 每个http请求都会旋转一个线程。你想要的是JVM级别的分支 - 而这根本不是标准的Java习语。
答案 3 :(得分:0)
如果我理解正确,您要求为企业级服务器提供标准功能,例如IBM的WebSphere Network Deployment(我为IBM工作的免责声明),您可以在其中跨多个JVM分发应用程序,而这些JVM实际上可以分布在许多物理上机等。
我不确定你的基本前提是否正确。没有必要重新启动整个JVM以部署新版本的应用程序。许多应用服务器将使用类加载器策略,允许它们丢弃应用程序的版本并加载新版本。