我在同一个 JBoss/Jetty 服务器上部署了 2 个 webapp。在 Jetty 5.1.14 中,我有以下 jetty-web.xml 配置其中一个应用程序作为虚拟主机(在同一端口上)运行:
<Configure class="org.jboss.jetty.JBossWebApplicationContext">
<Call name="addVirtualHost"><Arg>app2.localhost.com</Arg></Call>
</Configure>
这工作得很好。不幸的是,它根本不适用于 Jetty 6.1.17。首先,“JBossWebApplicationContext”现在似乎被称为“JBossWebAppContext”,其次,我可以找到的文档表明我应该使用如下所示的 jetty-web.xml:
<Configure class="org.jboss.jetty.JBossWebAppContext">
<Set name="VirtualHosts">
<Array type="java.lang.String">
<Item>app2.localhost.com</Item>
</Array>
</Set>
</Configure>
但这也不起作用。这两个 webapps 部署没有错误,但是当我尝试访问虚拟主机名下的第二个应用程序时,它只是访问第一个应用程序。两个应用程序都在根上下文中(这是不可协商的)。
如何使虚拟主机工作?
到目前为止,我已经通过使用以下语法解决了这个问题:
事实证明,如果所有 webapps 在同一个容器中运行,它们都需要定义虚拟主机。出于某种原因,部署一个带有虚拟主机的 WAR 和一个不带有虚拟主机的 WAR 不起作用。这在 Jetty 5 中运行良好,所以我很困惑,但是为所有需要它的应用程序定义虚拟主机文件不会成为问题。
您可能会看到这是否适合您:
(当然,根据需要调整文件名和路径)