我在同一个JBoss / Jetty服务器上部署了2个webapps。在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没有错误地部署,但是当我尝试访问虚拟主机名下的第二个应用程序时,它只是访问第一个应用程序。两个应用程序都在根上下文中(这是不可协商的)。
如何让虚拟主机工作?
(顺便说一下,几天前我有一个朋友在服务器故障上发帖,但没有人回答。)
答案 0 :(得分:1)
如果您将此语法包含在每个Web应用程序的jetty6-web.xml中,则此语法有效。
<Configure class="org.jboss.jetty.JBossWebAppContext">
<Set name="VirtualHosts">
<Array type="java.lang.String">
<Item>host1.domain.com</Item>
<Item>host2.domain.com</Item>
</Array>
</Set>
</Configure>
如果所有虚拟主机在同一容器中运行,则需要定义虚拟主机。出于某种原因,部署一个带有虚拟主机的WAR和一个没有的WAR不起作用。