OSGi Framework可說是軟體的USB。目前實作OSGi container的有Knopflerfish, EquinoxApacheFelix,其中Eclipse 3.3Europa預設支援Equinox

如同Servlet, EJB規範,OSGi規範二事:在OSGi container上的服務群集必須實作,並在containerapplication之間的訂定契約,亦即在OSGi平台上開發,首先要用OSGiAPI實作你的application,再佈署到OSGi container上。從開發者觀點,OSGi有下列優勢:

1.你可以在不用重啟container下,在你的application裡對不同模組動態進行install, uninstall, startstop

2.允許你的application指定特定模組同時間運行一個以上不同的版本。

3.OSGi提供良好的基礎設施來開發SOA,可應用在內嵌、行動裝置與富文本。

參考網址:

http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html

http://www.javaworld.com/javaworld/jw-04-2008/jw-04-osgi2.html

實作方式:

1.在Eclipse,File --> New --> Project,選擇Plug-in Project,在Project Name設為com.javaworld.sample.HelloWorld,而Target Name設為OSGi framework --> Standard,再預設一直Next到Template Dialog,選擇Hello OSGi Bundle,再Finsh,會自動generate一些code,清單如下:

(1)com.javaworld.sample.helloworld下有一個c,內容如下:

package com.javaworld.sample.helloworld;

import org.osgi.framework.BundleActivator;

import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {
 public void start(BundleContext context) throws Exception {
  System.out.println("Hello World!!");
 }
 
 public void stop(BundleContext context) throws Exception {
  System.out.println("Goodbye World!!");
 }
}

(2)在\META-INF下有個MAINFEST.MF的設定檔Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloWorld Plug-in
Bundle-SymbolicName: com.javaworld.sample.HelloWorld
Bundle-Version: 1.0.0
Bundle-Activator: com.javaworld.sample.helloworld.Activator
Bundle-Vendor: JAVAWORLD
Import-Package: org.osgi.framework;version="1.3.0"

(3)根目錄下有個build.properties (略)

 

2.在Package Exporer的專案名稱按右鍵選[Run As],有多一個OSGi Framework的選項,先選擇下一個[Open Run Dialog...]

(1)[Open Run Dialog...]裡的Bundles的tab上,Workspaece選com.javaworld.sample.HelloWorld,而Target Platform只需勾org.eclipse.osgi即可。

(2)按下[Run]等同執行OSGi Framework,在console的tab會出現osgi> 的提示符號,隨後出現HelloWorld!!,為Activator的start所發。

(3)可以在console下按[Enter],會再出現osgi>,可以將游標移到提示符號下,可以下console command,如ss。

(4)若試著再開一個新的PDE for OSGi的專案,這樣Workspaece會有兩個專案可勾選,可以兩個都選,執行時兩個專案的Activator都會被執行到。

 

3. OSGi Console的操作

osgi> ss

Framework is launched.

id State       Bundle
0 ACTIVE      org.eclipse.osgi_3.3.2.R33x_v20080105
608 ACTIVE      com.javaworld.sample.HelloWorld_1.0.0

osgi> stop 608
Goodbye World!!

osgi> start 608
Hello World!!

osgi> update 608
Goodbye World!!
Hello World!!

osgi> uninstall 608
Goodbye World!!

osgi> install file:///C:/workspace/osgi_book/helloworld/target/hello-service-1.0.0.jar


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Jemmy 的頭像
    Jemmy

    Jemmy Walker

    Jemmy 發表在 痞客邦 留言(0) 人氣()