如同Servlet, EJB規範,OSGi規範二事:在OSGi container上的服務群集必須實作,並在container與application之間的訂定契約,亦即在OSGi平台上開發,首先要用OSGi的API實作你的application,再佈署到OSGi container上。從開發者觀點,OSGi有下列優勢:
1.你可以在不用重啟container下,在你的application裡對不同模組動態進行install, uninstall, start和stop。
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 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