JBoss AS7 域、部署项目和域名绑定

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上面的配置

  • domain.xml
01 <domain xmlns="urn:jboss:domain:1.0">
02  
03     <extensions>...
04      
05     <system-properties>...
06      
07     <profiles>
08         <profile name="default">...
09          
10         <profile name="ha">...
11     </profiles>
12      
13     <interfaces>...
14          
15     <socket-binding-groups>...
16      
17     <server-groups>
18         <server-group name="main-server-group"profile="default">...
19         <server-group name="other-server-group"profile="ha">...
20     </server-groups>
21      
22 </domain>

这个文件里面有几个部分是值得我们关注一下的:

  1. extensions – 这一部分定义了域中服务器在启动时需要加载的模块。AS7使用了全新设计的JBoss Modules来加载模块,大幅提高了服务器的启动。这一内容不是本文讲解重点,后续我会专门写一篇文章来介绍。目前了解到这一程度即可。
  2. profiles – profiles是domain中定义的一个核心概念,也是domain的核心组成部分。基于profiles,AS7便实现了域中各服务器的统一集中配置:用户可通过profile对各子系统(subsystem)进行配置,完成后将profile配置给某个或多个服务器组,各服务器组内的主机共用一份配置。
  3. server groups – 服务器组的概念已经在前面的介绍中一再提及,也是AS7的域的设计中一个核心组成部分。在这里,AS7默认定义了两个服务器组:main-server-group及other-server-group,它们分别使用’default’ profile及’ha’ profile。在本实验中,我们将使用main-server-group。
  • host.xml
01 <host xmlns="urn:jboss:domain:1.0" name="master">
02  
03     <management>
04         <security-realms>...
05           <management-interfaces>
06           <native-interface interface="management"port="9999" />
07           <http-interface interface="management"port="9990"/>
08        </management-interfaces>
09     </management>
10  
11     <domain-controller>
12        <local/>
13     </domain-controller>
14  
15     <interfaces>
16         <interface name="management">
17             <inet-address value="10.0.1.3"/>
18         </interface>
19         <interface name="public">
20            <inet-address value="10.0.1.3"/>
21         </interface>
22     </interfaces>
23  
24     <jvms>...
25      
26     <servers>
27         <server name="server-one" group="main-server-group">...
28     </servers>
29 </host>

上面是一些host.xml中需要配置的关键内容,已经针对要做的测试做了一些配置上面的修改,以下是详细说明:

  1. host name按照我们的需要改成了"master"。
  2. management – management定义了服务器的管理端口,其中:9999端口是所谓"native"二进制端口,后面的 jboss-admin.sh 管理命令会使用这个端口;9990则提供基于WEB页面的管理端。我们等一下两种管理端口都会用到。
  3. domain controller – 定义本服务器所需连接的domain控制器所在地址,因为master本身就是domain controller,所以连接至本机localhost即可。
  4. interfaces – management及public接口服务所在的地址,我们要将其设为slave可以访问到的IP地址,保证slave可以连接至host
  5. servers – 一个物理主机实际上可以同时运行多台JBoss AS7的Server,而每一台Server都可以配置到不同的服务器组去。在本实验中,我们使用最简的情况,master上面只跑一个server-one,属于main-server-group,把其它AS7默认设定的server可以都删掉,只留server-one。

Slave上面的配置

  • domain.xml

Slave这台机器不作为域控制器而存在,因此不需要管它,也可以将domain.xml删掉或改名。

  • host.xml
01 <host xmlns="urn:jboss:domain:1.0" name="slave">
02  
03     <domain-controller>
04        <remote host="10.0.1.3" port="9999"/>
05     </domain-controller>
06  
07     <interfaces>
08         <interface name="management">
09             <inet-address value="10.0.1.18"/>
10         </interface>
11         <interface name="public">
12            <inet-address value="10.0.1.18"/>
13         </interface>
14     </interfaces>
15  
16     <jvms>...
17      
18     <servers>
19         <server name="server-one" group="main-server-group">...
20     </servers>
21 </host>

上面的配置有几点需要说明:

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

