当前位置 : 首页 » 文章分类 :  开发  »  JBoss

JBoss

JBoss笔记


概述

JBoss是一个基于J2EE的开放源代码的应用服务器,是全世界开发者共同努力的成果。
它完全实现了J2EE的规范: EJB 、 JMS 、 JTS/JTA、 Servlet and JSP、 JNDI,它还提供一些高级特性,比如集群、JMX、Web Service。
它还整合了IIOP(Internet Inter-ORB Protocol互联网内部对象请求代理协议)
因为JBoss代码遵循LGPL许可,你可以在任何商业应用中免费使用它,而不用支付费用。


JBoss各版本对比

  • JBoss AS:开源社区版本,发布比较频繁。
  • JBoss EAP(Enterprise Application Platform):红帽在开源版本上构建的企业版本。
  • Wildfly:是JBoss AS新的项目名称,从Jboss8开始,新的JBoss AS改名为WildFly。之后Jboss名称只用于红帽的商业版本JBoss EAP。

JBoss各版本官网


安装

JBoss与JDK安装

  • 安装JDK
    以安装jdk-6u45-linux-x64.bin为例
    $ cp jdk-6u45-linux-x64.bin /home/jboss/
    $ chmod +x jdk-6u45-linux-x64.bin
    $ ./jdk-6u45-linux-x64.bin
    
  • 配置环境变量
    $ vi ~/.bash_profile
    JAVA_HOME=/home/jboss/jdk1.6.0_45/
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME
    export PATH
    $ source ~/.bash_profile
    $ java -version
    
  • 安装jboss
    jboss的安装只需要解压缩即可,例如
    unzip jboss-eap-5.1.0.zip

安装JBoss注意事项

  • 不要安装到中文目录下
  • 不要安装到带空格的路径(目录名带空格)下
  • Linux下安装启动JBoss需要配置hosts文件,否则启动会报UnknownHostException错误,hosts文件中配置主机名和IP地址映射关系。

JBoss目录说明

  • bin,启动和关闭JBoss的脚本,.sh是linux版,.bat是windows版。例如run.sh为linux下的启动脚本,run.bat为windows下的启动脚本;shutdown.sh为linux下的关闭脚本,shutdown.bat为windows下的关闭脚本。

  • client,这个文件夹用来保存Java客户端应用或外部web容器(在JBoss之外运行)所需的配置文件和Jar文件,是客户端与JBoss通信所需的的Java库,方便客户端的使用。我们客户端如果要使用Jboss服务器的bean等,需要引入这个文件夹里所有的Jar包才可以。

  • docs,配置的样本文件(数据库配置等)

    • docs/dtd,在JBoss中使用的各种XML文件的DTD
  • lib,JBoss所需的jar文件。JBoss启动时加载,且被所有JBoss配置共享,这个属于JBoss自身需要的jar文件,所以不要把我们自己的jar文件放在这个目录。

  • common,这个文件夹在JBoss4里没有,在JBoss5中新加的,里面都是一些jar文件,包括log4j和hibernate等包,个人认为这些包是可以与JBoss结合使用的,是我们使用JBoss是可选用的功能,JBoss应该是为了给我们使用者方便,把这些它支持的功能jar也一起加了进来。

  • server,包含JBoss服务器实例的配置集合。这里的每个子目录就是一个不同的服务器实例配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。JBoss4里面默认有三个配置集合:minimial,default和all,默认使用的是default。JBoss5之后,里除了有以上三个配置外,又加入了web和standard两项。

    • server/all,这个配置是JBoss的完全配置,启动所有服务,包括集群和IIOP。
    • server/default,这个是JBoss的默认配置。 通常使用的是这个配置,不包括集群和IIOP。没有在 JBoss 命令行中指定配置名称时使用。
    • server/minimal,仅加载启动JBoss所需的最少服务,如日志服务、JNDI和URL部署扫描器(发现新的部署),不包含Web容器、EJB和JMS。

default实例配置

