JBoss启动与运行过程的研究.docx

上传人:b****8 文档编号:11172401 上传时间:2023-02-25 格式:DOCX 页数:69 大小:2.82MB
下载 相关 举报
JBoss启动与运行过程的研究.docx_第1页
第1页 / 共69页
JBoss启动与运行过程的研究.docx_第2页
第2页 / 共69页
JBoss启动与运行过程的研究.docx_第3页
第3页 / 共69页
JBoss启动与运行过程的研究.docx_第4页
第4页 / 共69页
JBoss启动与运行过程的研究.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

JBoss启动与运行过程的研究.docx

《JBoss启动与运行过程的研究.docx》由会员分享,可在线阅读,更多相关《JBoss启动与运行过程的研究.docx(69页珍藏版)》请在冰豆网上搜索。

JBoss启动与运行过程的研究.docx

JBoss启动与运行过程的研究

目录

第1章JBoss介绍2

1.1JBoss简介2

1.2JBoss安装和启动2

1.2.1JBoss安装所需软件2

1.2.2JBoss启动2

1.3JMX控制台3

1.4服务器架构概述4

1.4.1主目录4

1.4.2服务器配置4

1.4.3JBoss配置文件5

1.4.4JMX层次5

1.4.5JBoss主要模块6

1.4.6如何工作7

1.5JBoss服务7

1.5.1核心服务7

1.5.2日志服务8

1.5.3安全性服务9

1.5.4其他服务9

第2章JBoss启动步骤11

2.1启动过程12

第3章JBoss启动过程中需要调用配置文件及含义14

3.1jboss-service.xml14

3.2.xml18

第4章JBoss运行过程分析18

4.1执行启动脚本18

4.2JBoss启动的入口20

4.3处理命令行参数20

4.4加载并创建服务器实例21

4.5初始化服务器实例22

4.6启动服务器实例22

4.6.1创建并启动计时器23

4.6.2创建MBeanServer实例23

4.6.3创建并注册基础服务23

4.6.4部署预配置的服务25

4.6.5部署所有的部署单元25

4.6.6启动生命维持线程28

第5章JBoss运行过程中输出信息及含义29

5.1boot.log29

5.2server.log45

JBoss启动与运行过程的研究

第1章JBoss介绍

1.1JBoss简介

JBoss是一个运行EJB的J2EE应用服务器。

例如:

数据库访问JDBC、交易(JTA/JTS)、消息机制(JTS)、命名机制(JNDI)和管理支持(JMX)。

它是开放源代码的项目,遵循最新的J2EE规范。

EJB(enterprisejavabean),他不是javabean简单的升级,也不是一种"产品",而是为开发和使用基于事务和分布对象应用的服务器端构件而定义的一种技术规约。

包括实体bean,会话bean,消息驱动bean

1.2JBoss安装和启动

1.2.1JBoss安装所需软件

(1)安装 SDK:

方法为:

双击执行下载的 j2sdk-1_4_2_01-windows-i586.exe 文件。

(2)安装 JBOSS:

方法为:

将下载的 jboss-4.0.0.zip 文件解压到任意一个目录。

1.2.2JBoss启动

用户可以在JBoss主安装目录的bin目录中找到若干个脚本文件。

请执行run脚本(对于Windows,则运行run.bat;对于Linux、OSX、UNIX系统,则运行run.sh)。

其中,部署和启动JBoss组件的具体日志信息能够在运行JBoss的控制台浏览到。

如下消息表明,JBoss服务器成功运行。

11:

13:

41,390INFO[Server]JBoss(MXMicroKernel)[4.2.0.GA(build:

SVNTag=JBoss_4_2_0_GAdate=200705111440)]Startedin1m:

48s:

47ms

1.3JMX控制台

通过http:

//localhost:

8080/jmx-console1,即JMX控制台应用,用户能够浏览到服务器活动视图。

图1.3给出了示例界面。

图1-3JMX管理控制台Web应用视图

上述界面给出了JBoss管理控制台,它提供了构成JBoss服务器的JMXMBean原始视图。

