如何设置 Jetty 6 和 Jboss 4.0.5 虚拟主机?

如何设置 Jetty 6 和 Jboss 4.0.5 虚拟主机?

我在同一个 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> 

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

如何让虚拟主机发挥作用?

答案1

到目前为止,我已经使用以下语法解决了该问题:

<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>

问题在于,如果所有 Web 应用都运行在同一个容器中,则它们都需要定义虚拟主机。出于某种原因,部署一个带有虚拟主机的 WAR 和一个不带虚拟主机的 WAR 不起作用。这在 Jetty 5 中运行良好,所以我很困惑,但是为所有需要它的应用程序定义虚拟主机文件不会有问题。

答案2

你可能会看到这是否适合你:

<New class="org.jboss.jetty.JBossWebAppContext">
      <Arg><Ref id="Contexts"/></Arg>
      <Arg><SystemProperty name="jetty.home"/>/webapps/app1.war</Arg>
      <Arg>/</Arg>
      <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
      <Set name="VirtualHosts">
        <Array type="java.lang.String">
          <Item>app1.localhost.com</Item>
        </Array>
      </Set>
    </New>

    <New class="org.jboss.jetty.JBossWebAppContext">
      <Arg><Ref id="Contexts"/></Arg>
      <Arg><SystemProperty name="jetty.home"/>/webapps/app2.war</Arg>
      <Arg>/</Arg>
      <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
      <Set name="VirtualHosts">
        <Array type="java.lang.String">
          <Item>app2.localhost.com</Item>
        </Array>
      </Set>
    </New>

(当然,根据需要调整文件名和路径)

相关内容