server目录中每个子目录就是一个不同的服务器实例配置,子目录的名字表示配置的名字。

  • server/default/conf,JBoss的配置文件。conf目录中包含了这个服务器的启动描述文件jboss-service.xml。这个文件定义了服务器运行时间内提供哪些固定的核心服务。

  • server/default/deploy,JBoss的热部署目录。这是部署J2EE应用程序(jar、war和ear文件)的位置,只需将相应文件拷贝到该目录下即可。deploy中包含可热部署的服务(可以在服务器运行时动态添加和删除)。我们可以发布应用程序代码的压缩包(JAR,WAR和EAR文件)到这里。这里目录会被搜索更新,所有修改的组件都会被自动重新部署。 (这个文件夹的作用很像Tomcat里的webapps)

  • server/default/lib,这个目录中包含这个服务器配置需要的JAR文件,JBoss在启动特定配置时加载他们。这些java库不会被热部署,所以我们可以添加我们自己需要的库文件到这里(使用default的情况下),如JDBC驱动,程序所需接口等。所有的jar文件将在服务器启动的时候被加载到共享的classpath中。 因为是启服务时加载的,所以属于用户级别的。(all和minimial,web,standerd配置都包含以上四个目录。)

  • server/default/data,JBoss的数据库文件。服务中需要存储内容到文件系统的都会保存到data目录。比如,嵌入的数据库,或者JBossMQ。 JBoss内嵌的Hypersonic database的数据也是保存到这里的。

  • server/default/log,JBoss的日志文件。 如果我们要修改日志输出目录,可以通过配置conf/log4j.xml实现。可通过改文件夹内容的记录来查看每天的日志输出情况。

  • server/default/tmp,JBoss的临时文件。用来提供JBoss服务的临时存储。

  • server/default/work,提供给jboss web编译jsp文件用。 log、tmp和work是default配置独有的。

目录data、log、tmp和work在JBoss安装后并不存在,当JBoss运行时自动建立。

