1. 程式人生 > >OSGI企業應用開發(二)Eclipse中搭建Felix執行環境

OSGI企業應用開發(二)Eclipse中搭建Felix執行環境

上篇文章介紹了什麼是OSGI以及使用OSGI構建應用的優點,接著介紹了兩款常用的OSGI實現,分別為Apache Felix和Equinox,接下來開始介紹如何在Eclipse中使用Apache Felix和Equinox搭建OSGI執行環境。

一、搭建Apache Felix執行環境

上篇文章中介紹了Felix的下載與使用,本節我們在Eclipse中搭建Felix執行環境,並開發一個自己的Bundle,然後釋出到Felix容器中,下載解壓後的Felix框架檔案結構如下:

felix-framework-5.6.1
    │  DEPENDENCIES
    │  LICENSE
    │  LICENSE.kxml
2 │ NOTICE │ ├─bin │ felix.jar │ ├─bundle │ org.apache.felix.bundlerepository-2.0.8.jar │ org.apache.felix.gogo.command-0.16.0.jar │ org.apache.felix.gogo.runtime-0.16.2.jar │ org.apache.felix.gogo.shell-0.10.0.jar │ ├─conf │ config.properties
│ └─doc │ ....

bin/felix.jar檔案為Felix最核心的部分,包括Felix框架的啟動類,bundle目錄下為Felix的核心Bundle,包括控制檯命令,執行環境,遠端Bundle資源等,conf/config.properties檔案為Felix的配置資訊,用於配置日誌級別,Http服務埠號。瞭解了這些之後,接下來我們就開始在Ecilpse中搭建Felix的執行環境。
1、開啟Eclipse,新建一個Java工程,名稱為org.apache.felix.main。

2、在新建的Java工程中新建一個lib目錄,接著把felix.jar拷貝到該目錄下,然後將Felix框架中的bundle和conf目錄拷貝到工程中。完成後專案結構如下圖所示:
這裡寫圖片描述


3、接下來將felix.jar新增到classpath中,操作很簡單,在felix.jar上單擊滑鼠右鍵=>Build Path=>Add to Build Path。

4、接著單擊Run=>Debug Configrations…選單,在Java Application條目上單擊右鍵new,配置如下圖所示:
這裡寫圖片描述
5、單擊Debug按鈕即可啟動Felix框架,接著可以在控制檯中輸入lb命令檢視所有執行的Bundle,如下圖所示:
這裡寫圖片描述

二、開發一個自己的Bundle

到此為止Felix執行環境已經搭建起來了,接下來我們可以開發一個自己的Bundle。
1、新建一個Plug-in Project,如下圖所示:
這裡寫圖片描述

如上圖所示,工程名稱為com.csdn.osgi.common,在Target Platform的an OSGI framewor選項,選擇standard,單擊Next按鈕,進入如下介面:
這裡寫圖片描述
2、繼續單擊Next按鈕,進入如下介面,選擇Hello OGSI Bundle,單擊Finish按鈕。
這裡寫圖片描述
3、工程新建完畢後,專案結構如下圖所示:
這裡寫圖片描述
Eclipse嚮導為我們生成一個Activator,該類的內容如下:

package com.csdn.osgi.common;

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 {
        System.out.println("Goodbye World!!");
    }

}

該類用於控制Bundle的生命週期,start方法會在Bundle啟動時呼叫,而stop方法則會在Bundle解除安裝是呼叫。
4、接下來就是釋出該Bundle,在com.csdn.osgi.common工程上單擊右鍵=>Export,如下圖所示:
這裡寫圖片描述
5、單擊Next按鈕,選擇匯出路徑,如下圖所示:
這裡寫圖片描述
6、將匯出的jar包放到org.apache.felix.main工程的bundle目錄下,Felix啟動時即可自動載入該目錄下的bundle。
這裡寫圖片描述
7、重新執行Felix框架,輸入lb命令,控制檯輸出內容如下:

Hello World!!
____________________________
Welcome to Apache Felix Gogo

g! lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (5.6.1)|5.6.1
    1|Active     |    1|Apache Felix Bundle Repository (2.0.8)|2.0.8
    2|Active     |    1|Apache Felix Gogo Command (0.16.0)|0.16.0
    3|Active     |    1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
    4|Active     |    1|Apache Felix Gogo Shell (0.10.0)|0.10.0
    5|Active     |    1|Common (1.0.0.201612172059)|1.0.0.201612172059
g! 

控制檯輸出Hello World!!,說明我們的自己開發的Bundle已經成功執行!實際專案中我們可以使用構建工具Ant來幫助我們完成這一操作,本節內容就介紹這麼多,下節介紹Eclipse中搭建Equinox執行環境。
本文原始碼下載地址:
http://download.csdn.net/detail/rongbo_j/9714354