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

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

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

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

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

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

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

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

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

    1、直接引用 org.eclipse.osgi 中的啟動包,避免使用反射。注:可以直接調(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();



    不得窺道門,不得悟佛門,不得入窄門,實(shí)乃破門。
    posted on 2005-11-28 16:25 破門 閱讀(548) 評論(0)  編輯  收藏 所屬分類: Triones
    主站蜘蛛池模板: 日本高清免费不卡在线| 亚洲精品无码久久久久秋霞 | 一级毛片免费不卡直观看| 抽搐一进一出gif免费视频| 青青操在线免费观看| 桃子视频在线观看高清免费完整| 免费在线观看的网站| 国产资源免费观看| 亚洲人成电影在线天堂| 亚洲人成网站在线在线观看| 好大好深好猛好爽视频免费| 中文字幕一精品亚洲无线一区| 亚洲国产成人精品电影| 男人j进女人p免费视频| 99爱在线精品视频免费观看9| 国产日产成人免费视频在线观看| 国产成人亚洲午夜电影| 足恋玩丝袜脚视频免费网站| 俄罗斯极品美女毛片免费播放| 亚洲一区二区三区91| 99精品免费视品| 亚洲系列国产精品制服丝袜第| 爱情岛论坛免费视频| 午夜私人影院免费体验区| 深夜a级毛片免费视频| 国产成人亚洲综合无码精品| 在线亚洲精品视频| 亚洲精品自产拍在线观看| 成在线人直播免费视频| 在线观看免费国产视频| gogo免费在线观看| 免费国产一级特黄久久| 两个人看的www免费视频| 亚洲乱码一二三四区乱码| 久久狠狠躁免费观看| 久久亚洲中文字幕精品一区四| WWW亚洲色大成网络.COM| 最近免费中文字幕4| 亚洲三级在线观看| 女人张开腿等男人桶免费视频| 色老头综合免费视频|