我们暂时可以不用理会控制台的任何内容,但是需要知道控制台能够提供运行中的JBoss应用服务器的大量信息。

另外,通过它,用户能够修改、启动、停止JBoss组件。

比如,请找到service=JNDIView链接,然后单击。

该特定MBean提供了如下服务内容,即能够浏览服务器中JNDI命名空间的结构信息。

接下来,请在该MBean显示页面底端找到list操作,然后单击invoke按钮。

invoke操作将返回绑定到JNDI树中的当前名字列表,这对于获得EJB名字很有帮助,比如当EJB应用客户端不能够解析EJB名字时。

类似地,用户也可以看看其他的MBean及其列举出的操作,然后试着修改一些配置属性,看看会发生什么事情。

有一点请注意,即如果服务器一旦重启,从控制台所作的修改都将丢弃掉。

因为重启JBoss时,系统将重新装载原始配置,因此用户可以大胆地尝试一切操作。

1.4服务器架构概述

本节将深入服务器目录结构、主要配置文件的位置信息、日志文件、部署问题,等等。

有助于理解JBoss服务架构。

1.4.1主目录

jboss-4.0.2目录,该目录包含如下5个子目录:

􀂄bin:

含有启动、停止以及其他系统相关脚本。

􀂄client:

存储供Java客户应用或者外部Web容器使用的配置文件和JAR文件。

用户可以使用所需要的具体存档,或者仅仅使用jbossall-client.jar。

􀂄docs:

含有JBoss引用的XMLDTD文件(当然,还包括JBoss具体配置文件)。

同时,还存在JCA(JavaConnetorArchitecture,Java连接器架构)实例配置文件,供设置不同数据库的数据源使用(比如MySQL、Oracle、Postgres)。

􀂄lib:

包含运行JBoss微内核所需的JAR文件。

请注意,不要往该目录添加用户自身的任何JAR文件。

􀂄server:

包含的各个子目录都是不同的服务器配置。

1.4.2服务器配置

从根本上考虑,JBoss架构是由JMXMBean服务器、微内核、一套可插入式组件服务以及MBean构成的。

这种架构使得,集成不同的配置变得更加简单,并且能够很灵活地满足用户的各自需求。

用户不再需要一次性运行重量级的应用服务器。

同时,用户可以删除不再需要使用的组件(这将从很大程度上减少服务器的启动时间),并且通过开发自己的MBean还能够集成其他服务到JBoss中。

开发者在server目录下能够找到若干服务器配置实例。

server目录下存在3个服务器实例配置:

all、default以及minimal,它们各自提供了不同的服务集合。

很显然,如果启动JBoss服务器时没有指定其他配置,则将使用default配置。

各个配置的具体内容如下:

􀂄minimal:

这是启动JBoss服务器所要求的最低配置。

minimal配置将启动日志服务、JNDI服务器以及URL部署扫描器,以找到待部署的(新)应用。

对于那些不需要使用任何其他J2EE技术,而只是使用自定义服务的场合而言,则这种JMX/JBoss配置最适合。

它仅仅是服务器,而不包含Web容器、不提供EJB和JMS支持。

􀂄default:

默认配置,它含有大部分J2EE应用所需的标准服务。

但是,它不含有JAXR服务、IIOP服务、或者其他任何群集服务。

􀂄all:

提供了所有可用的服务。

它包含RMI/IIOP和群集服务,default配置中没有提供群集服务。

用户也可以添加自身的服务器配置。

最佳做法是,拷贝最接近用户需求的现有配置,然后修改其具体内容。

比如,如果用户不需要使用消息服务,则只需要拷贝default目录,并重新命名为myconfig,然后删除jms子目录。

最后,启动myconfig配置。

1.4.3JBoss配置文件

JBoss的server目录可以包含任意数目的目录,每个表示一个不同的 JBoss配置。

server/config-name/conf目录包含JBoss的配置文件。

