1. org.jboss.Main.main(String[]) 为入口.
2. main 函数创建一个名叫”jboss”的线程组, 然后创建一个属于该组的线程, 在线程中执行boot方法.
3. boot 方法首先处理main函数中的参数(及一些其它的系统环境设置), 接着就用系统的属性创建了org.jboss.system.server.ServerLoader实例[new ServerLoader(props)].
4. ServerLoader 注册Jboss相关的类路径, 包括XML解析器, jboss-jmx.jar, concurrent.jar及其它的一些额外的类路径.
5. ServerLoader 通过load(ClassLoader)方法创建Jboss Server实例. 参数ClassLoader是ClassLoader parentCL = Thread.currentThread(). getContextClassLoader( )得到的当前线程的类加载器. 创建的Server实例是org.jboss.system.server.Server接口的实现. load(ClassLoader)方法的细节:
- 用jar包及在ServerLoader中注册的类路径创建一个URLClassLoader的实例, 把传入的ClassLoader作为该URLClassLoader的parent.
- Server 接口的实现类由系统属性 jboss.server.type决定, 默认是 org.jboss.system.server.ServerImpl.
- URLClassLoader 通过无参构造函数加载Server接口实现的实例. 在加载前把当前线程的类加载器置为该URLClassLoader, 在加载完成后再置回之前传入的ClassLoader.
6. Server 实例用系统属性进行初始化[server.init(props)].
7. 服务起动[server.start()]. 起动过程的默认实现如下:
- 把当前线程类型加载器置为加载该Server接口实现实例的ClassLoader.
- 在jboss域内, 通过MBeanServerFactory的createMBeanServer(String)方法创建MbeanServer实例.
- 在MBean Server上注册ServerImpl和ServerConfigImpl两个MBean.
- 初始化统一的类加载仓库(unified class loader repository), 用来装载服务器配置目录及其它可选目录下的jar文件. 对于每一个jar文件和类目录都会创建一个相应的org.jboss.jmx.loading.UnifiedClassLoader实例, 并且注册到统一的仓库中. 其中一个UnifiedClassLoader实例会被设置为当前线程上下文的ClassLoader. [?: This effectively makes allUnifiedClassLoaders available through the thread context class loader.]
- 接下来创建org.jboss.system.ServiceController的MBean实例. ServiceController管理JBoss MBean服务的生命周期.
- org.jboss.deployment.MainDeployer 实例被创建并起动. MainDeployer管理部署的依赖和部署的定向.
- org.jboss.deployment. JARDeployer 实例被创建并起动. JARDeployer处理jar包的部署.
- org.jboss.deployment. SARDeployer 实例被创建并起动. SARDeployer处理JBoss MBean服务的部署.
- MainDeployer 对当前服务器文件环境里conf/jboss-service.xml定义的服务进行部署.
- 启动过程结束. 把当前线程上下文类加载器置回为起动前的ClassLoader.
分享到:
相关推荐
JBoss启动JBoss启动JBoss启动JBoss启动JBoss启动JBoss启动JBoss启动JBoss启动 JBoss启动
本人自己收集整理资料,如有错误之处,请谅解。 第1章 JBoss 介绍 2 第2章 JBoss启动步骤 11...第3章 JBoss启动过程中需要调用配置文件及含义 14 第4章 JBoss运行过程分析 18 第5章 JBoss运行过程中输出信息及含义 29
如何linux下将JBoss配置成自动启动。
JBOSS常见错误处理的基本知识,日常问题的解决利器
可以通过设置,让jboss的启动服务在windows 系统服务中启动,不要手工再去启动,关键是后台自动启动
JBoss启动注册为Windows系统服务 依赖 JavaService.exe 这个程序将JBoss启动做成Windows的系统服务。
如何配置在同一台机器上启动两个独立的jboss实例
在研读了JBoss部分源代码后,我对JBoss的启动过程做了点总结。
Jboss启动报Failed to parse WEB-INFweb.xml; - nested throwable错误
Linux下安装jboss,并设置自启动服务.txt
Jboss配置过程图
linux启动jboss
JBOSS4.2 自定义服务器(同一IP启动多个实例) 配置方法
解决jboss中启动的优先级的问题,介绍了WEB和EJB之间的启动顺序。
jboss配置MySql的JNDI
JBOSS安装手册大全,详细介绍了JBOSS安装步骤和安装过程中出现的问题,值得一看
linux 下jdk ,jboss的安装和jboss的自启动完全说明