`
billy_zh
  • 浏览: 61737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jboss 启动分析

阅读更多
jboss核心启动就是完成对jmx实现的初始化,在没有深入研究jmx的实现之前,我们可以将jmx看成一个类似hashtable的东西,通过给定一个ObjectName, 就能取得相应的对象。
 
step 1  org.jboss.Main
 
main.boot(args)
 
 1. 设置HOME_URL;
 2. 创建ServerLoader
   ServerLoader loader = new ServerLoader(props);
 3. 添加boot libs、endorsed jars、jmx libs、concurrentlib和 extra libs;
 4. 装载Server;
     在ServerLoader中定义了默认的Server实现: ServerImpl,Server由NoAnnotationURLClassLoader类装载器装载, 有关类装载器我们在后面深入分析。
 5. 初始化并启动Server;
 
关于run脚本这里就不说明了;
 
step 2  org.jboss.system.ServerImpl
 
server.init(props)
 
 1. 构造ServerConfig对象;
 2. 初始化logging;
 3. 记录config信息;
 
server.start()
 
 1. 建立MBeanServer
    这里有二种情况,如果在当前线程中已经有一个MBeanServer存在了,则Jboss使用这个MBeanServer, 否则创建自己的MBeanServer实现类MBeanServerImpl。
 
 2. 注册服务和服务配置组件
registerMBean方法用于向jmx注册组件,之前我们已经假定jmx是一个类似hashtable的东西,这里可将registerMBean暂时理解为put方法,通过一个key来关联object。
 
 3. 创建ServiceController(服务控制器)
ServiceController负责管理service组件的生命周期,服务组件实现了Service接口。
 
ServiceController并不会对service组件进行直接操作,因为service组件都注册到了MBeanServer中,ServiceController仅充当了MBeanServer对外的控制角色,使我们能通过它对MBeanServer中的service组件进行生命周期控制。
 
 4. 创建并启动 MainDeployer(主部署器)
MainDeployer负责分发部署内容到合适的SubDeployer上。
 
 5. 创建并启动 JARDeployer(JAR部署器)
JARDeployer负责部署jar单元。
 
 6. 创建并启动 SARDeployer(SAR部署器)
SARDeployer负责部署*-service.xml文档。
 
 7. 启动部署操作
调用MainDeployer的deploy方法开始部署。    
 
step 3 org.jboss.deployment.MainDeployer
 
作为主部署器,MainDeployer并不能部署任何单元,实际的部署任务由SubDeployer的具体实现类完成,所有的SubDeployer在服务启动后都应通过addDeployer方法其自身注册到MainDeployer中,在step2中,系统已经装载了JARDeployer和SARDeployer两个子部署器。
 
当MainDeployer部署一个单元时,它遍历访问已注册的SubDeployer,SubDeployer通过accept方法来检查是否能接受部署单元,当返回true时,MainDeployer将部署单元交由此SubDeployer进行部署。
 
下面来看看实际的部署操作,系统启动后,首先部署conf/jboss-service.xml,根据规则定义*-service.xml由SARDeployer部署。
 
1. init 初始化
  首先通过findDeployer查找合适的SubDeployer,如果找不到则等待,
  这里为SARDeployer;
  然后调用SARDeployer的init方法进行初始化;
 
2. create 创建
  调用SARDeployer的create方法开始服务组件创建;
  首先由ServiceController安装服务组件,在jboss-service.xml中定义的每一个mbean节点都对应为一个服务组件;
  然后由ServiceController创建服务组件;
 
3. start 启动
  调用SARDeployer的start方法启动服务组件;
  遍历部署单元内的服务组件,并由ServiceController启动它;
 
在default配置的jboss-service.xml中,定义了以下主要组件:
NamingService: 命名服务;
Log4jService: 日志服务;
JRMPInvoker: 提供rmi方式访问jmx;
URLDeploymentScanner: URL部署扫描器,实现热部署能力;
 
部署完成后,URLDeploymentScanner扫描器开始监视部署目录的变化,
当内容发生变化时,如一个服务复制到目录或从目录移除时,扫描器调用MainDeployer对其进行部署或卸载。
分享到:
评论

相关推荐

    JBoss启动 JBoss启动

    在本文中,我们将深入探讨JBoss的启动过程及其相关知识点。 1. **JBoss目录结构**: JBoss的安装目录包含多个子目录,如`bin`、`server`、`deploy`等。`bin`目录下有启动和停止服务器的脚本,`server`目录则包含了...

    JBOSS启动顺序、JBOSS占用的端口

    **JBoss启动顺序** JBoss的启动过程大致分为以下几个阶段: 1. **环境准备**:首先,JBoss会检查运行环境,包括Java环境(JDK)是否安装正确,版本是否兼容,以及相关的系统变量如JAVA_HOME是否设置。 2. **配置...

    Jboss启动报Failed to parse WEB-INFweb.xml; - nested throwable错误

    Jboss启动报Failed to parse WEB-INF/web.xml; - nested throwable错误解决方案 在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析...

    JBoss启动与运行过程的研究

    1.2.2 JBoss启动 启动JBoss服务器,可以通过命令行进入JBoss的安装目录,然后执行`bin/standalone.sh`或`bin/domain.sh`。在Linux环境下,需要赋予这些脚本执行权限。 1.3 JMX控制台 JBoss使用JMX(Java Management...

    JBoss MicroContainer分析及应用

    ### JBoss MicroContainer分析及应用 #### 一、Microcontainer工作原理 ##### 1.1 为什么需要Microcontainer 在现代软件开发中,容器技术变得越来越重要,它为应用程序提供了可扩展性和灵活性。JBoss ...

    jboss一启动除开一闪而过.txt

    如果JDK版本不兼容或路径设置有误,很可能导致JBoss启动失败,表现为“一闪而过”的现象。具体而言,以下几点需注意: - **JDK版本**:确保安装的JDK版本与JBoss兼容。JBoss 5.0.6版本通常推荐使用JDK 1.5或1.6。 -...

    JBoss架构分析以及构架原理

    ### JBoss架构分析及构架原理 #### 1. 引言 ##### 1.1 JBoss简介 JBoss是一款免费且开源的Java 2 Platform, Enterprise Edition (J2EE) 实现,由JBoss集团开发并通过GNU Lesser General Public License (LGPL) ...

    JBOSS,JBoss安装部署

    了解如何查看和分析JBoss的日志文件,这对于故障排查至关重要。`standalone/log`目录下会生成`server.log`和其他相关日志文件。此外,可以利用管理控制台或JMX监控服务器状态。 以上就是JBoss安装和部署的基本步骤...

    JBoss Application Server的启动过程

    JBoss启动的入口 一旦启动脚本成功执行,将调用`C:\Java\bin\java`命令,启动Java虚拟机并加载`org.jboss.Main`类中的`main`方法作为启动入口。`Main.main`方法会创建一个名为“jboss”的线程组,并在该线程组中...

    jboss相关技术文档

    在启动JBoss时,可以通过命令行参数调整服务器的启动选项,例如内存分配和日志级别。 **2. JBoss架构分析** JBoss架构基于模块化设计,主要包括服务层、应用层和部署层。服务层提供核心功能,如交易、消息传递和...

    jboss-eap-7.2.6-patch

    - 验证:启动 JBoss EAP 服务并检查日志,确保补丁已正确应用且系统运行正常。 4. **补丁的分类** - GA 补丁:一般修复了已知问题,不包含新功能,适用于生产环境。 - CP 补丁:累积补丁,包含 GA 补丁的所有...

    JBoss AS 7 简介

    #### 实例分析:独立模式配置文件 下面是一个简单的`standalone.xml`配置文件示例,展示了如何定义扩展模块和子系统: ```xml <extension module="org.jboss.as.connector"/> <extension module="org.jboss....

    最详细的JBOSS使用手册

    4. 启动:通过命令行执行`bin/standalone.sh`(Linux/Unix)或`bin/standalone.bat`(Windows)启动JBOSS服务器。 三、部署应用 1. 应用格式:JBOSS支持WAR(Web应用程序)和EAR(Enterprise Archive)两种部署格式...

    jboss-eap-4.3webconsole无法登录的解决方案

    具体表现为:安装并启动JBOSS后,尝试访问`http://localhost:8080/web-console/`或`http://localhost:8080/jmx-console/`时,无论输入何种用户名与密码都无法成功登录。 #### 二、问题原因分析 根据问题描述,可以...

    jboss部署成为linux服务

    此外,熟悉JBoss的控制台工具(如`jconsole`或`jvisualvm`)也有助于远程诊断和性能分析。 7. **安全性考虑**: 当JBoss作为服务运行时,必须考虑安全性。限制对JBoss端口的访问,配置防火墙规则,以及使用安全的...

    JBoss学习全集多本书整合

    当遇到部署问题、启动失败或性能瓶颈时,学会分析日志、使用JProfiler等工具进行诊断,将有助于快速定位和解决问题。 总的来说,【JBoss学习全集多本书整合】提供了全面的JBoss知识,无论你是初学者还是经验丰富的...

    JBOSS4.0 Start Guide (PDF)

    **JBoss 4.0 启动指南** JBoss 4.0 是一款开源的应用服务器,它基于Java EE(Enterprise Edition)规范,提供了一个用于部署和管理Java应用程序的平台。本指南将深入探讨JBoss 4.0的核心特性和启动流程,帮助开发者...

    jboss教程及深入浅出JBoss+Seam

    1. **安装与配置**:了解如何下载、安装和配置JBoss服务器,包括设置环境变量,启动和停止服务器等基本操作。 2. **部署应用**:学习如何将Java EE应用部署到JBoss服务器上,包括WAR和EAR文件的部署方式。 3. **...

Global site tag (gtag.js) - Google Analytics