jacorb.properties         JBoss IIOP 配置

  jbossmq-state.xml         JBossMQ(JMS的实现)用户配置

  jboss-service.xml         启动时运行的JBoss的服务的定义(class loader,JNDI,

                            deployer等)

  log4j.xml                 Log4J的配置

  login-config.xml          JBoss安全配置(JBossSX)

  standardjaws.xml          JBoss的遗留CMP 1.1引擎的默认配置。

包含对各种数据库的

                            JDBC-to-SQL的映射信息,默认CMP设置,日志配置等。

  standardjbosscmp-jdbc.xml 除了被用于JBoss的CMP 2.0引擎之外,与standardjaws.xml

相同,

1.4.4JMX层次

JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。

JBoss的模块架构是建立在JMX底层上的,下图展现了JBoss主要组件和JMX的联系。

Figure1-1OverallJBossConceptualModel

JMX(Java Management Extensions)即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。

它的架构是层式架构。

他们是实现层(instrumentationlayer)、代理层(agentlayer)和发布层(distributionlayer)。

其中,发布层还在等待未来的标准化。

简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。

实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。

Figure2-1JMX层次模型

1.4.5JBoss主要模块

主要的JBoss模块是在MeanServer上的可管理MBean。

(1)JBossEJB容器是JBoss服务器的核心实现。

它有两个特性,第一是在运行期产生EJB对象的Stub和Skeleton类,第二是支持热部署。

(2)JBossNS是JBoss命名服务用来定位对象和资源。

它实现了JNDIJ2EE规范.

(3)JBossTX是由JTA/JTS支持的交易管理控制.

(4)部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。

它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。

(5)JBossMQ使Java消息规范(JMS)的实现。

(6)JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。

(7)JBossCX实现了部分JCA的功能。

JCA制订了J2EE应用组件如何访问基于连接的资源。

(8)Web服务器支持Web容器和Servlet引擎。

1.4.6如何工作

当JBoss被启动,它的第一步是创建一个MBean服务器的实例。

一个基于管理机制的MBean组件通过在MeanServer中的注册而被插入JBoss中。

JBoss实现了动态类装载M-Let(management applet)服务,它是代理服务,M-let允许MBean被注册到MBean服务器上。

通过基于文本文件的配置文件中的配置,相应MBean将被装载。

JMXMBean服务器实际上本身并没有实现很多功能。

它的工作类似于一个MBean中联系的微核聚合组件,通过Mbeans取代JMXMBean服务器来提供相应的功能,换而言之,真正起作用的是MBean。

1.5JBoss服务

这里的目录路径都是基于server/default目录给出的。

1.5.1核心服务

当JBoss服务器启动时,首先会启动conf/jboss-service.xml文件指定的核心服务。

如果用户通过编辑器打开它,将会看到其包括了各种服务,其中包括日志、安全性、JNDI。

将如下JNDIView服务入口注释掉:

--Section1commentedout

name="jboss:

service=JNDIView"

xmbean-dd="resource:

xmdesc/JNDIView-xmbean.xml">

-->

--TheHANamingServiceservicename-->

--Sectiontwocommentedout

jboss:

service=HAJNDI

-->

如果重启JBoss,则JNDIView服务将不再出现在管理控制的列表中。

实际场合中,用户很少会修改该文件。

虽然通过conf/jboss-service.xml文件能够添加其他MBean服务,但是更好的办法是,将单独的配置文件放置在deploy目录中,因为这将使得用户的服务具有热部署能力。

1.5.2日志服务

Log4j是JBoss使用的日志功能包。

通过conf/log4j.xml文件能够控制JBoss的日志功能。

该文件定义了一套Appender、指定了日志文件、具体消息Category类型的存储、消息格式以及消息的过滤级别。

默认时,JBoss会同时在控制台和日志文件(位于log/server.log文件中)中生成输出信息。

一共存在5个基本的日志级别:

DEBUG、INFO、WARN、ERROR以及FATAL。

其中,控制台的日志入口(threshold)为INFO,即用户通过控制台能够浏览到提示信息、警告信息、错误信息,但是调试信息查看不到。

