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

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

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

    隨筆-1  評論-9  文章-7  trackbacks-0

    1. 開發(fā)環(huán)境的準備

            現(xiàn)在的eclipse都已經(jīng)包含了Equinox,無需單獨下載。
    2. 開發(fā)OSGi的HelloWorld應用程序

           在這一節(jié),我們將開發(fā)一個OSGi bundle,演示如何利用Equinox進行OSGi bundle的開發(fā)、運行及調(diào)試,為之后的示例做準備。
           首先,新建一個Plug-in工程,如下圖所示:

    下一步,注意選擇目標平臺,默認為Eclipse version *,將其改成Equinox,如下圖所示:


    之后按默認下一步即可,到最后一步時,無需根據(jù)模板創(chuàng)建工程,去掉默認的勾,如下圖:


    點擊完成,創(chuàng)建的工程目錄如下圖所示:


    從圖中,可以看到,eclipse為工程自動生成了一個Activator類,如下所示:
    package helloworld;   
      
    import org.osgi.framework.BundleActivator;   
    import org.osgi.framework.BundleContext;   
      
    public class Activator implements BundleActivator {   
      
        
    /*  
         * (non-Javadoc)  
         * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)  
         
    */
      
        
    public void start(BundleContext context) throws Exception {   
            System.out.println(
    "Hello World!");   
        }
       
      
        
    /*  
         * (non-Javadoc)  
         * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)  
         
    */
      
        
    public void stop(BundleContext context) throws Exception {   
        }
       
      
    }
      
            有過eclipse插件開發(fā)經(jīng)驗的人應該很快就能明白,這就是該工程——實際上就是上一篇文章中所稱的bundle在Equinox平臺中的啟動入口,相當于我們的熟悉的main函數(shù),如果將該bundle運行到Equinox中,首先進入該bundle的是Activator的start方法,你可以將相關(guān)的服務、資源在該方法內(nèi)完成向bundleContext的注冊——文章后面會具體講到相關(guān)內(nèi)容。在運行期,如果想要該bundle停止運行,Equinox平臺將調(diào)用Activator的stop方法,你可以在該方法內(nèi)完成資源的注銷等工作。
            下面我們將要完成首次的Equinox運行,將向大家展現(xiàn)bundle到底是如何運行起來的。為helloworld選擇運行方式,如下圖所示:

            彈出如下對話框:

            在彈出的對話框中,新建一個OSGi Framework運行環(huán)境(雙擊OSGi Framework即可,這里為其取名Equinox),選中helloworld(1.0.0),然后點擊右邊的Add Required Bundles按鈕,eclipse將自動選中運行helloworld的依賴bundle,如果有必要,可以點擊右下的Validate Bundles驗證按鈕,驗證程序正常運行所需的bundle是否都被選中,最后點擊運行,回到控制臺:
    osgi> Hello World!
            可以看到,之前在Activator的start方法中的輸出語句已經(jīng)被輸出到控制臺,我們可以通過命令ss查看Equinox的運行情況,可以看到一共運行了兩個bundle,如下:
    ss

    Framework is launched.

    id State       Bundle
    0 ACTIVE      org.eclipse.osgi_3.4.3.R34x_v20081215-1030
    1 ACTIVE      helloworld_1.0.0

            還記得之前講到過的bundle的幾種狀態(tài)吧?helloworld已經(jīng)運行起來了。
            那么Equinox具體支持哪些命令呢?下表列出了主要的一些命令,如需查看更詳細的命令清單,則可以在控制臺鍵入help。

    類別

    命令

    含義

    控制框架

    launch

    啟動框架

    shutdown

    停止框架

    close

    關(guān)閉、退出框架

    exit

    立即退出,相當于 System.exit

    init

    卸載所有 bundle(前提是已經(jīng) shutdown)

    setprop

    設(shè)置屬性,在運行時進行

    控制 bundle

    install

    安裝

    uninstall

    卸載

    start

    啟動

    stop

    停止

    refresh

    刷新

    update

    更新

    展示狀態(tài)

    status

    展示安裝的 bundle 和注冊的服務

    ss

    展示所有 bundle 的簡單狀態(tài)

    services

    展示注冊服務的詳細信息

    packages

    展示導入、導出包的狀態(tài)

    bundles

    展示所有已經(jīng)安裝的 bundles 的狀態(tài)

    headers

    展示 bundles 的頭信息,即 MANIFEST.MF 中的內(nèi)容

    log

    展示 LOG 入口信息

    其它

    exec

    在另外一個進程中執(zhí)行一個命令(阻塞狀態(tài))

    fork

    和 EXEC 不同的是不會引起阻塞

    gc

    促使垃圾回收

    getprop

    得到屬性,或者某個屬性

    控制啟動級別

    sl

    得到某個 bundle 或者整個框架的 start level 信息

    setfwsl

    設(shè)置框架的 start level

    setbsl

    設(shè)置 bundle 的 start level

    setibsl

    設(shè)置初始化 bundle 的 start level

            至此,我們已經(jīng)成功的演示了helloworld,初步了解了OSGi的bundle是如何開發(fā)并運行的。

    posted on 2010-03-28 16:58 Dreava 閱讀(2204) 評論(0)  編輯  收藏 所屬分類: OSGi

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 在线看亚洲十八禁网站| 国产婷婷综合丁香亚洲欧洲| EEUSS影院WWW在线观看免费| 亚洲av日韩片在线观看| 特级一级毛片免费看| 亚洲成片观看四虎永久| 一级毛片免费在线| 亚洲熟女一区二区三区| 国产一级淫片a免费播放口| 亚洲国产成人久久精品影视| 免费国产黄网站在线观看可以下载 | 成全视频免费高清| 亚洲日本在线电影| 女人张腿给男人桶视频免费版| 亚洲三级在线观看| 超pen个人视频国产免费观看| 看全免费的一级毛片| 亚洲精品无码av人在线观看| 日韩精品无码专区免费播放| 亚洲中文字幕无码av在线| 国产又大又黑又粗免费视频 | 无码人妻一区二区三区免费视频| 在线亚洲精品福利网址导航| 免费看a级黄色片| 一级特黄a大片免费| 亚洲性天天干天天摸| 免费电影在线观看网站| 国产精品99爱免费视频| 久久亚洲AV成人无码软件| 在线免费一区二区| caoporn国产精品免费| 亚洲黄色在线视频| 免费国产精品视频| 日韩在线不卡免费视频一区| 亚洲精品无码一区二区| 亚洲中文久久精品无码| 无码免费午夜福利片在线| 国产黄在线观看免费观看不卡| wwwxxx亚洲| 国产亚洲精品观看91在线| 最近免费中文字幕大全|