<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)航:
     
    主站蜘蛛池模板: 99热在线精品免费播放6| 国产在线98福利播放视频免费| 国产成人精品日本亚洲直接| 四虎成人免费网站在线| 一本到卡二卡三卡免费高| 亚洲色大成网站www永久| 国产免费一区二区三区VR| 一区二区三区福利视频免费观看| 亚洲av日韩专区在线观看| 国产亚洲3p无码一区二区| 欧洲精品免费一区二区三区| 黄网站免费在线观看| 亚洲av乱码一区二区三区按摩 | 黄页网站在线观看免费高清| 羞羞漫画页面免费入口欢迎你| 亚洲AV无码乱码在线观看富二代| 处破痛哭A√18成年片免费| 光棍天堂免费手机观看在线观看| 中文字幕乱码亚洲无线三区 | 无码人妻精品中文字幕免费| 国产精品亚洲综合一区在线观看| 亚洲AV福利天堂一区二区三| 国产无遮挡又黄又爽免费视频| 免费视频成人片在线观看| 一级毛片免费在线观看网站| 亚洲熟妇久久精品| 亚洲毛片一级带毛片基地| 永久亚洲成a人片777777| 永久黄网站色视频免费观看| 免费看h片的网站| 无码国产精品一区二区免费式芒果 | 亚洲国产成人久久精品app| 国产精品亚洲mnbav网站 | 免费观看国产精品| 国产免费丝袜调教视频| 免费91麻豆精品国产自产在线观看 | 猫咪免费人成网站在线观看| 五月婷婷免费视频| 亚洲AV无码一区二区乱子仑| 国产精品亚洲四区在线观看| 亚洲美女免费视频|