GalaxyPilot —— D.S


                  生命不熄,戰斗不止
          數據加載中……

          JBoss啟動過程(譯) zt

          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.

          posted on 2007-11-19 16:08 舵手 閱讀(3585) 評論(2)  編輯  收藏

          評論

          # re: JBoss啟動過程(譯) zt  回復  更多評論   

          不錯!
          2007-11-22 12:51 | 汪保杰(Jack)

          # re: JBoss啟動過程(譯) zt  回復  更多評論   


          I am just on the load to jboss
          Mark & Thanks
          2008-01-16 09:32 | Severn

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 恩平市| 车致| 北安市| 白水县| 红河县| 临江市| 永川市| 霞浦县| 息烽县| 泗水县| 公安县| 平度市| 北票市| 望奎县| 民和| 泊头市| 海宁市| 和顺县| 奇台县| 达孜县| 凤山县| 婺源县| 鄂托克前旗| 烟台市| 库车县| 滨州市| 石景山区| 双柏县| 门源| 唐河县| 贡觉县| 板桥市| 定陶县| 广宁县| 贞丰县| 嘉义县| 教育| 鄂伦春自治旗| 铜梁县| 沈丘县| 阜阳市|