相比之下,JBoss并没有为server.log文件设置任何入口,因此所有生成的消息将记录到server.log文件中。

如果JBoss运行过程中出现了错误,则通过控制台可能找不到用户有用的信息,因此建议通过server.log文件查看是否有调试信息可供解决问题所用。

然而,请注意,通过调整日志入口能够在控制台查看到调试信息,但是这并没有保证所有的JBoss消息都将记录到server.log文件中。

因此,用户还需要为单个的Category设置不同的日志级别。

比如,log4j.xml给出了如下Category。

--LimitJBosscategoriestoINFO-->

它将所有的JBoss相关类的日志级别限制到INFO,即同那些含有具体日志级别的Category隔离开。

如果将INFO更换为DEBUG,则将生成更详细的日志输出。

由于文件Appender设置为每日创建新的日志文件,因此JBoss不会每次启动服务器时创建新的日志文件,而且也不会总是将日志信息记录到单个文件中。

当前的日志文件为cmp.log,更早的日志文件名是通过将具体日期添加到server而生成的。

用户应该还注意到,log目录包含了Web容器生成的HTTP请求日志。

1.5.3安全性服务

安全性域信息存储在login-config.xml文件中,其包含了许多安全性域定义。

各个安全性域指定了许多JAAS3登陆模块,供安全性域认证使用。

当用户需要在应用中使用安全性时,需要在JBoss特定部署描述符jboss.xml或jboss-web.xml中指定待使用的安全性域名。

1.5.4其他服务

deploy目录放置的服务不是核心服务,但具有热部署能力。

用户可以通过XML描述符文件(*-service.xml)或JBoss服务存档(SAR)文件给出服务。

SAR同时含有XML描述符和服务所要求的其他资源(比如,类、JAR库文件以及其他存档),而且SAR是以单个存档文件给出的。

(1)通过default/deploy目录,用户能够发现下列文件和子目录,这里给出的内容使得用户能够从整体上把握JBoss应用服务器。

􀂄bsh-deployer:

将BeanShell脚本部署成JBoss服务。

􀂄cache-invalidation-service.xml:

允许借助于JMS,而实现对EJB缓存的控制。

􀂄client-deployer-service.xml:

部署J2EE应用客户。

􀂄ear-deployer.xml:

部署J2EEEAR应用。

􀂄ejb-deployer.xml:

部署J2EEEJB应用。

􀂄hsqldb-ds.xml:

设置嵌入式Hypersonic数据库服务,并将其作为默认数据源。

􀂄http-invoker.sar:

通过RMI/HTTP方式访问到MBean和EJB。

􀂄jboss-aop.deployer:

提供AspectManagerService,并部署JBossAOP应用。

􀂄jboss-hibernate.deployer:

部署Hibernate存档(HAR文件)。

􀂄jboss-local-jdbc.rar和jboss-xa-jdbc.rar:

集成JDBC驱动的JCA资源适配器,它们分别支持DataSource和XADataSource。

但是,这并没有提供专有JCA实现。

􀂄jboss-ws4ee.sar:

提供J2EEWeb服务支持。

􀂄jbossjca-service.xml:

JBossJCA实现,使得在JBoss中部署JCA资源适配器成为可能。

􀂄jbossweb-tomcat50-sar:

含有嵌入式Tomcat服务的展开SAR文件。

它为JBoss提供了标准的Web容器。

􀂄jms:

将JMS相关的服务聚集在一起,并放置在jms目录中。

􀂄hsqldb-jdbc-state-service.xml:

使用HSQLDB管理状态。

􀂄hsqldb-jdbc2-service.xml:

使用嵌入式HSQL数据库实现缓存和持久化。

它还包含了JMS实现的核心服务,即DestinationManagerMBean。

􀂄jbossmq-destinations-service.xml:

供JBoss测试套件使用的JMSTopic和Queue。

􀂄jbossmq-service.xml:

JMS其他服务,包括拦截器配置。

􀂄jms-ds.xml:

将JBoss消息实现作为默认JMS提供商。

