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

OSGi Bundle 實戰:從零建立 Hello World 完整教學

     編輯:J2EE

本文為《你好,OSGi》系列第二部分。承接 OSGi 基礎概念,詳細示範簡單 OSGi Bundle:Hello World 開發全流程。

OSGi Bundle 開發基礎

OSGi 軟體以 Bundle 形式發布:由 Java 類別與資源構成,可提供服務、導入套件、為裝置提供功能。Eclipse 提供優秀支援:建立向導、內建 Equinox 容器執行除錯。每個 Eclipse 外掛本質皆為 OSGi Bundle(含 Eclipse 專用代碼)。

3.1 建立 Bundle 專案

  1. Eclipse File > New > Project
  2. 選擇 Plug-in Project,Next
  3. 輸入:
    Project Name: com.javaworld.sample.HelloWorld
    Target Platform: an OSGi Framework > Standard
  4. 其他採預設值,Next
  5. Plug-in Content 對話框採預設,Next
  6. Templates 選擇 Hello OSGi Bundle,Finish

Eclipse 產生兩檔案:Activator.java、MANIFEST.MF。

3.1.1 Activator.java 分析

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("Helloworld");
    }
    public void stop(BundleContext context) throws Exception {
        System.out.println("GoodbyeWorld");
    }
}

實作 BundleActivator 介面的類別需符合:

  • 公共無參建構子(容器用 Class.newInstance() 建立實例)
  • start():容器啟動 Bundle 時調用,執行資源初始化(如取得資料庫連線),參數 BundleContext 用於與框架通訊;拋出異常則標記為 stopped 狀態
  • stop():容器關閉 Bundle 時調用,執行資源清理(如釋放連線)

完成後在 MANIFEST.MF 設定 Bundle-Activator 指定監聽類別。

3.1.2 MANIFEST.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
Bundle-Localization: plugin
Import-Package: org.osgi.framework;version="1.3.0"

屬性說明:

  • Bundle-ManifestVersion:2 表相容 OSGi R4,1 表 R3 或更早
  • Bundle-Name:可讀簡短名稱
  • Bundle-SymbolicName:唯一非本地化名稱,跨 Bundle 存取時使用
  • Bundle-Version:版本號
  • Bundle-Activator:監聽器類別名(可選)
  • Bundle-Vendor:發行商
  • Bundle-Localization:本地化檔案位置(無則自動產生)
  • Import-Package:導入套件(後續依賴管理章節詳細說明)

3.2 執行 Bundle 與 OSGi 主控台操作

使用 Eclipse 內建 Equinox 容器:

  1. Run > Run… (Eclipse 3.3 為 Run > Open Run Dialog…)
  2. 雙擊 Equinox OSGi Framework 開啟運行配置
  3. Name 改為 HelloWorld Bundle
  4. Workspace Plugins 勾選 com.javaworld.sample.HelloWorld,Target Platform 確保 org.eclipse.osgi 勾選(圖 1)

HelloWorld Bundle 運行配置

圖 1. HelloWorld Bundle 運行配置

  1. 點擊 Run,Console 視窗輸出 HelloWorld(實為開啟 OSGi 主控台)

3.2.1 OSGi 主控台常用指令

取得焦點按 Enter 顯示 osgi> 提示符(Eclipse 3.3 需在 Arguments 標籤 Program Arguments 加入 -console,圖 2)。

OSGi 主控台與 Activator

圖 2. OSGi 主控台與 HelloWorld Activator

核心指令(OSGi 規範標準,適用所有容器):

  • ss:列出所有已安裝 Bundle 狀態(ID、名稱、狀態)
  • start <bundleid>:啟動 Bundle
  • stop <bundleid>:停止 Bundle
  • update <bundleid>:用新 JAR 更新 Bundle
  • install <bundleid>:安裝新 Bundle
  • uninstall <bundleid>:卸載 Bundle
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved