作者:MinUnix  原文出处:http://www.minunix.com/2013/08/jboss-as7-01/  如需转载请注明出处!

 文档下载:http://www.minunix.com/docs/document/JBoss_AS7.pdf

    本文介绍了JBoss AS7 的新特性、部署和管理的基础知识,通过本文的学习,开发者可以快速地了解和使用JBoss 7。 笔者也和您一样,是初学者,文档尚存在不足之处,如果发现有错误的地方,还请您指出,我会更新文档,如果有人转载,请注明出处!谢谢!!

一、    JBoss AS7 介绍
1)、简介
JBoss是全世界开发者共同努力的成果,一个免费的,基于J2EE的开放源代码应用服务器。 通过LGPL许可证进行发布, JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
2)、JBoss 优点:
免费;所需的内存和磁盘空间较小;安装便捷;支持热部署;
3)、JBoss AS7的新特性:
JBoss AS7 可实现为云做好准备的架构,并可使启动时间缩短十倍,提供更快的部署速度并降低内在的占用。
JBoss AS7 新加入了域(domain )的概念并实现了相关功能。域的提出及实现,其目的是使得多台JBoss AS服务器的配置可以集中于一点,统一配置、统一部署,从而在管理多台JBoss AS服务器时,实现集中管理。
JBoss7中有两种启动方式:standalone和domain。
在启动domain的时候,会在系统中启动5个进程:3个JBoss AS Server的实例;1个Domain Controller(Domain控制器)进程,这个进程用来集中控制所有属于这个"domain"的server;和一个轻量的Process Controller,负责管理其他的4个进程并监听它们的生命周期。
采用standalone模式会在系统中启动一个进程, 一个单个的 JBoss AS server 的实例。4)、下载地址:
http://www.jboss.org/jbossas/downloads
5)、Tomcat、JBoss、WebLogic区别
Tomcat :应用比较广泛的web服务器,支持部分J2EE,免费,没有可扩展性,不支持分布式,不支持EJB,不支持管理等
JBoss :开源免费的应用服务器,实现了EJB容器,同时内嵌Tomcat,含有Jsp和Servlet容器,既可以做web服务器,也可以做应用服务器,其它优点上文已介绍。
WebLogic :用于开发、集成、部署和管理大型分布式的Java应用服务器,具有无限的可扩展性,领先的标准,快速开发,部署灵活,可靠性高,但是需要Money滴。。。

二、    JBoss 目录结构介绍:

在配置,启动前,先来了解下JBoss AS7 的目录结构,AS7和之前的版本在目录上面做了很大的变动。
主目录:

目录

描述

bin Unix和win环境下的启动脚本和启动配置文件
bundles 存放OSGI bundle
docs/schema 存放XML schema定义文件
domain domain模式的配置文件、部署内容和可写区域等
modules 存放各种模块,AS7是基于模块化的类加载架构
standalone standalone模式的配置文件,部署内容和可写区域等
welcome-content 欢迎页面

standalone目录结构:

目录 描述
configuration standalone模式的配置文件
data 服务器写入的持久化信息,如通过web管理控制台或CLI部署的项目存放在content目录下
deployments 用户部署内容存放目录,服务器运行时能自动侦测和部署这些内容。
lib/ext 利用扩展列表机制安装的library jar的存放位置
log 日志文件
tmp 临时文件

domain目录结构:

目录 描述
configuration domain模式的所有配置文件
data/content 主机控制器内部工作区。内部存储部署内容的地方,用户不能操作这个目录,注:域模式不支持扫描文件系统来部署内容
lib/ext 利用扩展列表机制安装的library jar的存放位置
log 日志文件
servers 应用服务器实例可写区域,每一个应用服务器实例都有它自己的目录,当服务器第一次启动时创建。在每个服务器的目录内包含以下的子目录:

data  服务器写入信息区

log   日志文件

tmp  临时文件

 

