<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    破門(mén)點(diǎn)滴(Java技術(shù)版)

    在日常學(xué)習(xí)和工作中記錄

      BlogJava :: 首頁(yè) ::  :: 聚合  :: 管理
      15 Posts :: 7 Stories :: 36 Comments :: 0 Trackbacks
     

    關(guān)于ClassLoader 問(wèn)題的分析:

    EclipeClassLoader 創(chuàng)建:


    org.eclipse.core.runtime.adaptor.EclipseElementFactory

    public org.eclipse.osgi.framework.adaptor.BundleClassLoader createClassLoader

    (ClassLoaderDelegate delegate, ProtectionDomain domain, S

    tring[] bundleclasspath, AbstractBundleData data) {

                  
    return new EclipseClassLoader(delegate, domain, 

    bundleclasspath, data.getAdaptor().getBundleClassLoaderParent(), data);

           }


    獲取ClassLoaderParent 的方法,使用了EclipseAdaptor

    Adaptor getBundleClassLoaderParent() 如何去定 bundleClassLoaderParent?


     1org.eclipse.osgi.framework.adaptor.core. AbstractFrameworkAdaptor
     2
     3/**
     4
     5        * The BundleClassLoader parent to use when creating BundleClassLoaders.
     6
     7        * The behavior of the ParentClassLoader will load classes
     8
     9        * from the boot strap classloader.
    10
    11        */

    12
    13       protected static ClassLoader bundleClassLoaderParent;
    14
    15 
    16
    17       static {
    18
    19              // check property for specified parent
    20
    21              String type = 
    22
    23System.getProperty(PROP_PARENT_CLASSLOADER, PARENT_CLASSLOADER_BOOT);
    24
    25              if (PARENT_CLASSLOADER_FWK.equalsIgnoreCase(type))
    26
    27                     bundleClassLoaderParent = FrameworkAdaptor.class.getClassLoader();
    28
    29              else if (PARENT_CLASSLOADER_APP.equalsIgnoreCase(type))
    30
    31                     bundleClassLoaderParent = ClassLoader.getSystemClassLoader();
    32
    33              else if (PARENT_CLASSLOADER_EXT.equalsIgnoreCase(type)) {
    34
    35                     ClassLoader appCL = ClassLoader.getSystemClassLoader();
    36
    37                     if (appCL != null)
    38
    39                            bundleClassLoaderParent = appCL.getParent();
    40
    41              }

    42
    43 
    44
    45              // default to boot classloader
    46
    47              if (bundleClassLoaderParent == null)
    48
    49                     bundleClassLoaderParent = new ParentClassLoader();
    50
    51       }

    52
    53


    如果使用了了boot Classloader ParentClassLoader 是新建的 boot,這里分析看來(lái)應(yīng)該使用framework 或者系統(tǒng)的ClassLoader吧。

    根據(jù)以上的分析,對(duì)Triones的啟動(dòng)環(huán)境進(jìn)行了調(diào)整:

    1、直接引用 org.eclipse.osgi 中的啟動(dòng)包,避免使用反射。注:可以直接調(diào)用EclipseStarter.run(null) 了。

    2、Triones Runtime 拆分成為 triones-core.jar (包括主要的服務(wù)接口 ItrionesFramework 等)和 triones-runtime.jar (Triones Runtime Eclipse插件)

    3、修改 Eclipse config.ini 配置。

    # osgi classloader :

    osgi.parentClassloader = fwk

    根據(jù)上面的分析, fwk 表示使用 FrameworkAdaptor ClassLoader 作為OSGiparent classloader

    bundleClassLoaderParent = FrameworkAdaptor.class.getClassLoader();



    不得窺道門(mén),不得悟佛門(mén),不得入窄門(mén),實(shí)乃破門(mén)。
    posted on 2005-11-28 16:25 破門(mén) 閱讀(540) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Triones
    主站蜘蛛池模板: 免费大黄网站在线观看| 亚洲欧洲春色校园另类小说| 人妻无码一区二区三区免费| 亚洲国产成人资源在线软件| 国产精品视_精品国产免费| 久久久久久国产a免费观看不卡 | 亚洲一卡2卡三卡4卡无卡下载| 国产成人免费福利网站| 在线观看免费无码视频| 亚洲av无码国产综合专区 | 亚洲另类图片另类电影| 亚洲成AV人网址| 永久看日本大片免费35分钟| 国产精品亚洲а∨天堂2021| 亚洲爱情岛论坛永久| 四虎成人免费观看在线网址| 热99RE久久精品这里都是精品免费| 亚洲国产美女精品久久| 亚洲综合精品香蕉久久网| 最近2019中文字幕免费看最新| 99视频免费在线观看| 精品国产日韩亚洲一区在线| 亚洲AV日韩精品久久久久久久| 成人免费网站在线观看| 久久久久成人片免费观看蜜芽| 日韩国产精品亚洲а∨天堂免| 亚洲制服中文字幕第一区| 亚洲国产aⅴ综合网| 免费人成视频在线| 无码av免费网站| 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲国产精品乱码在线观看97| 国产亚洲精品成人AA片新蒲金| 在线观看免费污视频| 99在线观看免费视频| 中文字幕的电影免费网站| 亚洲av日韩av永久无码电影| 亚洲免费人成视频观看| 亚洲AV无码国产丝袜在线观看 | 亚洲av麻豆aⅴ无码电影| 久久久久久久91精品免费观看|