GalaxyPilot —— D.S


                  生命不熄,戰(zhàn)斗不止
          數(shù)據(jù)加載中……

          JBoss啟動(dòng)過程(譯) zt

          1.      org.jboss.Main.main(String[]) 為入口.

          2.      main 函數(shù)創(chuàng)建一個(gè)名叫”jboss”的線程組, 然后創(chuàng)建一個(gè)屬于該組的線程, 在線程中執(zhí)行boot方法.

          3.      boot 方法首先處理main函數(shù)中的參數(shù)(及一些其它的系統(tǒng)環(huán)境設(shè)置), 接著就用系統(tǒng)的屬性創(chuàng)建了org.jboss.system.server.ServerLoader實(shí)例[new ServerLoader(props)].

          4.      ServerLoader 注冊(cè)Jboss相關(guān)的類路徑, 包括XML解析器, jboss-jmx.jar, concurrent.jar及其它的一些額外的類路徑.

          5.      ServerLoader 通過load(ClassLoader)方法創(chuàng)建Jboss Server實(shí)例. 參數(shù)ClassLoader是ClassLoader parentCL = Thread.currentThread(). getContextClassLoader( )得到的當(dāng)前線程的類加載器. 創(chuàng)建的Server實(shí)例是org.jboss.system.server.Server接口的實(shí)現(xiàn). load(ClassLoader)方法的細(xì)節(jié):

          Ø        用jar包及在ServerLoader中注冊(cè)的類路徑創(chuàng)建一個(gè)URLClassLoader的實(shí)例, 把傳入的ClassLoader作為該URLClassLoader的parent.

          Ø        Server 接口的實(shí)現(xiàn)類由系統(tǒng)屬性 jboss.server.type決定, 默認(rèn)是      org.jboss.system.server.ServerImpl.

          Ø        URLClassLoader 通過無參構(gòu)造函數(shù)加載Server接口實(shí)現(xiàn)的實(shí)例. 在加載前把當(dāng)前線程的類加載器置為該URLClassLoader, 在加載完成后再置回之前傳入的ClassLoader.

          6.      Server 實(shí)例用系統(tǒng)屬性進(jìn)行初始化[server.init(props)].

          7.      服務(wù)起動(dòng)[server.start()]. 起動(dòng)過程的默認(rèn)實(shí)現(xiàn)如下:

          Ø        把當(dāng)前線程類型加載器置為加載該Server接口實(shí)現(xiàn)實(shí)例的ClassLoader.

          Ø        在jboss域內(nèi), 通過MBeanServerFactory的createMBeanServer(String)方法創(chuàng)建MbeanServer實(shí)例.

          Ø        在MBean Server上注冊(cè)ServerImpl和ServerConfigImpl兩個(gè)MBean.

          Ø        初始化統(tǒng)一的類加載倉庫(unified class loader repository), 用來裝載服務(wù)器配置目錄及其它可選目錄下的jar文件. 對(duì)于每一個(gè)jar文件和類目錄都會(huì)創(chuàng)建一個(gè)相應(yīng)的org.jboss.jmx.loading.UnifiedClassLoader實(shí)例, 并且注冊(cè)到統(tǒng)一的倉庫中. 其中一個(gè)UnifiedClassLoader實(shí)例會(huì)被設(shè)置為當(dāng)前線程上下文的ClassLoader. [?: This effectively makes allUnifiedClassLoaders available through the thread context class loader.]

          Ø        接下來創(chuàng)建org.jboss.system.ServiceController的MBean實(shí)例. ServiceController管理JBoss MBean服務(wù)的生命周期.

          Ø        org.jboss.deployment.MainDeployer 實(shí)例被創(chuàng)建并起動(dòng). MainDeployer管理部署的依賴和部署的定向.

          Ø        org.jboss.deployment. JARDeployer 實(shí)例被創(chuàng)建并起動(dòng). JARDeployer處理jar包的部署.

          Ø        org.jboss.deployment. SARDeployer 實(shí)例被創(chuàng)建并起動(dòng). SARDeployer處理JBoss MBean服務(wù)的部署.

          Ø        MainDeployer 對(duì)當(dāng)前服務(wù)器文件環(huán)境里conf/jboss-service.xml定義的服務(wù)進(jìn)行部署.

          啟動(dòng)過程結(jié)束. 把當(dāng)前線程上下文類加載器置回為起動(dòng)前的ClassLoader.

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

          評(píng)論

          # re: JBoss啟動(dòng)過程(譯) zt  回復(fù)  更多評(píng)論   

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

          # re: JBoss啟動(dòng)過程(譯) zt  回復(fù)  更多評(píng)論   


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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 饶河县| 襄城县| 平顶山市| 壶关县| 奈曼旗| 高陵县| 图片| 石家庄市| 缙云县| 福安市| 绥棱县| 南丰县| 苏尼特右旗| 华宁县| 开化县| 阿拉善右旗| 定襄县| 泌阳县| 肇州县| 曲麻莱县| 济源市| 桃园市| 灌南县| 台湾省| 汝州市| 曲麻莱县| 淮北市| 阳山县| 儋州市| 南开区| 康平县| 五大连池市| 金昌市| 辛集市| 积石山| 浪卡子县| 金寨县| 辉南县| 南京市| 武乡县| 边坝县|