三、    部署JBoss:
1. 下载JBoss
# mkdir  -p  /tmp/src && cd  /tmp/src
下载地址:http://www.jboss.org/jbossas/downloads
2. 解压:
# unzip  jboss-***.zip
# mv  jboss-*** /usr/local/jboss
# chmod  +x  /usr/local/jboss/bin/*.sh
3. 启动与停止
# sh  /usr/local/jboss/bin/standalone.sh   \\ (注: jboss 启动的时候是在前台运行)
停止的时候可直接在前台按CTRL+C 结束当前程序;
亦或通过命令结束
# sh /usr/local/jboss/bin/jboss-cli.sh  --connect command=:shutdown
4. 访问JBoss :
jboss默认Web服务端口为8080,且默认情况下只能通过127.0.0.1 或者localhsot来访问,不能通过本机所配的IP来访问
访问地址为:http://127.0.0.1:8080/
5. 添加JBoss Web管理用户
JBoss支持通过web方式来管理及部署项目,前提需要添加一个管理员用户
# sh  /usr/local/jboss/bin/add-user.sh
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a):
Enter the details of the new user to add.
Realm (ManagementRealm) :
Username : minunix
Password :      \\ 密码有强烈要求安全性
Re-enter Password :
About to add user 'minunix' for realm 'ManagementRealm'
之后输入两个yes即可添加完成!
JBoss 默认web管理端口为9990,之后可通过http://127.0.0.1:9990进行访问管理
具体web配置暂不介绍,有兴趣的童鞋可以自己去揣摩下!
作者:MinUnix  原文出处:http://www.minunix.com/2013/08/jboss-as7-01/  如需转载请注明出处!

四、    配置JBoss

1. 配置本机所配置IP访问
因默认情况下,jboss仅可通过127.0.0.1和localhost来访问,若想要通过本机配置所有IP可访问的需要做以下配置:
standalone 模式:当JBoss服务以standalone模式运行的时候有以下几种方法来修改配置文件可以成功完成本机所配置的IP可以访问:均修改standalone.xml文件实现
1.) 修改接口绑定地址, 仅指定本地其中一个ip可以访问
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
修改为:
<interface name="public">
<inet-address value="${jboss.bind.address:192.168.0.3}"/>
</interface>
2.) 修改接口绑定地址, 设置可通过本机所有IP都可访问
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
修改为:
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
3.) 设置通过本机所有IP都可以访问还有另外一种方法:
在最后一个</interfaces> 标签的前面插入以下内容:

<interface name=”any”>
<any-ipv4-address />
</interface>
同时还需要修改下面内容
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
将上面一行中的public修改为any即可; eg:
<socket-binding-group name="standard-sockets" default-interface="any" port-offset="${jboss.socket.binding.port-offset:0}">
domain 模式:
修改方法类似,只是修改的文件不一样而已
编辑 domain/configuration/host.xml文件:
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
修改为:
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
将127.0.0.1 修改为0.0.0.0 或者仅绑定某一个IP

2. 配置访问端口
standalone 模式:
JBoss 默认http 的web端口为8080
<socket-binding name="http" port="8080"/>
修改为:
<socket-binding name="http" port="80"/>
端口是根据设置的基准值+偏移量得到的,默认的偏移量为0,所以访问的端口为8080
<socket-binding-group name="standard-sockets" default-interface="any" port-offset="${jboss.socket.binding.port-offset:0}">
假如修改为:
<socket-binding-group name="standard-sockets" default-interface="any" port-offset="${jboss.socket.binding.port-offset:10}">
那么根据修改后的偏移量,得到新的访问端口为8090, 访问http://192.168.0.3:8090
domain 模式:若作此模式运行时想要修改访问的端口,需要修改domain.xml
在domain.xml文件中有standard-sockets、ha-sockets、full-sockets、full-ha-sockets、四种组类型,至于domain会调用哪个取决于domain.xml文件最后面的配置:
<server-group name="main-server-group" profile="full">
<jvm name="default">
<heap size="1303m" max-size="1303m"/>
<permgen max-size="256m"/>
</jvm>
<socket-binding-group ref="full-sockets"/>
</server-group>
注意上文中的红色字体,profile=” ” 和 <socket-binding-group ref=” ”/> 表示domain模式中所调用的一些列的端口,默认情况下是调用的
<socket-binding-group name="full-sockets" default-interface="public">
........
</socket-binding-group>
中的端口信息,即修改此段配置中的
<socket-binding name="http" port="8080"/>
修改为:<socket-binding name="http" port="80"/>即可
3. 修改URI编码:
在standalone.xml 文件中 的<extensions>.....</extensions>节点之后插入以下内容
<system-properties>
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property  name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING"  value="true"/>
</system-properties>