server/default/conf

  • jboss-service.xml,定义核心服务及其配置。
  • jndi.properties,定义了InitialContext属性,当一个InitialContext被无参数构造函数创建时会被使用到。
  • jboss-log4j.xml,包含了jboss使用的log4j日志配置。
  • login-config.xml,这个文件包含了服务器端验证的配置的样例,当使用基于JAAS验证时会被用到。
  • props/*,这个文件夹目录包含了jmx-console所需的用户和角色配置文件。
  • standardjboss.xml,提供了JBoss默认容器配置。
  • standardjbosscmp-jdbc.xml,这个文件提供了JBoss CMP 引擎的默认配置文件。
  • xmdesc/*,包含了jboss-service.xml 中定义的服务的XMBean描述文件。

启动

启动参数配置

即run.sh脚本命令可带的参数

  • 绑定启动IP(JBoss EAP 5.1默认启动只能以localhost访问
    -b IP,或--host= IP,所有JBoss服务绑定的地址。
    jboss启动时,默认只允许本机进行连接,即如果不加任何参数的话,只监听127.0.0.1,也就是默认绑定到localhost,用本机以外的地址就访问不了。如果需要从其它机器访问JBoss服务,则必须配置该参数,-b 本机IP 或 -b 0.0.0.0

  • 选择profile(选择服务器实例)
    -c PROFILE,或--configuration=PROFILE,如-c production(默认-c default)
    production必须是JBOSS_HOME/jboss-as/server/目录下的一个子文件夹。

  • 配置系统参数文件
    -P 属性配置文件,或--properties=属性配置文件,如-P application.properties

  • 指定HA分区的名称,设置集群分区名称,默认值为DefaultPartition
    -g HA名称,或--partition=HA名称,例如-g aisServer4

  • 配置UDP多播地址
    -u IP, 或--udp=IP

  • 配置系统参数
    -D<name>[=<value>],如-Djboss.server.log.dir=/tmp/log

    • -Djboss.service.binding.set=ports-01,设置jboss绑定端口为默认8180(ports-01表示8180),还可设为默认ports-default(8080)
    • -Djboss.messaging.ServerPeerID=n,设置消息集群ID为n,JBoss消息要求这个值在集群中唯一

JBoss 4.0.4GA 启动参数解释

  • -c, --configuration=,指定服务器启动的配置(default、all、minimal)
  • -b, --host=,所有JBoss Service绑定的地址
  • -g, --partition=,HA分区的名称(缺省为DefaultDomain)
  • -u, --udp=,UDP的多播地址
  • -P, --properties=,从指定的url加载系统属性
  • -D[=],设置系统属性
  • -h, --help,显示帮助信息
  • -V, --version,显示版本信息
  • -d, --bootdir=,设置启动补丁目录的位置;必须是绝对路径或者url
  • -p, --patchdir=,设置补丁目录的位置;必须是绝对路径或者url
  • -n, --netboot=,从指定的url网络位置启动
  • -B, --bootlib=,将其它的jar包添加到bootclasspath的前面
  • -L, --library=,将其它的jar包添加到 loaders classpath
  • -C, --classpath=,将其它的url添加到loaders classpath
  • -l, --log=,设置日志记录插件类型

以默认配置启动

进入目录jboss-eap-5.1/jboss-as/bin
执行脚本./run.sh -b 0.0.0.0nohup ./run.sh -b 0.0.0.0 & 后台启动
启动后查看日志server.log,有Started in xxs:xxms
浏览器访问http://localhost:8080 出现JBoss说明页表示启动成功。


指定服务器配置启动

启动JBoss时,如果run.sh不带任何参数,则使用的配置是server/default目录下的配置。
如果要以其它目录下的配置启动JBoss,可以使用如下参数:
./run.sh -c all
上述命令将以all目录下的配置信息启动JBoss。也可以在server目录下新建目录,按自己的需要写配置文件。


JBoss端口配置

可以在一台机器上跑多个JBoss实例,JBoss提供了自动更改端口的办法。
JBoss提供一个-Dproperty=value形式的JVM启动参数:
-Djboss.service.binding.set=ports-default
posts-default,表示使用默认端口8080
posts-01,posts-02,posts-03,分别为8180, 8280,8380,即posts-0i是在默认端口的基础上加100*i

在执行run.sh启动脚本时可以增加此参数来改变服务端口,例如run.sh -Djboss.service.binding.set=ports-01,表示以端口8180来启动。

如果4个都不够用,可以修改posts-xx的配置文件,增加几个。这个的配置文件在jboss-5.1.0.GA/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml(其中default为不通的启动目录)


关键配置文件

JBOSS_HOME/jboss-as/bin/run.conf:Linux下启动脚本配置文件
JBOSS_HOME/jboss-as/bin/run.conf.bat:Windows下启动脚本配置文件
JBOSS_HOME/jboss-as/server/default/conf/jboss-service.xml:JBoss核心配置文件
JBOSS_HOME/jboss-as/server/default/conf/jboss-log4j.xml:JBoss日志配置文件
JBOSS_HOME/jboss-as/server/default/conf/props/jmx-console-users.properties:jmx-console控制台登录账号配置
JBOSS_HOME/jboss-as/server/default/conf/bootstrap/profile.xml:配置JBoss部署包扫描目录等
JBOSS_HOME/jboss-as/server/default/deploy/hdscanner-jboss-beans.xml:部署包扫描时间配置等


应用部署

JBoss中的部署过程非常的简单、直接并且支持热部署。在每一个配置中,JBoss不断的扫描一个特殊的目录的变化:
$JBOSS_HOME/server/config-name/deploy
你可以把下列文件拷贝到此目录下:

  • 任何jar库(其中的类将被自动添加到JBoss的classpath中)
  • EJB JAR
  • WAR(Web Appliction aRchive),包含全部Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。
  • EAR(Enterprise Application aRchive),包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。
  • 包含JBoss MBean定义的XML文件
  • 一个包含EJB JAR、WAR或者EAR的解压缩内容,并以.jar、.war或者.ear结尾的目录

自定义部署目录

修改$JBOSS_HOME/jboss-as/server/default/conf/bootstrap/profile.xml文件


参考


域(managed domain)模式配置

这是jboss eap 6的新特性,eap5中没有。

jboss eap 6 提供了两种操作模式:standalone(独立服务模式) 和managed domain(受管域).两种模式的主要区别在于对服务器的管理,而不是它们为满足最终用户请求而提供的功能。

domain 模式是通过单个控制点来管理多个 jboss eap 6 实例的模式。集中管理的jboss eap 6 服务器集合被称作域的成员,域里所有的jboss eap 6 实例共享一个公共的管理策略,以及配置。

日常开发中,使用standalone模式足已;但生产部署时,一个app,往往是部署在jboss集群环境中的,如果所有jboss server均采用standalone模式,会给运维带来极大的工作量,需要每台jboss server上逐一部署/更新,显然不适合。

domain模式正是为了解决这一问题,该模式下,所有jboss server可以划分成不同的group(注:这里的jboss server并不一定要对应某台物理机或虚拟机,一个os上,可以同时run多个jboss server实例,所以本文中的jboss server均指某个运行中的jboss server instance),每个group中可以包含多个jboss server,所有这些jboss server中,可以指定一台做为域控制器(domain controller),俗称master server,其它jboss server均为Host Controller(俗称slave server)。

master上可以控制所有jboss server,并监控其运行情况,部署应用时,一个war包,只需要部署到group上,该group中的所有jboss server即会同步自动部署。

Managed Domain要区别与Cluster,Cluster的主要功能是负载均衡、容灾,而Managed domain的目的主要在于统一管理。


上一篇 Java-JVM

下一篇 Java-线程

阅读
3,535
阅读预计14分钟
创建日期 2016-10-14
修改日期 2018-06-20
类别
标签
百度推荐