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的启动过程及其相关知识点。 1. **JBoss目录结构**: JBoss的安装目录包含多个子目录,如`bin`、`server`、`deploy`等。`bin`目录下有启动和停止服务器的脚本,`server`目录则包含了...
**JBoss启动顺序** JBoss的启动过程大致分为以下几个阶段: 1. **环境准备**:首先,JBoss会检查运行环境,包括Java环境(JDK)是否安装正确,版本是否兼容,以及相关的系统变量如JAVA_HOME是否设置。 2. **配置...
Jboss启动报Failed to parse WEB-INF/web.xml; - nested throwable错误解决方案 在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析...
1.2.2 JBoss启动 启动JBoss服务器,可以通过命令行进入JBoss的安装目录,然后执行`bin/standalone.sh`或`bin/domain.sh`。在Linux环境下,需要赋予这些脚本执行权限。 1.3 JMX控制台 JBoss使用JMX(Java Management...
### JBoss MicroContainer分析及应用 #### 一、Microcontainer工作原理 ##### 1.1 为什么需要Microcontainer 在现代软件开发中,容器技术变得越来越重要,它为应用程序提供了可扩展性和灵活性。JBoss ...
如果JDK版本不兼容或路径设置有误,很可能导致JBoss启动失败,表现为“一闪而过”的现象。具体而言,以下几点需注意: - **JDK版本**:确保安装的JDK版本与JBoss兼容。JBoss 5.0.6版本通常推荐使用JDK 1.5或1.6。 -...
### JBoss架构分析及构架原理 #### 1. 引言 ##### 1.1 JBoss简介 JBoss是一款免费且开源的Java 2 Platform, Enterprise Edition (J2EE) 实现,由JBoss集团开发并通过GNU Lesser General Public License (LGPL) ...
了解如何查看和分析JBoss的日志文件,这对于故障排查至关重要。`standalone/log`目录下会生成`server.log`和其他相关日志文件。此外,可以利用管理控制台或JMX监控服务器状态。 以上就是JBoss安装和部署的基本步骤...
JBoss启动的入口 一旦启动脚本成功执行,将调用`C:\Java\bin\java`命令,启动Java虚拟机并加载`org.jboss.Main`类中的`main`方法作为启动入口。`Main.main`方法会创建一个名为“jboss”的线程组,并在该线程组中...
在启动JBoss时,可以通过命令行参数调整服务器的启动选项,例如内存分配和日志级别。 **2. JBoss架构分析** JBoss架构基于模块化设计,主要包括服务层、应用层和部署层。服务层提供核心功能,如交易、消息传递和...
- 验证:启动 JBoss EAP 服务并检查日志,确保补丁已正确应用且系统运行正常。 4. **补丁的分类** - GA 补丁:一般修复了已知问题,不包含新功能,适用于生产环境。 - CP 补丁:累积补丁,包含 GA 补丁的所有...
#### 实例分析:独立模式配置文件 下面是一个简单的`standalone.xml`配置文件示例,展示了如何定义扩展模块和子系统: ```xml <extension module="org.jboss.as.connector"/> <extension module="org.jboss....
4. 启动:通过命令行执行`bin/standalone.sh`(Linux/Unix)或`bin/standalone.bat`(Windows)启动JBOSS服务器。 三、部署应用 1. 应用格式:JBOSS支持WAR(Web应用程序)和EAR(Enterprise Archive)两种部署格式...
具体表现为:安装并启动JBOSS后,尝试访问`http://localhost:8080/web-console/`或`http://localhost:8080/jmx-console/`时,无论输入何种用户名与密码都无法成功登录。 #### 二、问题原因分析 根据问题描述,可以...
此外,熟悉JBoss的控制台工具(如`jconsole`或`jvisualvm`)也有助于远程诊断和性能分析。 7. **安全性考虑**: 当JBoss作为服务运行时,必须考虑安全性。限制对JBoss端口的访问,配置防火墙规则,以及使用安全的...
当遇到部署问题、启动失败或性能瓶颈时,学会分析日志、使用JProfiler等工具进行诊断,将有助于快速定位和解决问题。 总的来说,【JBoss学习全集多本书整合】提供了全面的JBoss知识,无论你是初学者还是经验丰富的...
**JBoss 4.0 启动指南** JBoss 4.0 是一款开源的应用服务器,它基于Java EE(Enterprise Edition)规范,提供了一个用于部署和管理Java应用程序的平台。本指南将深入探讨JBoss 4.0的核心特性和启动流程,帮助开发者...
1. **安装与配置**:了解如何下载、安装和配置JBoss服务器,包括设置环境变量,启动和停止服务器等基本操作。 2. **部署应用**:学习如何将Java EE应用部署到JBoss服务器上,包括WAR和EAR文件的部署方式。 3. **...