sharajava

          JBoss啟動過程(譯)

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

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

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

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

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

          ???????? jar包及在ServerLoader中注冊的類路徑創(chuàng)建一個URLClassLoader的實例, 把傳入的ClassLoader作為該URLClassLoaderparent.

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

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

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

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

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

          ???????? jboss域內(nèi), 通過MBeanServerFactorycreateMBeanServer(String)方法創(chuàng)建MbeanServer實例.

          ???????? MBean Server上注冊ServerImplServerConfigImpl兩個MBean.

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

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

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

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

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

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

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

          posted on 2006-07-21 08:27 sharajava 閱讀(1616) 評論(0)  編輯  收藏 所屬分類: 應(yīng)用服務(wù)器


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 即墨市| 奉新县| 青铜峡市| 安宁市| 称多县| 保靖县| 疏附县| 东光县| 霍州市| 临湘市| 兰州市| 集贤县| 永康市| 峡江县| 界首市| 婺源县| 寻乌县| 枞阳县| 黄浦区| 西盟| 云安县| 宜州市| 神农架林区| 乐东| 汕头市| 安庆市| 永清县| 大埔县| 岢岚县| 石阡县| 锡林郭勒盟| 凌源市| 商丘市| 抚顺市| 林州市| 宜章县| 若尔盖县| 伊通| 蛟河市| 固阳县| 无为县|