JBoss快速入门

近年来,在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布,这使得JBoss广为流行。Boss是一个运行EJB的J2EE应用服务器,例如:数据库访问JDBC、交易(JTA/JTS)、消息机制 (JTS)、命名机制(JNDI)和管理支持(JMX)。它是开放源代码的项目,遵循最新的J2EE规范。

安装JBoss服务器

1、下载地址: http://www.jboss.org/jbossas/downloads ,下载最新版本的JBoss服务器。

2、解压 jboss-as-7.1.1.Final.zip 到 D:\develop\目录下面。

3、设置环境变量如下:

系统变量->新建->变量名:JAVA_HOME = C:\Java

以下是非必须的,启动.bat 中会自动寻找
系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib;
系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;

4、启动JBoss。运行脚本安装目录下面bin\standalone.bat完成启动。

5、访问http://127.0.0.1:8080/,出现 Welcome to AS 7访问界面,说明jboss启动成功。

jboss启动成功页面

6、停止JBoss。在Server的命令行控制台,只要按下Ctrl+C就能够干净的停止这个Server。

如果不行的话,可以从一个新的命令行控制台,输入以下的命令来给运行的standalone server实例发出一个shutdown指令:
$ cd bin
$ ./jboss-cli.sh --connect command=:shutdown

目录结构

主目录结构

JBoss主目录结构

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

standalone目录结构

这儿是JBoss运行的两种模式的一种,Standalone模式(使用standalone.bat启动)相当于以前的3,4,5,6版本。配置文件、发布内容等放在standalone目录下。

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

Domain目录结构

这儿是JBoss运行的两种模式的另一种,Domain模式(使用domain.bat启动)是JBoss7的一个新特性,可以在一个控制点管理多个服务器。

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

其他目录

启动时创建。在每个服务器的目录内包括以下的子目录:

data {-}           服务器写入信息区 
log {-}            日志文件
tmp {-}            临时文件

添加用户

访问该Web服务器时,提示新增用户。可在服务端执行add-user.bat / add-user.sh 来添加管理员用户。

./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 :                                        //填写管理员用户名
Password :
Re-enter Password :

添加管理员后,访问http://127.0.0.1:9990/console

两种模式的启动

以standalone模式运行服务器

<JBOSS_HOME>\bin\standalone.bat     (Windows)  
<JBOSS_HOME>/bin/standalone.sh      (Unix / Linux)  

以domain模式运行服务器

<JBOSS_HOME>\bin\domain.bat     (Windows)
<JBOSS_HOME>/bin/domain.sh      (Unix / Linux)  

如果要指定启动配置文件,使用以下命令:

standalone --server-config=standalone-preview.xml
domain --domain-config=domain.xml --host-config=host.xml

说明:路径相对于configuration或者是绝对路径。运行standalone/domain时,附加-h,可以查看命令支持的参数。

JBoss AS7加入了域domain的概念,目的是使多台JBoss AS服务器的配置可以集中于一点,统一配置、统一部署,从而实现在管理多台JBoss AS服务器时,实现集中管理。

域的目的是将多台服务器组成一个服务器组,并为一个服务器组内的多台主机提供:
1.单点集中配置(通过一个域控制器,即Domain Controller,实现组内主机的统一配置)
2.单点统一部署,通过域控制器将项目一次部署至组内全部主机

关闭JBoss服务器

<JBOSS_HOME>/bin/jboss-cli.sh --connect --command=:shutdown  //jboss7.1.x 
<JBOSS_HOME>/bin/jboss-cli.bat --connect --command=:shutdown  //jboss7.1.x

修改访问IP和端口

取消访问限制

默认情况下,JBoss只允许本地(内网) IP地址访问其http服务,所以需要修改配置文件来使的JBoss允许外网能够直接访问。

第一种方式:配置所有外网都可以访问

修改配置文件,在/standalone/configuration/standalone.xml

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:127.0.0.1}" />
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:127.0.0.1}" />
    </interface>
    <interface name="unsecure">
        <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}" />
    </interface>
    <!-- 下面配置的是取消访问限制,默认情况下,JBoss只允许本地(内网)IP地址访问其http服务 -->
    <interface name="any">
        <any-ipv4-address />
    </interface>
</interfaces>

修改如下配置文件:

<!-- 
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
 -->
<!-- 下面吧default-interface改成any对应上面的所有的访问地址,当然你可以直接修改http对应的port即可 -->
<socket-binding-group name="standard-sockets" default-interface="any" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}" />
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}" />
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}" />
    <socket-binding name="ajp" port="8009" />
    <socket-binding name="http" port="8080" /> 
    <socket-binding name="https" port="8443" />
    <socket-binding name="osgi-http" interface="management" port="8090" />
    <socket-binding name="remoting" port="4447" />
    <socket-binding name="txn-recovery-environment" port="4712" />
    <socket-binding name="txn-status-manager" port="4713" />
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25" />
    </outbound-socket-binding>
</socket-binding-group>

以上这种设置方法是设置本机上所有的ip都可以进行访问(本机网卡配置的ip)

第二种方式:直接修改ip地址

对上面/standalone/configuration/standalone.xml中接口的配置文件进行修改:

<interface name="public">
  <inet-address value="${jboss.bind.address:192.168.0.120}" />
</interface>

也可以修改此处的ip,修改此处的ip,下面部分就不需要修改,如果是在采用的是在此处修改ip的方法,在启动jboss之前,本机必须有网卡上配置该ip,否则在jboss启动之后,再配置ip也不能进行访问,在启动的时候会抛异常,不存在该ip

MSC00001: Failed to start service jboss.network.public: org.jboss.msc.service.StartException in service jboss.network.public: JBAS015810: failed to resolve interface public
at org.jboss.as.server.services.net.NetworkInterfaceService.start(NetworkInterfaceService.java:97) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_09]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_09]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_09]

修改访问端口

第一种方式:修改偏移量

/standalone/configuration/standalone.xml文件中

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

其中jboss.socket.binding.port-offset的值默认是0,端口是根据设置的基准值+偏移量得到的,JBoss默认的访问的端口是8080,默认的偏移量是0,所以访问的端口是8080

修改偏移量为100的话,这样就可以得到新的访问端口,在浏览器访问http://192.168.0.120:8180

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:100}">

第二种方式: 直接修改port

如果我们想改成80端口,显然只需要将 port=”8080” 改为 port=”80” 并重启JBoss即可。

<!-- 将这个http端口设置为80端口 -->
<socket-binding name="http" port="8080" />

参考

Jboss7快速入门手册