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

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

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

    隨筆-1  評(píng)論-9  文章-7  trackbacks-0

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

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

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

    下一步,注意選擇目標(biāo)平臺(tái),默認(rèn)為Eclipse version *,將其改成Equinox,如下圖所示:


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


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


    從圖中,可以看到,eclipse為工程自動(dòng)生成了一個(gè)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)驗(yàn)的人應(yīng)該很快就能明白,這就是該工程——實(shí)際上就是上一篇文章中所稱的bundle在Equinox平臺(tái)中的啟動(dòng)入口,相當(dāng)于我們的熟悉的main函數(shù),如果將該bundle運(yùn)行到Equinox中,首先進(jìn)入該bundle的是Activator的start方法,你可以將相關(guān)的服務(wù)、資源在該方法內(nèi)完成向bundleContext的注冊(cè)——文章后面會(huì)具體講到相關(guān)內(nèi)容。在運(yùn)行期,如果想要該bundle停止運(yùn)行,Equinox平臺(tái)將調(diào)用Activator的stop方法,你可以在該方法內(nèi)完成資源的注銷等工作。
            下面我們將要完成首次的Equinox運(yùn)行,將向大家展現(xiàn)bundle到底是如何運(yùn)行起來的。為helloworld選擇運(yùn)行方式,如下圖所示:

            彈出如下對(duì)話框:

            在彈出的對(duì)話框中,新建一個(gè)OSGi Framework運(yùn)行環(huán)境(雙擊OSGi Framework即可,這里為其取名Equinox),選中helloworld(1.0.0),然后點(diǎn)擊右邊的Add Required Bundles按鈕,eclipse將自動(dòng)選中運(yùn)行helloworld的依賴bundle,如果有必要,可以點(diǎn)擊右下的Validate Bundles驗(yàn)證按鈕,驗(yàn)證程序正常運(yùn)行所需的bundle是否都被選中,最后點(diǎn)擊運(yùn)行,回到控制臺(tái):
    osgi> Hello World!
            可以看到,之前在Activator的start方法中的輸出語句已經(jīng)被輸出到控制臺(tái),我們可以通過命令ss查看Equinox的運(yùn)行情況,可以看到一共運(yùn)行了兩個(gè)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)運(yùn)行起來了。
            那么Equinox具體支持哪些命令呢?下表列出了主要的一些命令,如需查看更詳細(xì)的命令清單,則可以在控制臺(tái)鍵入help。

    類別

    命令

    含義

    控制框架

    launch

    啟動(dòng)框架

    shutdown

    停止框架

    close

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

    exit

    立即退出,相當(dāng)于 System.exit

    init

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

    setprop

    設(shè)置屬性,在運(yùn)行時(shí)進(jìn)行

    控制 bundle

    install

    安裝

    uninstall

    卸載

    start

    啟動(dòng)

    stop

    停止

    refresh

    刷新

    update

    更新

    展示狀態(tài)

    status

    展示安裝的 bundle 和注冊(cè)的服務(wù)

    ss

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

    services

    展示注冊(cè)服務(wù)的詳細(xì)信息

    packages

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

    bundles

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

    headers

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

    log

    展示 LOG 入口信息

    其它

    exec

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

    fork

    和 EXEC 不同的是不會(huì)引起阻塞

    gc

    促使垃圾回收

    getprop

    得到屬性,或者某個(gè)屬性

    控制啟動(dòng)級(jí)別

    sl

    得到某個(gè) bundle 或者整個(gè)框架的 start level 信息

    setfwsl

    設(shè)置框架的 start level

    setbsl

    設(shè)置 bundle 的 start level

    setibsl

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

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

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费a级毛片高清视频不卡| 大地资源在线资源免费观看| 91精品免费在线观看| 亚洲AV日韩精品久久久久久久 | 亚洲日韩精品一区二区三区无码| 狠狠热精品免费观看| 亚洲成A∨人片天堂网无码| 国产午夜亚洲精品不卡| 免费一级毛片不卡在线播放| 黄页视频在线观看免费| 亚洲七七久久精品中文国产| 国产男女爽爽爽免费视频| 永久亚洲成a人片777777| 久久九九AV免费精品| 亚洲人成人77777网站不卡| 一二三四在线播放免费观看中文版视频| 亚洲一卡2卡4卡5卡6卡在线99| 成人奭片免费观看| 妇女自拍偷自拍亚洲精品| 亚洲成A人片在线观看无码3D| 精品人妻系列无码人妻免费视频| 亚洲AV天天做在线观看| 69天堂人成无码麻豆免费视频| 亚洲色无码国产精品网站可下载| 免费一级做a爰片性色毛片| 永久免费AV无码网站国产| 亚洲国产成a人v在线观看 | 国内精自视频品线六区免费| 亚洲影院天堂中文av色| 亚洲精品一级无码鲁丝片| 日本免费在线中文字幕| 亚洲一区在线观看视频| 免费人成网站在线播放| 亚洲国产精品免费视频| 亚洲一本一道一区二区三区| 美腿丝袜亚洲综合| 麻豆一区二区免费播放网站| 四虎影视久久久免费观看| 亚洲国产精品久久人人爱| www.亚洲色图| 在线观看H网址免费入口|