<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
     

    完成通過測試程序調用 Triones Framework Runtime 插件的工作:

    1、? 只需要利用 Eclipse 的核心插件包。

    org.eclipse.core.runtime???????? // Eclipse Plugin Runtime

    org.eclipse.osgi??????????????????????????? // Eclipse OSGi Implemention

    org.eclipse.update????????????????? // Eclipse Plugin Loader/Updater

    2、? 平臺啟動就自動調用了 Triones 核心產品 org.softme.triones.runtime.framework 。部分輸出如下:

    Time to load bundles: 10

    Starting application: 921

    ------------------------------------

    Triones Framework: Started!

    Triones Framework: Hello!

    Triones Framework: Stoped!

    ------------------------------------

    ?

    3、? EclipseStarter 設計為應用運行完畢就自動調用 shutdown 使得平臺退出, Triones 框架需要等待 ServletContext Destroyed 事件,因此必須對此進行處理:

    方案一: 創建 Triones 系統任務,并將其掛起直到獲得 ContextDestroyed 事件。

    方案二: 擴展 EclipseStarter 修改運行程序,不自動調用 shutdown ;等待 ContextDestroyed 事件由 TrionesContextListener 顯式調用 shutdown 方法。

    ?

    研究了一下午,方案一似乎不太合理,掛起的系統進程??郁悶中 …..

    ?

    考慮方案二 ….


    以上,實現方案二:

    通過反射直接調用 EclipseStarter startup(String[], Runable) run(Object) 方法以啟動平臺并保留在內存;關閉平臺時調用 EclipseStarter shutdown() 方法。

    ?

    問題: 如何保留進程,如何與 Context 環境交互?

    總不能全部使用反射吧?

    方案: 通過反射取到 TrionesFramework 對象。

    步驟一: Triones Runtime 采取 分離接口模式

    步驟二: 修改 launcher.EclipseLanucher 對象,通過反射獲取 TrionesFramework

    1)????? 需要通過 URLClassLoader 加載 Triones Runtime 插件;

    2)????? 需要修改 DevPath ,增加 Triones Runtime 的插件路徑。

    3)????? 增加接口,取得 TrionesFramework 對象。

    ?

    實現了對 TrionesStarter 的反射調用啟動和關閉 Eclipse 平臺,但是 getFramework 方法調用失敗!!!!!

    Get the Triones framework....

    java.lang.reflect.InvocationTargetException

    ???????? at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    ???????? at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

    ???????? at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    ???????? at java.lang.reflect.Method.invoke(Unknown Source)

    ???????? at org.softme.triones.launcher.TrionesEclipseLauncher.getFramework(TrionesEclipseLauncher.java:815)

    ??

    Caused by: java.lang.NoClassDefFoundError: org/eclipse/core/runtime/Platform

    ???????? at org.softme.triones.runtime.TrionesFramework.<init>(TrionesFramework.java:55)

    ???????? at org.softme.triones.runtime.TrionesStarter.getFramework(TrionesStarter.java:52)

    ???????? ... 22 more

    ?

    看來設計架構上還是出了問題,檢查一下 URLClassLoader 的文檔:

    StartupClassLoader 僅僅包含啟動包的類路徑,而 Triones 必須將所有類路徑加載到 context 中,才能夠實現 Context Servlet )與框架的交互。

    以上方案失敗!! ? Sign….. : ( ):

    ?

    改進方案,設法使得 OSGi 類路徑加載到 Context 路徑中!

    ( 雖然難度大了點,但是必須解決 )


    不得窺道門,不得悟佛門,不得入窄門,實乃破門。
    posted on 2006-03-27 10:20 破門 閱讀(416) 評論(0)  編輯  收藏 所屬分類: Triones
    主站蜘蛛池模板: 亚洲午夜精品一区二区麻豆| 久久青青草原亚洲AV无码麻豆 | 亚洲国产成人久久综合野外| 最新亚洲卡一卡二卡三新区| 一二三四在线播放免费观看中文版视频 | 天天摸天天操免费播放小视频| 亚洲人成综合网站7777香蕉| 99视频全部免费精品全部四虎| 亚洲成av人片在线看片| 最近免费中文字幕大全免费| 亚洲毛片无码专区亚洲乱| 免费不卡在线观看AV| 91久久亚洲国产成人精品性色| 久久久久久国产精品免费无码 | 亚洲乱亚洲乱少妇无码| 久久九九久精品国产免费直播| 亚洲深深色噜噜狠狠爱网站| 日本高清免费观看| 亚洲精品国产啊女成拍色拍| 大陆一级毛片免费视频观看| 色网站在线免费观看| 亚洲精品你懂的在线观看| 蜜臀98精品国产免费观看| 亚洲欧洲免费无码| 国产精品亚洲美女久久久| 男人进去女人爽免费视频国产 | 亚洲欧洲日产国码二区首页| 在线jyzzjyzz免费视频| 一级毛片视频免费| 亚洲精品第五页中文字幕| 日韩精品视频免费在线观看| 中文字幕视频免费在线观看| 亚洲综合自拍成人| 国产一区二区三区免费视频| a级毛片在线视频免费观看| 亚洲av乱码一区二区三区香蕉| 亚洲国产一成久久精品国产成人综合 | 99视频免费观看| 国产亚洲精品第一综合| 亚洲国产成人久久综合一| 操美女视频免费网站|