1 ./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 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)
2 {
3     "outcome" => "success",
4     "result" => ["http"]
5 }

可见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)
02 {
03     "outcome" => "success",
04     "result" => {
05         "protocol" => "HTTP/1.1",
06         "scheme" => "http",
07         "socket-binding" => "http",
08         "ssl" => undefined,
09         "virtual-server" => undefined
10     }
11 }

注意到virtual-server的状态是未定义(undefined),我们要想将一个web项目部署进服务器组中的各个host,就必须加载一个待部署的virtual-server,因此我们使用命令来添加:

01 [domain@10.0.1.3:9999 /] /profile=default/subsystem=web/virtual-server=other.com:add  
02 {
03     "outcome" => "success",
04     "result" => {"server-groups" => [("main-server-group" => {
05     "master" => {
06         "host" => "master",
07         "response" => {"outcome" => "success"}
08     },
09     "slave" => {
10         "host" => "slave",
11         "response" => {
12             "outcome" => "success",
13             "result" => undefined
14         }
15     }
16 })]}
17 }

可以看到,我们之前在 domain.xml 中配置的 “other.com” 这个 virtual host被成功添加了。

接下来是部署WEB应用的环节,我们首先用maven制作一个最简单的web项目,仅包含一个欢迎页面:

1 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

生成的项目如下:

1 .
2 |-- pom.xml
3 `-- src
4     `-- main
5         |-- resources
6         `-- webapp
7             |-- WEB-INF
8             |   `-- web.xml
9             `-- index.jsp

使用如下命令将项目打成WAR包:

1 mvn package

得到war:

1 target
2 `-- my-webapp.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 AS71 :

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

生成的项目如下:

1 .
2 |-- pom.xml
3 `-- src
4     `-- main
5         |-- resources
6         `-- webapp
7             |-- WEB-INF
8             |   `-- web.xml
9             `-- index.jsp

使用如下命令将项目打成WAR包:

1 mvn package

得到war:

1 target
2 `-- my-webapp.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
4 data          lib           tmp
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 3 。这个文件位于刚才提到的 /standalone/configuration 目录当中,详细讲解这个配置文件也不是这篇文章要关注的地方,因此我们只需要了解一下这个配置文件中,与部署有关的这段内容4 :

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"/>
4 </subsystem>

可以看到,配置中指定 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)
02 {
03     "outcome" => "success",
04     "result" => {"scanner" => {"default" => {
05         "auto-deploy-exploded" => false,
06         "auto-deploy-zipped" => true,
07         "deployment-timeout" => 60L,
08         "name" => "default",
09         "path" => "deployments",
10         "relative-to" => "jboss.server.base.dir",
11         "scan-enabled" => true,
12         "scan-interval" => 5000
13     }}}
14 }

如上所示,和配置文件中对应的配置是一致的。我们可以移除这个自动扫描的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)
2 {
3     "outcome" => "success",
4     "result" => {"scanner" => undefined}
5 }

自动部署用的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工程,使用到了上面的所有框架,我们把它直接拿过来用2 ,使用下面的命令来创建这个项目:

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的项目部署方面。总之,现在给这个项目进行打包:

1 mvn package

需要特别注意的是,编译这个项目需要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">
2             <datasources>
3                 <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS"enabled="true" jta="true" use-java-context="true" use-ccm="true">
4 ...
5                 </datasource>
6             </datasources>
7         </subsystem>

可以看到,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更为深入的学习和使用。

备注

1 JBoss AS7 包含standalone及domain两种运行方式。有关JBoss AS7的domain运行方式,请参考蓝点上面的这篇文章: JBoss AS7中的新概念-域

2 关于这个项目的详细说明,请参考蓝点上面的另一篇文章: J2EE入门

3 domain运行模式下面的配置模式有所不同,请参考这篇文章: JBoss AS7中的新概念-域

4 如果要对AS7的部署进行更深入的了解和学习,需要参考AS7的管理员手册的相关章节:https://docs.jboss.org/author/display/AS7/Admin+Guide#AdminGuide-DeploymentScanner


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 可在域名后追加.


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值