JBoss AS7新加入了域(domain)的概念并实现了相关功能。域的提出及实现,其目的是使得多台JBoss AS服务器的配置可以集中于一点,统一配置、统一部署,从而在管理多台JBoss AS服务器时,实现集中管理。本文详细介绍如何使用AS7的这一新特性。
域(Domain)的概念及其与群集(Cluster)的区别
对于使用过JBoss AS过往版本的用户,可能对AS所提供的群集功能已经很熟悉了,在理解域的时候可能会遇到困难。那么域和群集有什么区别,用处上有什么不同呢?
总的来讲,JBoss的群集的目的是提供:
- 负载平衡(Load Balance)
- 高可用(High Availablity)
而域的目的则是将多台服务器组成一个服务器组(Server Group),并为一个服务器组内的多台主机(Host)提供:
- 单点集中配置(通过一个域控制器,即Domain Controller,实现组内主机的统一配置)
- 单点统一部署,通过域控制器将项目一次部署至组内全部主机。
简单来讲,群集的目标是让多台服务器分摊压力,当一台或多台服务器当机时,服务可以继续保持运转;而域的目标则是提供集中配置和管理多台服务器的能力。
在没有域的概念时,要想让群集内的多台服务器或几组服务器保持统一的配置,一个一个分别的去手工维护,是非常麻烦的事情,而域的引入解决了这一问题。
我们可以理解域和群集的相互关系是"正交(orthogonal)"的:通过一横一竖这两条轴,JBoss AS为我们在运维方面提供了强大的可扩展能力。
实验
熟悉了AS7中Domain的设计理念,接下来动手实际做个实验,看看Domain是如何在AS7中工作的。
准备工作
使用两台电脑做为实验器材,两台电脑的IP分别为 10.0.1.3
及 10.0.1.18
,分别运行JBoss AS7,并组成一个服务器组(Server Group)。其中,使用 10.0.1.3
这台机器做为域控制器(Domain Controller):

如上图所示,两台主机分别被命名为”master“及”slave“。通过配置,将master与slave组成一个服务器组,名为’main-server-group’,其中master将做为这个服务器组的域控制器。
需要说明一点的是,服务器组(Server Group)可以由多台服务器(Host)组成,并不一定只有两台,所以不要被master及slave这样的名字给迷惑了,以为一个服务器组仅支持一主一从两台hosts。
本文中因为只使用两台服务器做为实验器材,因此出于方便角度将它们分别命名为master及slave。
此外,在一个服务器组中,只有一台域控制器,在本实验中我们将使用master这台机器做为domain controller。
配置
AS7由于经过了重新设计,因此在目录结构与配置文件上面与前一版本有了很大不同,对于熟悉了对AS6的配置和的人来讲,使用AS7会接触不少新概念和新思路。为了清楚表达,我会将一些与AS6及以前版本不同的地方做出必要的说明。
首先是bin目录中的内容:
1 | liweinan@mg:~/projs/jboss-7.0.0.CR1/bin$ ls |
2 | domain.bat jboss-admin.bat standalone.conf wsconsume.sh |
3 | domain.conf jboss-admin.sh standalone.conf.bat wsprovide.bat |
4 | domain.conf.bat scripts standalone.sh wsprovide.sh |
5 | domain.sh standalone.bat wsconsume.bat |
在AS7以前版本中,用来启动JBoss服务的 run.sh
不见了,取而代之的是 standalone.sh
(独立运行模式)及 domain.sh
(域运行模式)。我们稍后将使用 domain.sh
来运行JBoss AS7,但首先要将两台hosts配置好,接下来讲解两台服务器的配置:
AS7的目录结构和前一版本有很大不同,因为配置文件及其所在位置也有很大变动,下面是AS7的目录结构:
1 | bin docs jboss-modules.jar standalone |
2 | bundles domain modules welcome-content |
可以看到有一个名为"domain"的目录,看一下这个domain目录里面的内容:
1 | configuration content lib log servers |
这个目录中包含了AS7运行在domain模式下所需的配置及内容,其中名为“configuration”的目录里面含有我们所需要的配置文件:
1 | liweinan@mba:~/projs/jboss-7.0.0.CR1/domain/configuration$ ls |
2 | domain-preview.xml host.xml mgmt- users .properties |
3 | domain.xml host_xml_history |
4 | domain_xml_history logging.properties |
其中 domain.xml
和 host.xml
是我们需要关注的内容。我们需要对master及slave上面的配置文件分别进行配置:

