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

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

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

    破門點滴(Java技術版)

    在日常學習和工作中記錄

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

    關于ClassLoader 問題的分析:

    EclipeClassLoader 創建:


    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,這里分析看來應該使用framework 或者系統的ClassLoader吧。

    根據以上的分析,對Triones的啟動環境進行了調整:

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

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

    3、修改 Eclipse config.ini 配置。

    # osgi classloader :

    osgi.parentClassloader = fwk

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

    bundleClassLoaderParent = FrameworkAdaptor.class.getClassLoader();



    不得窺道門,不得悟佛門,不得入窄門,實乃破門。
    posted on 2005-11-28 16:25 破門 閱讀(540) 評論(0)  編輯  收藏 所屬分類: Triones
    主站蜘蛛池模板: 免费吃奶摸下激烈视频| 最近新韩国日本免费观看 | 免费看搞黄视频网站| 亚洲伦乱亚洲h视频| 色多多www视频在线观看免费| 四虎永久成人免费| 香蕉视频在线观看免费| 亚洲国产精品碰碰| 两个人看的www免费高清| 亚洲人成中文字幕在线观看| 国内少妇偷人精品视频免费| 亚洲欧洲日产国产综合网| 无码国产精品一区二区免费vr | 中文字幕无码免费久久99| 在线综合亚洲欧洲综合网站| 天天摸天天操免费播放小视频| 亚洲日本在线电影| 免费国产不卡午夜福在线| a免费毛片在线播放| 亚洲va无码专区国产乱码| 久久久久久精品免费免费自慰| 亚洲中字慕日产2020| 国产小视频在线免费| 一区视频免费观看| 久久精品国产亚洲77777| 性色av无码免费一区二区三区| 亚洲精品无码久久久久APP| 亚洲高清无码专区视频| 国产成人精品无码免费看| 亚洲三级在线观看| 中文字幕亚洲不卡在线亚瑟| **实干一级毛片aa免费| 久久亚洲精品无码gv| 亚洲自偷自偷偷色无码中文| 毛片免费全部播放无码| 日韩欧美亚洲中文乱码| 亚洲精品~无码抽插| 全免费一级午夜毛片| 国产一级黄片儿免费看| 亚洲mv国产精品mv日本mv| 亚洲精品国产精品乱码不卞|