JBoss AS 7 中如何配置多个二级域名

来源:互联网 发布:超市软件管理系统 编辑:程序博客网 时间:2024/06/08 07:45

声明

本篇日志为CSDN zhaoyonghui100原创,转载请表明出处。参考此文档需责任自负,与博主无关。


前言

最近公司在开发一个Web项目,需要使用域名加端口的方式访问。而域名使用花生壳的动态域名,有三个。由于对JBoss AS 7 不熟悉,因此在网上找了一大圈,结果发现大部分的介绍都是一样的内容,都是 Jboss 4的域名配置。经过很长时间的摸索,现在总结一下自己在 JBoss AS 7 中如何配置多个二级域名的方法。


参考资料

先看看网上流传的比较靠谱的一种介绍,感谢该博主的无私奉献。

http://blog.csdn.net/lzzyok/article/details/7895092


Jboss 虚拟主机设置

1. www.domain.com 型

Jboss4.0.3 和 Jboss4.2.1 下相同,只需在项目的 WEB-INF目录下添加一个叫 jboss-web.xml 的配置文件,内容如下:

 
java 代码
  1. <?xml version="1.0"?>   
  2. <!DOCTYPE jboss-web>   
  3.   
  4. <jboss-web>   
  5.   <context-root>/</context-root>   
  6.   <virtual-host>www.domain.com</virtual-host>   
  7. </jboss-web>  

2. xxx.domain.com 型

在Jboss4.0.3下配置有两步:

先在项目的 WEB-INF目录下添加一个叫 jboss-web.xml 的配置文件,内容同上.然后在 "jboss-4.0.3SP1\server\default\deploy\jbossweb-tomcat55.sar\server.xml" 中的 Engine 标签内加一个 Host 节点,内容为:

<host name="xxx.domain.com"></host>

xml 代码
  1. <Host name="abc.abc.com" >  
  2.          <Alias>xxx.domain.comAlias>  
  3.          <Alias>www.domain.comAlias>  
  4.                 
  5. >  

 

此时即可用 xxx.domain.com 访问

在 Jboss4.2.1 下配置略有不同:

先在项目的 WEB-INF目录下添加一个叫 jboss-web.xml 的配置文件,内容有变:

<jboss-web></jboss-web>

xml 代码

  1. <jboss-web></jboss-web>
      <context-root></context-root>/
      <virtual-host>xxx.domain.com</virtual-host>

       

 

然后在 "jboss-4.2.1.GA\server\default\deploy\jboss-web.deployer\server.xml"或

jboss-as-web-7.0.1.Final\standalone\configuration\standalone.xml 中的 Engine 标签内加一个 Host 节点,内容为:

<host name="xxx.domain.com"></host>

xml 代码
  1. <Host name="abc.abc.com" >  
  2.          <Alias>xxx.domain.comAlias>  
  3. >  

 

此时即可用 xxx.domain.com 访问

附:本地测试方法:

在C:\WINDOWS\system32\drivers\etc下,在hosts 文件中添加你的域名映射。本地嘛

只要映射成:127.0.0.1       localhost
                        127.0.0.1       xxx.domain.com
 

本地映射的作用:当你访问一个websit的时候,你的pc首先会查找这个hosts文件,看是否有相应的网站映射,如果有就直接访问指定的 IP 了.测试时一定要注意端口号,如果不是80 可在域名后追加.


实践

作者按照上述内容反复试验,发现并不能实现JBoss 7在Standalone模式下的域名解析。因此JBoss 7的朋友就直接参考下面的现成方法吧。

我的理解和方法总结


关于项目目录下的jboss-web.xml


这个文件确实需要,并且应该放置在WEB项目的WEB-INF目录下。先来看看我的jboss-web.xml。

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"><jboss-web><virtual-host>WitDomain</virtual-host></jboss-web>

首先我来解释一下这个文件中一些内容的作用。 
这个 http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd 文件中,定义了jboss-web.xml文件中使用的各种节点的名称、节点中可以包括的内容以及数据类型。其实这个文件的版本已经和JBoss 7有差异了,但是自己稍微注意下,还是不影响使用。在这个模板文件中,有jboss-web节点可以包括的内容:

