OSGI筆記----1.基礎概念

 

 

1 Bundle 是OSGI中的模塊,其生命週期是被OSGI框架所管理。形式上講是一個jar包。META-INF目錄下的 MANIFEST.MF文件中是對Bundle的特定描述。

Budle 的狀態:INSTALLED、RESOLVED、UNINSTALLED、STARTING、ACTIVE、STOPPING。

Bundle 是服務(Service)  和 組件 (component)的載體。

每個Bundle都有自己獨立於其他Bundle 的 ClassLoader,正因爲如此,各個Bundle內部的類是隔離的。

 

 

2 Bundle 直接交互的實現方式:

a:通過Package  的 Export 和 Imoprt 進行。提供類的Bundle對外暴露(Exprot)自己的一個或者多個Package,或者導入(Import)一個或者多個Package

b:通過Service的方式進行。一個Bundle作爲Servivce的提供方,對外提供Service,使用者可以找到並且使用其他Bundle提供的Service。

 

 

3 一個OSGI Service 就是註冊到OSGI框架中的一個Java對象。在註冊的時候可以Service的屬性。在獲取時可以根據屬性過濾。提供/使用Service的兩種方式:a 通過BundleContext(Bundle上下文)。b:通過DeclarativeService實現。

 

4 面向服務的組件模型(SOCM)。Component 是服務(Service)的載體,它對外提供服務或者使用外部提供的服務。任何一個普通的java對象都可以通過配置文件中的定義而變爲一個Component,生命週期是由OSGI框架管理。

 

5 Declarative Service(DS) 是 OSGI Core Framework 的一個標準服務。將服務的方式由編碼 變爲 配置。更加靈活

沒有DS之前,採用的是Module + Service 的方式,需要通過 Bundle 的 BundleActivator 註冊服務,通過BundleContext來獲取服務。而DS通過在Bundle中定義Component 來通過配置獲取、發佈服務,實現Component + Service 方式進行系統開發

 

6 引用org.eclipse.equinox.ds_*.jar時,必須引用org.eclipse.equinox.util_*.jar 否則不能正常啓動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章