注:本文暂做以上简单修改,更多修改可参加官网或者

五、   JBoss部署项目
用户可以将部署内容(war、ear、jar、sar等)放在standalone/deployments目录内,JBoss运行时会自动部署到服务器上,这也是开发时常采用的方式。
部署模式:
1. 自动部署:
扫描器直接监控部署内容,自动部署新的内容。在standalone.xml中与自动部署有关的内容:
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
</subsystem>
由以上配置中可以看出JBoss会每隔5秒钟去扫描deployments目录(当JBoss以standalone模式运行的时候),您也可以将自动扫描的路径更改为别的地方,同时,您也可以配置多个自动扫描的路径。
由此,只需要把项目包放到所扫描的目录,之后系统会自动部署,部署好了之后会生成一个内容为***.war的***.war.deployed文件
项目在部署时会有以下几种标记文件:
标记文件与相关的部署内容同名,只是附加了一个后缀名。不同的后缀名表明不同的意义。
.dodeploy          由用户放置,表明内容应该被部署或重新部署到运行时
.skipdeploy       只要这个文件存在, 禁用自动部署.
.isdeploying      部署扫描服务放置,表明它已经注意到一个. dodeploy文件,正处在部署内容的过程中,当部署完成后,将自动删除这个文件。
.deployed          部署扫描服务放置,表明内容已经被部署到运行时,如果删除此文件将取消部署。
.failed       部署扫描服务放置,表明部署失败,
.isundeploying   部署扫描服务放置,表明它已经注意到一个.deployed文件已经被删除,正在取消部署内容。执行完毕后这个文件也会被删除。
.undeployed     部署扫描服务放置,表明内容已经村运行时删除,如果用户删除这个文件,在手动模式下不会造成影响,自动模式下会重新部署。
.pending  部署扫描服务放置,表明它已经注意到要部署内容,但尚未通知服务器部署,如果扫描器检测到一些自动部署内容仍在复制过程中,或者存在一些阻止自动部署的问题,将创建这个文件。只要这个条件成立,扫描器不会通知服务器部署或取消部署任何内容。
2. 手动部署:
可通过自己手动创建文件来部署新的项目,如:
拷贝一个test.war的项目包到deployment目录下,之后手动创建一个文件内容为test.war的文件名为test.war.deployed的文件,之后便可访问地址http://127.0.0.1/test
您也可以拷贝一个展开的项目放到deployment目录下面,但要确保项目目录名后缀为.war之类的文件目录,如:把test.war项目展开到test目录,需要把test目录拷贝到deployment目录下,同时更改名字为test.war,同样之后创建一个文件内容为test.war的test.war.deployed的文件即可。

六、    配置域名直接访问:
部署JBoss的时候,默认情况下访问是需要加项目名字才可以访问的,但是更多的时候我们是直接通过域名或者IP来访问的,而不会加项目名的。
配置域名访问需要在项目下面创建一个WEB-INF的目录,在其下面创建一个名字为jboss-web.xml的配置文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web>
<jboss-web>
<context-root>/</context-root>
<virtual-host>localhost</virtual-host>
</jboss-web>
之后在standalone.xml文件中含有virtual-server的subsystem标签中添加以下内容:
<virtual-server name="localhost" default-web-module="minunix">
<alias name="www.minunix.com"/>
</virtual-server>
注:jboss-web.xml中virtual-host的值与standalone.xml中的virtual-server name要确保一致,否则会出错,之后便可以通过www.minunix.com来访问项目

作者:MinUnix  原文出处:http://www.minunix.com/2013/08/jboss-as7-01/  如需转载请注明出处!

七、   体验
至此,您可以通过简单的配置来体验JBoss 了!!!

更多内容请参考以下途径免费获得:
http://www.minunix.com
http://docs.minunix.com
Q 群: 279461110