OSGiサービスをEclipse Pluginで設定する方法

OSGiサービスをEclipse Pluginで設定する方法

  • 目次

    はじめに

    OSGi ServiceはEclipseのプラグインにも使われている技術です。理解していなかったので、勉強がてらチュートリアルをやってみます。
    OSGi(Open Service Gateway Initiative)はJavaにおいて堅牢で疎結合かつ動的なアプリケーションを構築するためのモジュール化されたアプローチと仕様です。この仕様には複数の実装があります。

    OSGiを使う利点は以下の通りです。

    • モジュール性
      • アプリケーションを管理しやすい単位に分割でき、保守や更新が容易になる
    • 動的な更新
      • JVWの再起動をせずに、実行中のモジュール(バンドル)を更新または差し替えができる
    • サービス指向
      • 明確に定義されたインターフェースを通じて、コンポーネント同士がやり取りするサービス指向アーキテクチャを推進する
    • クラスローダーの分離
      • 各OSGiバンドルは独自のクラスローダーで動作するため、依存関係が明確に分離され、バンドル間の予期しない干渉を防ぐことができる

    OSGi declative servies (OSGi DS)について

    プラグインの設定で以下のような項目があり、気になっていたので簡単に調べました。

    RSSフィードの登録

    OSGi DSはメタデータを通して、サービスの定義や利用ができます。Eclipseなどのツールはコードにアノテーションされた結果に基づいて、メタデータを生成します。
    例えば以下のようにアノテーションをすることでOSGiサービスを提供できます。

    import org.osgi.service.component.annotations.Component;
    
    @Component
    public class Sample {
      // This is sample
    }
    

    OSGiサービスの種類

    OSGiサービスは以下の種類があります。

    • delayed component
      • リクエストがされるまで、サービスは活性化しません。したがって、クラスや実装が遅れてロードされます。
    • immediate component
      • 依存関係が満たされた場合サービスがすぐに活性化します。
    • factory component
      • リクエストによって新しいサービスが作られ、活性化されます。

    OSGiサービスを作ってみる

    簡単なOSGiサービスを作成します。

    プロジェクトの作成

    [File] > [New] > [Plug-in Project]とクリックし、プラグインプロジェクトを作成する

    RSSフィードの登録

    [Next >]をクリックする。“This plug-in will make contributions to the UI"のチェックが外れていることを確認する

    RSSフィードの登録

    [Finish] をクリックする。

    DS Annotaionsの有効化

    プロジェクトを右クリックし、[Properties]を選択する。

    [Plug-in Development] > [DS Annotations]の項目を選択し、“Enable project-specific settings"にチェックを付け、[Apply and Close]をクリックします。

    RSSフィードの登録

    サンプルプログラムの作成

    今回は起動時にHello Worldと表示するサービスを作ってみる。
    パッケージ名は com.kitsutsuki.sample.printerとする。

    package com.kitsutsuki.sample.printer;
    
    import org.osgi.service.component.annotations.Activate;
    import org.osgi.service.component.annotations.Component;
    
    @Component
    public class HelloWorld {
    
    	@Activate
    	public void activate() {
    		System.out.println("Activate called");
    		System.out.println("Hello World");
    	}
    }
    

    デバッグ実行

    プロジェクトを右クリックし、[Debug As] > [Debug Configurations…] をクリックする
    [OSGi Framework] を右クリックし、[New Configuration]をクリックする
    以下のようにデバッグ名を入れる1

    RSSフィードの登録

    共有しやすいように[Common] > Shared fileを設定する。

    RSSフィードの登録

    [Debug]を押す。

    Cosoleビューを見ると以下のように表示される。

    RSSフィードの登録

    サービスとして登録されているかを確認するためにssとコマンドを打つ。以下のように登録されていることを確認できる。

    RSSフィードの登録

    おわりに

    Eclipseは使いづらいエディタだと思っていましたが、Javaを使うと本当に使いやすいなと最近感じています。

    参考


    1. 非表示用に付箋を前に出しました。 ↩︎

    comments powered by Disqus