jboss的启动过程[转]

转: http://blog.csdn.net/peace_apple/archive/2007/12/06/1920460.aspx

 

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) 恢复当前线程上下文中的类装载器.

 

你可能感兴趣的:(apple,.net,xml,jboss,配置管理)