博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jboss的启动过程
阅读量:4878 次
发布时间:2019-06-11

本文共 1648 字,大约阅读时间需要 5 分钟。



1 在%JBOSS_HOME%/bin目录下运行启动脚本 run.bat,通过org.jboss.Main.main(Dtring[])作为入口点,引发启动.

2 main 方法创建一个名为jboss的线程组,随后启动一个属于该线程组的线程,这个线程调Main.boot方法.

3 boot方法处理main函数的参数,随后创建一个org.jboss.system.server.ServerLoader的对象实例,创建实例的参数是系统属性以及所指定的其他属性.

4 xml解析器的库文件jboss-jmx.jar,concurrent.jar以及参数中指定的其他库和类路径被注册到ServerLoader中.

5 使用ServerLoader.load(ClassLoader)创建jboss实例,参数ClassLoader为当前线程上下文的类装载器.此方法返回的实例是org.jboss.system.server.Server接口的实现类实例.

    创建jboss实例的具体过程如下:

     1) 创建一个java.net.URLClassLoader实例,其中包含注册到ServerLoader中的jar和URL.该实例将传入的参数ClassLoder作为它的父装载器,并将它保存起来作为线程上下文的类装载器.

     2) Server接口的实现类的类名被用以决定boss.server.type,这个值默认为org.jboss.system.server.ServerImpl.

     3) 加载Server接口的实现类,并使用无参数的构造函数进行实例化.在ServerLoader.load方法中传入的上下文装载器被保存在服务器实例中,然后服务器实例被返回.

6 调用Server.init方法对服务器实例进行初始话.参数为ServerLoader构造函数中传入的Properties参数.

7 调用Server.start().启动服务器实例.

        默认的服务器实例实现执行以下任务:

        1) 将当前进程上下文的加载器设置为加载ServerImpl类的加载器

        2) 在jboss域下使用MBeanServerFactory.createMBeanServer(String),创建MBeanServer实例.

        3) 在MBean服务器上注册ServerImpl和ServerConfigImpl这两个MBean

        4) 对同意的类装载器共享池进行初始化,装入所有可选的补丁目录中的jar和con目录中的服务器配置文件.针对每一个jar和目录,都会创建一个org.jboss.mx.loading.UnifiedClassLoader实例,并注册到同意共享池中.这其中的一个UnifiedClassLoader被设置为当前线程上下文中的类装载器,使所有的UnifiedClassLoader都可以通过线程上下文的类装载器获得.

        5) 创建org.jboss.system.ServiceController. 这个MBean用来管理JBoss MBean服务的生命周期.

        6) 创建并启动org.jboss.deployment.MainDeployer.  MainDeployer.用来管理部署依赖关系,并根据部署的类型选择合理的部署器进行部署.

         7)  创建并启动org.jboss.deployment.MainDeployer. JARDeployer,用来部署简单的JAR库.

         8) 创建并启动org.jboss.deployment.MainDeployer. SARDeployer,用来部署JBoss MBean服务.

         9) 调用MainDeployer 来部署conf/jboss-service.xml中所定义的服务,

         10) 恢复当前线程上下文中的类装载器.

转载于:https://www.cnblogs.com/shitou/archive/2011/04/29/2032990.html

你可能感兴趣的文章
洛谷P4287 [SHOI2011]双倍回文(回文自动机)
查看>>
用户交互程序,格式化输出
查看>>
GNOME的发展与对比
查看>>
SPOJ PT07X Vertex Cover
查看>>
$ python-json模块的基本用法
查看>>
5.6.3.4 trim()方法
查看>>
Cookie、Session和自定义分页
查看>>
SQL演练
查看>>
React Antd中样式的修改
查看>>
Spring 应用外部属性文件 配置 context 错误
查看>>
导入lxml找不到etree,报ImportError:DLL load failed:找不到指定的程序
查看>>
面向对象一
查看>>
大象的崛起!Hadoop七年发展风雨录
查看>>
图片二值化
查看>>
数据库常用函数
查看>>
集合之TreeSet(含JDK1.8源码分析)
查看>>
C语言学习的记忆
查看>>
Lucene学习总结之三:Lucene的索引文件格式(1) 2014-06-25 14:15 1124人阅读 ...
查看>>
node-sass 报错的解决方法
查看>>
Python:GeoJson格式的多边形裁剪Tiff影像并计算栅格数值
查看>>