如何设置Jetty 6&;JBoss4.0.5虚拟主机?

如何设置Jetty 6&;JBoss4.0.5虚拟主机?,jboss,jetty,virtualhost,Jboss,Jetty,Virtualhost,我在同一JBoss/Jetty服务器上部署了两个WebApp。在Jetty 5.1.14中,我有以下Jetty-web.xml,它将其中一个应用程序配置为作为虚拟主机运行(在同一端口上): app2.localhost.com 这工作做得非常好。不幸的是,它根本不适用于Jetty 6.1.17。首先,“JBossWebApplicationContext”现在似乎被称为“JBossWebAppContext”,其次,我可以找到的文档建议我应该使用一个jetty-web.xml,如下所示: &

我在同一JBoss/Jetty服务器上部署了两个WebApp。在Jetty 5.1.14中,我有以下Jetty-web.xml,它将其中一个应用程序配置为作为虚拟主机运行(在同一端口上):


app2.localhost.com
这工作做得非常好。不幸的是,它根本不适用于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>

app2.localhost.com
但这也不行。这两个webapp部署时没有错误,但当我尝试访问虚拟主机名下的第二个应用时,它只访问第一个应用。两个应用程序都在根上下文中(这是不可协商的)

如何使虚拟主机正常工作


(顺便说一句,前几天我有一个朋友在serverfault上发了这篇文章,但没有人回复。)

如果你将它包含在每个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>

host1.domain.com
host2.domain.com

如果在同一容器中运行,则所有Web应用都需要定义虚拟主机。出于某种原因,部署一个带虚拟主机的WAR和一个不带虚拟主机的WAR是不起作用的。

是的,我们发现这可能是一个bug(或者是Jetty 5到6的功能变化),如果其中一个存在,则所有Web应用都需要定义虚拟主机。
<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>