并且,它还提供JCA配置信息,以供集成JBossJCA和JMS资源适配器使用。

􀂄jms-ra.rar:

资源适配器,供JCA处理JMS连接工厂使用。

􀂄jbossmq-httpil.sar:

提供JMS调用层,从而实现HTTP方式使用JMS。

􀂄jvm-il-service.xml:

配置本地JMS传输调用层,供本地JVM使用JMS。

􀂄uil2-service.xml:

配置JMS版本2统一调用层。

这是一种可靠的、自定义的、基于Socket的传输方式。

推荐在不同JVM间使用它。

􀂄jmx-console.war:

JMX控制台应用。

前面讨论过。

􀂄jmx-invoker-server.xml:

为远程访问JMXMBean服务器提供支持。

􀂄mail-ra.rar:

为JavaMail提供资源适配器。

􀂄mail-service.xml:

允许应用和服务在JBoss中使用JavaMail。

请注意,邮件服务器相关信息必须由用户提供。

􀂄management:

含有可更换管理服务的子目录。

其中,包含有改进的Web控制台。

􀂄monitoring-service.xml:

配置警告监听器,比如控制台监听器、E_mail监听器,等等。

􀂄properties-service.xml:

设置JVM的全局系统属性(由System.getProperties返回)。

􀂄schedule-manager-service.xml和scheduler-service.xml:

定时任务服务。

􀂄sqlexception-service.xml:

为JDBC驱动提供标识一般性SQL异常。

􀂄uuid-key-generator.sar:

生成唯一的、基于UUID的键。

(2)all配置提供了其他配置没有提供的其他服务,用户可以将这些服务集成到各自的服务器配置中。

具体如下:

􀂄cluster-service.xml:

群集服务,包括JGroups集成服务、HA-JNDI、有状态会话Bean复制、CMP2缓存有效性服务。

􀂄deploy-hasingleton-service.xml:

HASingletonDeployerMBean。

用于确保群集中只有单个节点在deploy-hasingleton目录部署了服务。

􀂄deploy.last/farm-service.xml:

farm群集部署服务。

用于确保它在所有其他服务部署之后才部署其本身。

􀂄ebxmlrr-service.xml:

JAXR注册服务实现。

􀂄iiop-service.xml:

实现对CORBA、IIOP的支持。

􀂄jbossha-httpsession.sar:

遗留的HTTP会话复制服务。

􀂄remoting-service.xml:

还处于试验中的下一代分离式Invoker框架。

􀂄snmp-adaptor.sar:

将JMX通知转换成SNMP陷阱。

􀂄tc5-cluster-service.xml:

用于新的HTTP复制服务的TressCache配置。

第2章JBoss启动步骤

当启动JBoss时,首当其冲的就是要完成的就是创建MBean服务器实例,即javax.management.MBeanServer。

JBoss架构中的JMXMBean服务器担当了微内核的作用。

所有其他受管MBean组件都是通过注册到该MBean服务器,从而插入到JBoss中的。

这里的内核仅仅表明它是框架,而不是指实际功能。

实际功能由MBean提供,同时所有的主要JBoss组件都是通过MBean服务器相连在一起的受管MBean。

2.1启动过程

JBoss服务器启动过程大概是根据如下启动顺序完成启动任务的。

(1)run脚本使用org.jboss.Main.mian(String[])方法入口点触发引导顺序。

(2)Main.main方法创建线程组“jboss”。

然后,启动“jboss”线程中的某线程。

该线程调用Main.boot方法。

(3)Main.boot方法在处理Main.main的参数后,使用系统属性和参数指定的其他属性创建org.jboss.system.server.ServlerLoader实例。

(4)ServlerLoader注册XML解析库、jboss-jmx.jar、concurrent.jar、其他库及参数指定的类路径(classpath)。

(5)将传入当前线程上下文类装载器作为ServerLoader.load(ClassLoader)方法的实参,从而能够创建Jboss服务器实例。

其中,返回的服务器实例实现了org.jboss.system.server.Serv

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1