虚拟主机允许按照运行JBoss机器的不同DNS名称对Web应用进行分组。例如,Example 7.1, “A virtual host configuration.”给出的server.xml配置文件,除了定义一个缺省虚拟主机vhost1.mydot.com外,还定义了第二个虚拟主机vhost2.mydot.com及其别名www.mydot.com.
Example 7.1. A virtual host configuration.
<Server>
<Service name="jboss.web"
className="org.jboss.web.tomcat.tc5.StandardService">
<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
<Engine name="jboss.web" defaultHost="vhost1">
<Realm className="org.jboss.web.tomcat.security.JBossSecurityMgrRealm"
certificatePrincipal="org.jboss.security.auth.certs.SubjectDNMapping"
/>
<Logger className="org.jboss.web.tomcat.Log4jLogger"
verbosityLevel="WARNING"
category="org.jboss.web.localhost.Engine"/>
<Host name="vhost1" autoDeploy="false"
deployOnStartup="false" deployXML="false">
<Alias>vhost1.mydot.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="vhost1" suffix=".log" pattern="common"
directory="${jboss.server.home.dir}/log"/>
<DefaultContext cookies="true" crossContext="true" override="true"/>
</Host>
<Host name="vhost2" autoDeploy="false"
deployOnStartup="false" deployXML="false">
<Alias>vhost2.mydot.com</Alias>
<Alias>www.mydot.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="vhost2" suffix=".log" pattern="common"
directory="${jboss.server.home.dir}/log"/>
<DefaultContext cookies="true" crossContext="true" override="true"/>
</Host>
</Engine>
</Service>
</Server>
在缺省情况下,部署的WAR包将会绑定到Engine元素defaultHost属性匹配的虚拟主机. 为了将WAR包部署到指定的虚拟主机上,必须在jboss-web.xml描述文件中指定合适的virtual-host. 下面的 jboss-web.xml 描述文件演示了怎样将一个WAR包部署到特定的虚拟主机 www.mydot.com上. 值得注意的是,在配置文件中既可以使用虚拟主机名,也可以使用真实的主机名.
<jboss-web>
<context-root>/</context-root>
<virtual-host>www.mydot.com</virtual-host>
</jboss-web>