首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

OSGi 4.2 規範正式發布:六大核心新特性深度解析

     編輯:J2EE

OSGi 4.2 規範於 9 月中旬正式發布。Equinox 3.5、Felix 2.0 等實作早已針對 4.2 進行相容性開發,如今規範定案,各實作團隊將全面對齊。本文整理自 InfoQ Alex Blewitt 報導,介紹六大核心新特性。

1. 框架啟動標準化

以往在 Java 應用中啟動嵌入式 OSGi 引擎(如 Equinox Servlet Bridge)需依賴特定引擎啟動方式。雖有 Pax Runner 等封裝工具簡化流程,仍需熟悉特定引擎知識。4.2 定義透明啟動機制,無需知曉具體實作即可啟動,測試時僅需替換 Classpath 下的引擎 JAR 即可在 Equinox/Felix 間切換。

2. 遠程服務

前身為分散式 OSGi (Distributed OSGi) / RFC 113。將多個 OSGi VM 連接,採用服務概念(熱插拔核心),提供導出服務至遠程消費端與本地消費遠程服務機制。不同於 RMI 等傳統分散式技術:無需實作特殊介面、無需拋出 checked exception。異常視為服務一部分,自然融入 OSGi 環境。

3. 藍圖服務

概念近似 IoC/DI,允許客戶端從外部配置檔指定連接服務,動態連接至客戶端。類似宣告式服務可限制服務類型(如強制性),但不同處在於:服務缺失時可提供預設代理實作,客戶端調用時被阻塞直到真實服務連接成功。此特性避免與 OSGi 產生耦合,應用可在 OSGi 環境內外皆可運行。

4. Bundle 追蹤器

OSGi 已有服務追蹤器監控服務生命週期;Bundle Tracker 為追蹤 Bundle 的擴展。以往用 BundleListener 監聽 Bundle 動態進出,如今 BundleTracker 與 ServiceListener 具同等可用性。可用於動態註冊:當藍圖服務或宣告式服務讀取處理中繼資料時。例:Web 引擎自動掃描新安裝 Bundle,透過 HttpService 自動註冊 Servlet。

5. 服務鉤子

判斷服務存在時可攔截、過濾服務事件。應用場景:基於角色的權限模型、不同產品等級啟用/停用功能集、提供代理服務或負載平衡攔截其他 Bundle 事件隱藏以備後續代理(如分散式服務)。監聽鉤子亦可在服務未註冊前按需啟動服務。

6. 條件化權限

權限模型升級包含拒絕存取與允許存取。認證簽名後可為 Bundle 子集顯式指定操作權限,可鎖定未簽名 Bundle 安裝,助構建安全 OSGi 平台。

其他變更

  • Bundle 擁有專屬 MIME 類型 application/vnd.osgi.bundle
  • 可為 Bundle 指定圖示與授權條款
  • 宣告式服務簡化權限集合設定(package-private 替代 protected)
  • DS Schema 允許其他有助服務資訊的 XML 元素
  • 提供機制讓應用管理員在應用結束時獲取返回值

Equinox 3.5 已提供類似功能,Felix 本月初通過測試。月底前 OSGi 官方將發布 4.2 相容性測試套件資訊。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved