在实际工作中我们可能会在同一台服务器上提供多个公共应用服务,应用程序可以是不同的项目,也可以是同一个项目下不同子目录资源或者二者都有,这样我们就需要将域名绑定到指定的资源目录。
1、不同项目
根据前面的文章:jboss-as-7.1.1.Final:(一)首页设置
,我们将enable-welcome-root
置为false
,配置文件如下:
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="true">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<configuration>
<jsp-configuration development="true"/>
</configuration>
<virtual-server name="default-host" enable-welcome-root="false">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>
然后在该subsystem
下添加如下节点:
<virtual-server name="YouthServerA" enable-welcome-root="false" default-web-module="ProjectA">
<alias name="domainA.com"/>
</virtual-server>
<virtual-server name="YouthServerB" enable-welcome-root="false" default-web-module="ProjectB">
<alias name="domainB.com"/>
</virtual/-server>
......
项目ProjectA.war
的jboss-web.xml1
文件如下配置:
<jboss-web>
<context-root>/RootA</context-root>
<virtual-host>YouthServerA</virtual-host>
</jboss-web
项目ProjectB.war
的jboss-web.xml
文件如下配置:
<jboss-web>
<context-root>/RootB</context-root>
<virtual-host>YouthServerB</virtual-host>
</jboss-web
项目Project……
这样,我们就将domainA.com
绑定项目PorojectA
的目录/RootA
,domainB.com
绑定项目PorojectB
的目录/RootB
,……。
2、同一项目
这种情况下JBoss的设置已经无法帮助我们了,只能在代码中绑定域名,一般可以在两个地方进行控制:
1、项目首页,根据http请求头部中的主机信息决定是否跳转到其它不同的目录资源;
2、拦截http请求的代码部分,判断方法跟(1)是一样的,不同的是,前者使用javascript
进行跳转,地址栏会有所改变,而后者可以进行转发,地址栏不变。
一般来说,域名对相应的资源目录是独占的。