从上图中可以看到,master的JBoss AS中需要配置 domain.xml
及 host.xml
两个文件,其中 domain.xml
是做为域控制器必须配置的内容, host.xml
则是master及slave各自的JBoss AS都需要配置的文件。我们先从master上面的配置看起:
Master上面的配置
01 | < domain xmlns = "urn:jboss:domain:1.0" > |
05 | < system-properties >... |
08 | < profile name = "default" >... |
10 | < profile name = "ha" >... |
15 | < socket-binding-groups >... |
18 | < server-group name = "main-server-group" profile = "default" >... |
19 | < server-group name = "other-server-group" profile = "ha" >... |
这个文件里面有几个部分是值得我们关注一下的:
- extensions – 这一部分定义了域中服务器在启动时需要加载的模块。AS7使用了全新设计的JBoss Modules来加载模块,大幅提高了服务器的启动。这一内容不是本文讲解重点,后续我会专门写一篇文章来介绍。目前了解到这一程度即可。
- profiles – profiles是domain中定义的一个核心概念,也是domain的核心组成部分。基于profiles,AS7便实现了域中各服务器的统一集中配置:用户可通过profile对各子系统(subsystem)进行配置,完成后将profile配置给某个或多个服务器组,各服务器组内的主机共用一份配置。
- server groups – 服务器组的概念已经在前面的介绍中一再提及,也是AS7的域的设计中一个核心组成部分。在这里,AS7默认定义了两个服务器组:main-server-group及other-server-group,它们分别使用’default’ profile及’ha’ profile。在本实验中,我们将使用main-server-group。
01 | < host xmlns = "urn:jboss:domain:1.0" name = "master" > |
05 | < management-interfaces > |
06 | < native-interface interface = "management" port = "9999" /> |
07 | < http-interface interface = "management" port = "9990" /> |
08 | </ management-interfaces > |
16 | < interface name = "management" > |
17 | < inet-address value = "10.0.1.3" /> |
19 | < interface name = "public" > |
20 | < inet-address value = "10.0.1.3" /> |
27 | < server name = "server-one" group = "main-server-group" >... |
上面是一些host.xml中需要配置的关键内容,已经针对要做的测试做了一些配置上面的修改,以下是详细说明:
- host name按照我们的需要改成了"master"。
- management – management定义了服务器的管理端口,其中:9999端口是所谓"native"二进制端口,后面的
jboss-admin.sh
管理命令会使用这个端口;9990则提供基于WEB页面的管理端。我们等一下两种管理端口都会用到。 - domain controller – 定义本服务器所需连接的domain控制器所在地址,因为master本身就是domain controller,所以连接至本机localhost即可。
- interfaces – management及public接口服务所在的地址,我们要将其设为slave可以访问到的IP地址,保证slave可以连接至host
- servers – 一个物理主机实际上可以同时运行多台JBoss AS7的Server,而每一台Server都可以配置到不同的服务器组去。在本实验中,我们使用最简的情况,master上面只跑一个server-one,属于main-server-group,把其它AS7默认设定的server可以都删掉,只留server-one。
Slave上面的配置
Slave这台机器不作为域控制器而存在,因此不需要管它,也可以将domain.xml删掉或改名。
01 | < host xmlns = "urn:jboss:domain:1.0" name = "slave" > |
04 | < remote host = "10.0.1.3" port = "9999" /> |
08 | < interface name = "management" > |
09 | < inet-address value = "10.0.1.18" /> |
11 | < interface name = "public" > |
12 | < inet-address value = "10.0.1.18" /> |
19 | < server name = "server-one" group = "main-server-group" >... |
上面的配置有几点需要说明:
- slave里面,host name指定为"slave"。
- domain-controller:指定为master的IP:10.0.1.3,通过9999管理端口进行通讯。
- slave上面,属于main-server-group的server也命名为"server-one",这会和master上面的server冲突吗?实际上不会,因为两台同样名字的server运行在不同的host当中。
部署
配置完成后,接下来便到了实际部署的阶段,我们将master和slave上面的AS7分别用domain.sh
启动起来。
1 | [Server:server-one] 21:17:14,491 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.CR1 "White Rabbit" started in 6029ms - Started 109 of 163 services (54 services are passive or on-demand) |
2 | [Host Controller] 21:18:02,635 INFO [org.jboss.domain] (pool-3-thread-1) Registered remote slave host slave |
启动成功的话,应该可以在master上面看到上面的日志,slave被成功的注册进来。
完成启动后,我们需要将待使用的virtual-host启动起来,当AS7以domain的方式启动时,默认是不启动任何virtual server的(在我目前使用的7.0.0 CR1 White Rabbit版本中是这样),我们可以在 domain.xml
中配置默认加载virtual-host,也可以在服务器运行起来后,使用管理端命令动态的加载,在这里我准备使用后一种方式,从而讲解AS7管理端的使用方法。
在AS7的bin目录下面有一个 jboss-admin.sh
, 这是AS7提供的全新的管理工具,我们使用这个工具,连接至master:
2 | You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands. |
3 | [disconnected /] connect 10.0.1.3 |
4 | Connected to domain controller at 10.0.1.3:9999 |
可以看到,我们已经连接到了master的9999管理端口。接下来可以查看"default"这个profile当中的web模块的运行情况:
1 | [domain@10.0.1.3:9999 /] /profile=default/subsystem=web: read -children-names(child- type =connector) |
3 | "outcome" => "success" , |
可见http服务器已经启动,由于我们的"main-server-group"使用的是default这个profile,因此,服务器组中的两台host的web模块接受profile的统一配置,都是已启动的。继续看一下web模块中的细节:
01 | [domain@10.0.1.3:9999 /] /profile=default/subsystem=web/connector=http: read -resource(recursive= true ) |
03 | "outcome" => "success" , |
05 | "protocol" => "HTTP/1.1" , |
07 | "socket-binding" => "http" , |
09 | "virtual-server" => undefined |
注意到virtual-server的状态是未定义(undefined),我们要想将一个web项目部署进服务器组中的各个host,就必须加载一个待部署的virtual-server,因此我们使用命令来添加:
01 | [domain@10.0.1.3:9999 /] /profile=default/subsystem=web/virtual-server=other.com:add |
03 | "outcome" => "success" , |
04 | "result" => { "server-groups" => [( "main-server-group" => { |
07 | "response" => { "outcome" => "success" } |
12 | "outcome" => "success" , |
可以看到,我们之前在 domain.xml
中配置的 “other.com” 这个 virtual host被成功添加了。
接下来是部署WEB应用的环节,我们首先用maven制作一个最简单的web项目,仅包含一个欢迎页面:
1 | mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp |
生成的项目如下:
使用如下命令将项目打成WAR包:
得到war:
接下来是部署这个war包,对于本次实验来讲,关键的部分在于能否通过domain提供的server group管理功能,一次将一个项目部署进server group中的多台服务器。我们接下来就验证这点,顺便看下AS7提供的WEB管理功能,打开WEB浏览器,访问master的HTTP端口的管理地址:
可以看到,管理页识别出AS7正运行在domain模式之下,并且目前共有两台主机运行(左上角的列表分别列有master及slave)。我们要关注的是server-group:点击右上角的"Server Groups",进入服务器组的管理页面,然后点击左边的"Manage Deployments"页面,进入部署功能页面:

可以看到,目前还没有任何资源被加至服务器组,此时点击右边的"Add Content"功能,将 my-webpp.war
添加进Content Repository(域控制器用于保存待部署资源的目录)。
添加完成后如下图所示:

然后点击"Add To Group"将 my-webapp.war
添加至 “main-server-group”,并将其enable,一切顺利的话结果如下所示:

此时我们预期的结果应该是 my-webapp.war
被同时部署至master及slave了,分别试着访问master及slave的http资源,看看是否都存在于my-webapp这个应用了:

结果如我们所预期的那样,两台服务器都可以访问到这个部署的资源。通过对一个点(Domain Controller)的配置与部署,我们实现了多AS7服务器的集中管理。
小结
通过域这个概念,实现了多服务器统一管理,统一配置,资源统一部署的目标。通过集中管理,我们可以在此基础上再进行群集的划分与部署,实现群集内多台服务器的单点配置与管理。可以说AS7的Domain概念的引入,与群集的概念组合在一起,通过一横一从两条轴,形成了完整的坐标系。
AS7的项目部署方式与原有版本相比有了较大变化,本文通过实例来讲解AS7中的项目部署方式。
有关JBoss AS7的下载和安装,请参考蓝点上面的另一篇文章: JBoss AS7 快速上手
部署一个简单的Web项目
下载安装完成后,我们用standalone方式来启动JBoss AS7 :
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/bin$ ./standalone.sh |
启动后,我们试着向AS7中部署一个简单的项目。首先使用Maven来创建一个简单的Web工程:
1 | mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp |
生成的项目如下:
使用如下命令将项目打成WAR包:
得到war:
接下来,我们将这个war部署进AS7。在AS7的根目录下,有一个名为’standalone’的目录,当AS7以standalone模式运行时,我们要将项目部署到这里面,进入到standalone目录:
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1$ cd standalone |
2 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone$ ls |
3 | configuration deployments log |
5 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone$ |
standalone目录中包含许多运行所需的内容,比如’configuration’目录包含了服务器的有关配置,我们稍后会进行说明。现在我们要关心的是’deployments’目录,我们要将需要部署的项目放在这里,JBoss AS7会自动扫描这个目录并进行部署。我们将刚刚制作好的 my-webapp.war
拷贝至deployments目录:
1 | liweinan@smart:~/projs/my-webapp/target$ cp my-webapp.war ~/projs/jboss-7.0.0.CR1/standalone/deployments/ |
此时查看AS7的日志输出:
1 | 16:12:33,822 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) Starting deployment of "my-webapp.war" |
2 | 16:12:36,616 INFO [org.jboss.web] (MSC service thread 1-4) registering web context: /my-webapp |
3 | 16:12:36,740 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "my-webapp.war" |
从日志中可以看出,项目被成功地部署进了AS7。我们试着访问下已部署的服务:

AS7中项目的自动部署及手工部署
我们在上一节通过将项目拷贝至deployments目录,就实现了AS7对项目的自动扫描及自动部署。实际上AS7还支持手工的部署模式,这样,我们就可以控制项目的部署及启动时机。配置AS7的部署模式有两种方式:一个是通过在配置文件指定,另一个是在AS7运行时,通过管理端来进行实时的配置。
我们首先来看一下配置文件中的内容,JBoss AS7相对以前版本比较,大大简化了精减了配置文件的数量。原来的 *-ds.xml
等数据库的配置文件,都被合并至了统一的配置文件: standalone.xml
。这个文件位于刚才提到的 /standalone/configuration
目录当中,详细讲解这个配置文件也不是这篇文章要关注的地方,因此我们只需要了解一下这个配置文件中,与部署有关的这段内容 :
1 | < subsystem xmlns = "urn:jboss:domain:deployment-scanner:1.0" > |
2 | < deployment-scanner scan-interval = "5000" |
3 | relative-to = "jboss.server.base.dir" path = "deployments" /> |
可以看到,配置中指定 deployment-scanner
去扫描deployments目录,扫描间隔为5秒钟。
除了在配置文件中进行配置,我们也可以在AS7实时运行时,通过管理端来改变AS7的部署方式。首先是登录到管理端,使用AS7中bin目录中带有的管理端连接程序 jboss-admin.sh
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/bin$ ./jboss-admin.sh |
2 | You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands. |
3 | [disconnected /] connect 127.0.0.1 |
4 | Connected to standalone controller at 127.0.0.1:9999 |
5 | [standalone@127.0.0.1:9999 /] |
连接成功后,我们可以查看当前的scanner配置:
01 | [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner: read -resource(recursive= true ) |
03 | "outcome" => "success" , |
04 | "result" => { "scanner" => { "default" => { |
05 | "auto-deploy-exploded" => false , |
06 | "auto-deploy-zipped" => true , |
07 | "deployment-timeout" => 60L, |
09 | "path" => "deployments" , |
10 | "relative-to" => "jboss.server.base.dir" , |
11 | "scan-enabled" => true , |
12 | "scan-interval" => 5000 |
如上所示,和配置文件中对应的配置是一致的。我们可以移除这个自动扫描的scanner:
1 | [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner/scanner=default:remove |
2 | { "outcome" => "success" } |
此时再次查看:
1 | [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner: read -resource(recursive= true ) |
3 | "outcome" => "success" , |
4 | "result" => { "scanner" => undefined} |
自动部署用的scanner已经被移除了。此时,我们将只可以用命令来手工部署所需项目,下面是手工部署的命令:
1 | [standalone@127.0.0.1:9999 /] deploy /Users/liweinan/projs/my-webapp/target/my-webapp.war |
2 | 'my-webapp.war' deployed successfully. |
实验完成后,我们将刚刚移除的自动部署扫描器恢复回来:
1 | [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner/scanner=default:add(scan-interval=5000,relative-to= "jboss.server.base.dir" ,path= "deployments" ) |
2 | { "outcome" => "success" } |
这样,AS7又可以自动扫描deployments目录下面的项目,并进行自动部署了。实际上,AS7支持用户添加多个scanner,每一个scanner都可以独立配置,扫描不同的目录,设置不同的扫描间隔。通过上面的命令举一反三即可按照实际需求进行配置。
在AS7中部署一个J2EE项目
接下来我们试着将一个完整的J2EE项目部署进AS7,这个项目包括:
- 数据层,使用Hibernate及JPA Annotation来建模,后面连接AS7的数据源
- 逻辑层,使用JBoss Seam,EJB3来实现
- 表现层:使用JSF
- WebService:使用RESTEasy来实现
上面所使用的Hibernate, Seam,RESTEasy等模块,都是AS7中的默认配置,不需要额外进行配置,因此我们使用这样的一种技术架构。这个项目看起来用了不少东西,似乎很复杂,其实JBoss社区已经给我们做好了一个demo工程,使用到了上面的所有框架,我们把它直接拿过来用 ,使用下面的命令来创建这个项目:
1 | mvn archetype:generate -DarchetypeArtifactId=jboss-javaee6-webapp -DarchetypeGroupId=org.jboss.weld.archetypes -DarchetypeVersion=1.0.1.Beta1 -DgroupId=net.bluedash -DartifactId=demo -Dversion=1.0-SNAPSHOT |
有关这个项目的详细解说,在此就不展开了,Weld、EJB3、Hibernate的使用并不是本文的重点,我们仍然把注意力放在AS7的项目部署方面。总之,现在给这个项目进行打包:
需要特别注意的是,编译这个项目需要Maven的版本至少在3.0以上,2.x是无法正确编译的,如果你的Maven版本过低,要注意更新版本至Maven 3。
打包完成后,我们将项目拷贝至deployments目录进行自动部署:
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ cp /Users/liweinan/projs/demo/target/demo.war . |
此时服务器日志输出如下:
1 | 19:31:32,574 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) Service status report |
2 | New missing/unsatisfied dependencies: |
3 | service jboss.naming.context.java.jdbc/__default (missing) |
服务器报错说没有找到 __default
这个数据源。这是由于我们在项目中没有使用AS7中存在的数据源造成的。我们首先要知道AS7中的数据源配置在哪里,在上一节我们已经了解到,当服务器运行于standalone模式的时候,大部分的配置集中保存在standalone/configuration/standalone.xml
当中,我们打开这个文件,看一下数据源配置方面的内容:
1 | < subsystem xmlns = "urn:jboss:domain:datasources:1.0" > |
3 | < datasource jndi-name = "java:jboss/datasources/ExampleDS" pool-name = "H2DS" enabled = "true" jta = "true" use-java-context = "true" use-ccm = "true" > |
可以看到,AS7默认自带了一个数据源,绑定在 java:jboss/datasources/ExampleDS
这个JNDI名称之上,我们要在demo项目中使用这个数据源。打开demo项目中的数据源配置文件:
1 | liweinan@smart:~/projs/demo$ vi src/main/resources/META-INF/persistence.xml |
将其中的JNDI数据源配置内容:
1 | < jta-data-source >jdbc/__default</ jta-data-source > |
修改成AS7中提供给我们的数据源:
1 | < jta-data-source >java:jboss/datasources/ExampleDS</ jta-data-source > |
保存后,使用 mvn package
命令将项目重新打包,然后将新的项目的war拷贝到AS7的deployments目录。但是在拷贝之间请稍等一下!我们看一下目前deployments目录中的内容:
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ ls |
2 | README.txt demo.war demo.war.failed |
可以看到,此时deployments目录中有一个 demo.war.failed
文件,这个文件被称为 “Mark File”,即标记文件,它的文件名与项目文件名相同,但同时带有一个后缀。AS7用这样的Mark File来完成两个任务,一个是表示待部署项目的状态,另一个是在自动部署的基础上,给用户提供一些手工控制部署的能力。此时的 demo.war.failed
这个Mark File显然是表示状态的, failed
说明 demo.war
刚刚部署失败的情况。
理解了Mark File,我们可以将新的war拷贝至 deployments
目录了:
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ cp /Users/liweinan/projs/demo/target/demo.war . |
拷贝完成后,就把deployments目录里面之前有问题的 demo.war
给覆盖掉了。此时AS7是不会自动重新部署这个项目的,这是出于可靠性考虑,AS7不会未经用户明确指定,就把一个已有的同名项目的部署状态覆盖掉,即使它是部署失败的。此时我们就要用Mark File来控制AS7的部署了,我们建立一个名为 demo.war.dodeply
的空文件,使AS7重新部署demo.war
这个项目:
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ touch demo.war.dodeploy |
此时,AS7便开始重新部署项目了。如果你的手足够快,此时看一下 deployments
中的内容
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ ls |
2 | README.txt demo.war.dodeploy demo.war.isdeploying |
3 | demo.war demo.war.failed |
会发现多出一个 demo.war.isdeploying
,表明项目正在部署。等部署完成后,deployments目录中的内容就变成了:
1 | liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ ls |
2 | README.txt demo.war demo.war.deployed |
这样,新的项目便部署完成了,如果没有操作上的失误的话,这个项目已经可以可以访问到了:

小结
本文讲解了AS7下面的自动部署、手工部署的方法,同时讲解了管理端下面与部署相关的一些命令,以及 standalone.xml
配置文件中的一些内容;最后,我们讲解了Mark File的使用方法。希望通过本文,可以帮助大家进行AS7更为深入的学习和使用。
备注
Jboss 虚拟主机设置
1. www.domain.com 型
Jboss4.0.3 和 Jboss4.2.1 下相同,只需在项目的 WEB-INF目录下添加一个叫 jboss-web.xml 的配置文件,内容如下:
java 代码
- <?xml version="1.0"?>
- <!DOCTYPE jboss-web>
-
- <jboss-web>
- <context-root>/</context-root>
- <virtual-host>www.domain.com</virtual-host>
- </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 代码
- <Host name="abc.abc.com" >
- <Alias>xxx.domain.comAlias>
- <Alias>www.domain.comAlias>
-
- >
此时即可用 xxx.domain.com 访问
在 Jboss4.2.1 下配置略有不同:
先在项目的 WEB-INF目录下添加一个叫 jboss-web.xml 的配置文件,内容有变:
<jboss-web></jboss-web>
xml 代码
-
<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 代码
- <Host name="abc.abc.com" >
- <Alias>xxx.domain.comAlias>
- >
此时即可用 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 可在域名后追加.