SAT外掛程式引用服務 發布osgi服務

2021-09-30 15:40:10 字數 1640 閱讀 4091

osgi的服務層(service layer)為bundle之間的解耦合及服務引用提供的強大而又靈活的實現機制。通過bundleactivator控制項的生命週期,通過bundlecontext與其他元件和服務互動。但是,osgi服務層在提供強大的功能的同時,也給使用者造成了很大的困惑,比如,元件的啟動順序,服務的查詢策略等等。osgi通過declarative service給出了一種通過xml配置檔案發布和繫結服務的功能,使用者只需要定義xml檔案即可向osgi環境中發布服務物件和獲取其他bundle元件發布的服務。

在osgi程式設計過程中,獲取其他bundle提供的服務是比較複雜的,尤其是獲取多個服務時需要做很多重複性的工作。有沒有更為簡單的方式實現服務的發布和繫結呢?最近在equinox郵件列表中看到patrick的向equinox開發組的一項提議,建議將service activator toolkit(sat)元件新增到equinox專案中,sat目前位於eclipse 技術專案ohf中。

sat大大簡化了osgi service bundle開發的複雜性。使用者可以通過sat外掛程式引用服務,發布服務,自定義bundle activator。下面是sat外掛程式的功能略圖:

上圖展示了如何引用和發布服務

上圖展示了如何定製bundleactivator。

下面通過幾行簡單的**展示sat如何簡化服務的發布和引用。

//服務的發布

public class activator extends basebundleactivator

//將hotdo**endor服務發布到osgi環境中

private void addexportedvendorservice()

protected void deactivate() }

//服務的引用

public class activator extends basebundleactivator

//元件停止登出

protected void deactivate()

private customer getcustomer()

//宣告需要引用的服務的名稱

protected string getimportedservicenames() ; }

//設定服務過濾條件

private string getvendorfilter()

//獲取hotdo**ender服務

private vendorservice getvendorservice()

private void setcustomer(customer customer)

protected void start() throws exception

protected void stop() throws exception }

:pserver:dev.eclipse.org:/cvsroot/technology org.eclipse.ohf/plugins/org.eclipse.soda.sat

Notepad 外掛程式NppProject發布

最近幾天寫了乙個notepad 的專案管理外掛程式,暫時把它叫做nppproject。因為平時用npp比較多,出於對npp的喜愛,以及對npp專案管理功能薄弱的強烈不滿,一賭氣就寫了這個外掛程式,把我平時用到的最多的功能整合到這個外掛程式裡。現在,notepad 就是乙個mini ide。廢話少說,...

spring cloud eureka服務發現

服務端 enableeurekaserver public class public static void main string args eureka伺服器沒有後端儲存,但註冊的服務例項都有傳送心跳保持他們的登記日期 這可以在記憶體中完成 客戶也有乙個記憶體中的快取 所以他們不需要為每乙個服務...

spring cloud eureka服務發現

size x large color black b 1.eureka服務端 b color size 服務端 size large color black b 1.1高可用和域 b color size eureka伺服器沒有後端儲存,但註冊的服務例項都有傳送心跳保持他們的登記日期 這可以在記憶體...