<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
    主站蜘蛛池模板: 最近最好的中文字幕2019免费| 久久久久久久亚洲Av无码| 亚洲国产综合无码一区二区二三区| 亚洲精品乱码久久久久久按摩| 亚洲jjzzjjzz在线观看| 男人免费视频一区二区在线观看| 久久久久久国产精品免费无码| 免费国产在线观看| 亚洲欧洲日本国产| a级毛片免费观看视频| 日韩免费观看的一级毛片| 91亚洲一区二区在线观看不卡| 一进一出60分钟免费视频| 24小时免费直播在线观看| 亚洲AV无码乱码国产麻豆穿越| 精品无码专区亚洲| 在线天堂免费观看.WWW| 久久亚洲精品无码VA大香大香| 57pao国产成视频免费播放 | 日韩高清在线免费观看| 爱情岛亚洲论坛在线观看| 亚洲另类少妇17p| 日韩a级无码免费视频| 人人狠狠综合久久亚洲高清| 亚洲国产精品成人综合久久久 | 亚洲成年人免费网站| 国内免费高清在线观看| 免费一级特黄特色大片| 亚洲av无码成h人动漫无遮挡| 成人免费大片免费观看网站| 亚洲国产精品lv| 久久久久久AV无码免费网站下载| 亚洲精品无码久久久影院相关影片| 99在线观看视频免费| 亚洲va久久久噜噜噜久久| 色影音免费色资源| 视频免费1区二区三区| 亚洲国产综合久久天堂| 最近的中文字幕大全免费8| 亚洲成a人片在线观看天堂无码| 在线免费观看国产视频|