JBoss AS7 域、部署项目和域名绑定
来源:互联网 发布:windows 补丁清理软件 编辑:程序博客网 时间:2024/06/04 18:05
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
>
这个文件里面有几个部分是值得我们关注一下的:
- 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。
- 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中需要配置的关键内容,已经针对要做的测试做了一些配置上面的修改,以下是详细说明:
- 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上面的配置
- 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端口的管理地址:
1
http://10.0.1.3:9990/console/App.html
可以看到,管理页识别出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 的配置文件,内容如下:
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>
此时即可用 xxx.domain.com 访问
在 Jboss4.2.1 下配置略有不同:
先在项目的 WEB-INF目录下添加一个叫 jboss-web.xml 的配置文件,内容有变:
<jboss-web></jboss-web>
然后在 "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>
此时即可用 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 AS7 域、部署项目和域名绑定
- 在JBoss AS7中进展项目部署
- jboss as7.1 (jsp热部署)
- Tomcat部署web项目绑定域名
- linux 下安装配置jboss as7以及部署应用
- JBoss 4 配置域名绑定
- JBoss AS7 用户指南
- JBoss AS7 用户指南
- [通译]JBoss AS7 用户指南
- jboss as7 JBAS015052
- ubuntu14.04+JBoss AS7
- Jboss As7 设定字符集
- JBoss AS7 快速配置
- jboss-as7 install dcm4chee
- 在Tomcat和JBoss下部署项目
- 在Tomcat和JBoss下部署项目
- 在Tomcat和JBoss下部署项目
- 在Tomcat和JBoss下部署项目
- Dynamics CRM 2011 编程系列(3):JS脚本编程之onsave事件
- UnsupportedClassVersionError的解决
- DataGridView进行添加、修改、删除数据操作-C#
- [Chrome源码阅读] 理解ObserverList类的实现技巧
- 最短路径算法整理
- JBoss AS7 域、部署项目和域名绑定
- HowTomcatWork 笔记 1 Servlet 容器做的3件事情
- Oracle的体系结构(一)概述
- Android自动测试平台工具开发
- Struts简易计算器:页面
- 京东商城的“地下世界”
- Dynamics CRM 2011 集成Sharepoint server 2010 报错“由于Internet Explorer安全设置的原因,无法确定SharePoint的版本”
- 编程之美--寻找发帖水王
- SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)