<!ELEMENT jboss-web (class-loading?, security-domain?, context-root?,   virtual-host*, use-session-cookies?, replication-config?, resource-env-ref*,   resource-ref* , ejb-ref* , ejb-local-ref*, depends*)>


大家可以下载看看,在这个DTD文件中,定义了在跟节点 <jboss-web>标签中可以出现零个或多个<Virtual-host>标签(标签后面是*,表示零个或多个),但是如果你真的这样干,重启一下JBoss 7你就会发现报错了。说明在JBoss 7中jboss-web.xml只能包含一个<Virtual-host>标签。

那我的文件中为什么定义的WitDomain,而不是域名?请耐心看完你就知道了。
我的文件中为什么没有定义<context-root>标签?因为根据测试,定义这个标签的目的是让域名映射为某个路径,我不需要,如果是想映射为域名根路径,那么只需要定义

<context-root>/</context-root>

这一句就可以了。关于这句的作用,大家多多尝试,不难的。

关于standalone.xml


1、定义域名映射


下面就是本文的另一个重点,将在此文件中配置域名。主要修改的是<subsystem xmlns="urn:jboss:domain:web:1.0" 这个节点,文件拉到最后。把这个节点的内容修改为

<subsystem xmlns="urn:jboss:domain:web:1.0" default-virtual-server="default-host">    <connector name="http" protocol="HTTP/1.1" socket-binding="http" scheme="http"/>    <virtual-server name="default-host" enable-welcome-root="true">        <alias name="localhost"/>    </virtual-server>    <virtual-server name="WitDomain" default-web-module="ADMMAN">        <alias name="aaa.gicp.net"/>        <alias name="bbb.uicp.cn"/>        <alias name="ccc.uicp.cn"/>        <alias name="wita"/>        <alias name="192.168.0.128"/>    </virtual-server></subsystem>

去掉原有 <virtual-server name="default-host" ... 节点中的 <alias name="example.com"/>。因为我觉得没有必要保留了。

增加了 <virtual-server name="WitDomain" 的部分(同时也说明在该子系统中可以出现多个virtual-server节点),在<alias name节点中定义每个域名,这样就会有三个域名了,后面的两个是因为本地访问不方便,干脆也把服务器的名字和IP定义成了域名,果然就把JBoss 7骗过去了。

重要说明:

<virtual-server name="WitDomain" default-web-module="ADMMAN">

上面这一句中,name的内容要和jboss-web.xml中的<virtual-host>内容完全相同,意思是定义一组域名对应到这个项目。而default-web-module属性则必须是你这个项目的WAR文件的主干文件名,不包括后缀,此属性是必须的,而且在指定后,jboss-web.xml中就不需要指定context-root标签了。

大家对比着看我发的两段xml就会明白了。

2、修改端口和IP(附加的说明)

在standalone.xml中,拉到最下面,你会看到类似这样的内容
    <interfaces>        <interface name="management">            <inet-address value="${jboss.bind.address.management:192.168.0.128}"/>        </interface>        <interface name="public">            <inet-address value="${jboss.bind.address:192.168.0.128}"/>        </interface>    </interfaces>    <socket-binding-group name="standard-sockets" default-interface="public">        <socket-binding name="http" port="8082"/>        <socket-binding name="https" port="8443"/>        <socket-binding name="jmx-connector-registry" port="1090" interface="management"/>        <socket-binding name="jmx-connector-server" port="1091" interface="management"/>        <socket-binding name="jndi" port="1099"/>        <socket-binding name="osgi-http" port="8090" interface="management"/>        <socket-binding name="remoting" port="4447"/>        <socket-binding name="txn-recovery-environment" port="4712"/>        <socket-binding name="txn-status-manager" port="4713"/>    </socket-binding-group>

interface中定义IP,在socket-binding name="http" 中定义常规的端口号。如果在interface标签中,management和public接口定义的IP相同,则可以通过JBoss 7 默认的欢迎页面来访问后台管理。
原创粉丝点击