12.4. OSGi サービスの公開


12.4.1. 概要

このセクションでは、OSGi コンテナーで単純な OSGi サービスの生成、構築、およびデプロイ方法について説明します。このサービスは単純な HelloWorldJava クラスであり、OSGi 設定は Blueprint 設定ファイルを使用して定義されます。

12.4.2. 前提条件

Maven クイックスタートアーキタイプを使用してプロジェクトを生成するには、次の前提条件を満たす必要があります。

  • Maven インストール: Maven は Apache の無料のオープンソースビルドツールです。最新バージョンは http://maven.apache.org/download.html からダウンロードできます (最小値は 2.0.9 です)。
  • インターネット接続: ビルドの実行中、Maven は追加設定を必要とせずに動的に外部リポジトリーを検索し、必要なアーティファクトをダウンロードします。これを機能させるには、ビルドマシンがインターネットに接続されている 必要 があります。

12.4.3. Maven プロジェクトの生成

maven-archetype-quickstart アーキタイプは汎用の Maven プロジェクトを作成し、それを目的に合わせてカスタマイズできます。コーディネート org.fusesource.example:osgi-service を使用して Maven プロジェクトを生成するには、次のコマンドを入力します。

Copy to Clipboard Toggle word wrap
mvn archetype:create
-DarchetypeArtifactId=maven-archetype-quickstart
-DgroupId=org.fusesource.example
-DartifactId=osgi-service

このコマンドの結果は、生成されたプロジェクトのファイルを含むディレクトリー ProjectDir/osgi-service です。

注記

既存の製品のグループ ID と競合するアーティファクトのグループ ID を 選択しない ように 注意 してください。これにより、プロジェクトのパッケージと既存の製品のパッケージが競合する可能性があります (通常、グループ ID はプロジェクトの Java パッケージ名のルートとして使用されるため)。

12.4.4. POM ファイルのカスタマイズ

OSGi バンドルを生成するには、次のように POM ファイルをカスタマイズする必要があります。

  1. 「バンドルプロジェクトの生成」 で説明されている POM のカスタマイズ手順に従います。
  2. Maven バンドルプラグインの設定で、以下のようにバンドルの手順を変更して org.fusesource.example.service パッケージをエクスポートします。

    Copy to Clipboard Toggle word wrap
    <project ... >
      ...
      <build>
        ...
        <plugins>
          ...
          <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
              <instructions>
                <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
            <Export-Package>org.fusesource.example.service</Export-Package>
              </instructions>
            </configuration>
          </plugin>
        </plugins>
      </build>
      ...
    </project>

12.4.5. サービスインターフェイスの作成

ProjectDir/osgi-service/src/main/java/org/fusesource/example/service サブディレクトリーを作成します。このディレクトリーで、お気に入りのテキストエディターを使用してファイル HelloWorldSvc.java を作成し、例12.3「HelloWorldSvc インターフェイス」 からコードを追加します。

例12.3 HelloWorldSvc インターフェイス

Copy to Clipboard Toggle word wrap
package org.fusesource.example.service;

public interface HelloWorldSvc
{
    public void sayHello();
}

12.4.6. サービスクラスの作成

ProjectDir/osgi-service/src/main/java/org/fusesource/example/service/impl サブディレクトリーを作成します。このディレクトリーで、お気に入りのテキストエディターを使用してファイル HelloWorldSvcImpl.java を作成し、例12.4「HelloWorldSvcImpl クラス」 からコードを追加します。

例12.4 HelloWorldSvcImpl クラス

Copy to Clipboard Toggle word wrap
package org.fusesource.example.service.impl;

import org.fusesource.example.service.HelloWorldSvc;

public class HelloWorldSvcImpl implements HelloWorldSvc {

    public void sayHello()
    {
        System.out.println( "Hello World!" );
    }

}

12.4.7. Blueprint ファイルの書き込み

Blueprint 設定ファイルは、クラスパスの OSGI-INF/blueprint ディレクトリーに格納されている XML ファイルです。Blueprint ファイルをプロジェクトに追加するには、最初に次のサブディレクトリーを作成します。

Copy to Clipboard Toggle word wrap
ProjectDir/osgi-service/src/main/resources
ProjectDir/osgi-service/src/main/resources/OSGI-INF
ProjectDir/osgi-service/src/main/resources/OSGI-INF/blueprint

src/main/resources は、すべての JAR リソースの標準的な Maven の場所になります。このディレクトリーの下のリソースファイルは、生成されたバンドル JAR のルートスコープに自動的にパッケージ化されます。

例12.5「サービスをエクスポートするための Blueprint ファイル」 は、bean 要素を使用して、HelloWorldSvc Bean を作成し、service 要素を使用して Bean を OSGi サービスとしてエクスポートする Blueprint ファイルのサンプルを示しています。

ProjectDir/osgi-service/src/main/resources/OSGI-INF/blueprint ディレクトリーの下で、お気に入りのテキストエディターを使用して config.xml ファイルを作成し、例12.5「サービスをエクスポートするための Blueprint ファイル」から XML コードを追加します。

例12.5 サービスをエクスポートするための Blueprint ファイル

Copy to Clipboard Toggle word wrap
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

  <bean id="hello" class="org.fusesource.example.service.impl.HelloWorldSvcImpl"/>

  <service ref="hello" interface="org.fusesource.example.service.HelloWorldSvc"/>

</blueprint>

12.4.8. サービスバンドルの実行

osgi-service プロジェクトをインストールおよび実行するには、以下の手順を実行します。

  1. プロジェクトをビルドします — コマンドプロンプトを開き、ProjectDir/osgi-service ディレクトリーに移動します。Maven を使用して、次のコマンドを入力してデモをビルドします。

    Copy to Clipboard Toggle word wrap
    mvn install

    このコマンドが正常に実行される場合、ProjectDir/osgi-service/target ディレクトリーには、バンドルファイル osgi-service-1.0-SNAPSHOT.jar が含まれている必要があります。

  2. osgi-service バンドルをインストールして開始する: Red Hat Fuse コンソールで、次のコマンドを入力します。

    Copy to Clipboard Toggle word wrap
    Jkaraf@root()> bundle:install -s file:ProjectDir/osgi-service/target/osgi-service-1.0-SNAPSHOT.jar

    ProjectDir は Maven プロジェクトを含むディレクトリーで、-s フラグはバンドルをすぐに起動するように指示します。たとえば、Windows マシンのプロジェクトディレクトリーが C:\Projects の場合、以下のコマンドを入力します。

    Copy to Clipboard Toggle word wrap
    karaf@root()> bundle:install -s file:C:/Projects/osgi-service/target/osgi-service-1.0-SNAPSHOT.jar
    注記

    Windows マシンでは、file URL のフォーマット方法に注意してください。file URL ハンドラーが認識する構文の詳細は 「ファイル URL ハンドラー」 を参照してください。

  3. サービスが作成されたことを確認する: バンドルが正常に開始されたことを確認するには、次の Red Hat Fuse コンソールコマンドを入力します。

    Copy to Clipboard Toggle word wrap
    karaf@root()> bundle:list

    このリストのどこかに、osgi-service バンドルの行が表示されるはずです。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    [ 236] [Active     ] [Created     ] [       ] [   60] osgi-service (1.0.0.SNAPSHOT)
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.