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 プロジェクトを生成するには、次のコマンドを入力します。
mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=org.fusesource.example -DartifactId=osgi-service
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 ファイルをカスタマイズする必要があります。
- 「バンドルプロジェクトの生成」 で説明されている POM のカスタマイズ手順に従います。
Maven バンドルプラグインの設定で、以下のようにバンドルの手順を変更して
org.fusesource.example.service
パッケージをエクスポートします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.5. サービスインターフェイスの作成 リンクのコピーリンクがクリップボードにコピーされました!
ProjectDir/osgi-service/src/main/java/org/fusesource/example/service
サブディレクトリーを作成します。このディレクトリーで、お気に入りのテキストエディターを使用してファイル HelloWorldSvc.java
を作成し、例12.3「HelloWorldSvc インターフェイス」 からコードを追加します。
例12.3 HelloWorldSvc インターフェイス
12.4.6. サービスクラスの作成 リンクのコピーリンクがクリップボードにコピーされました!
ProjectDir/osgi-service/src/main/java/org/fusesource/example/service/impl
サブディレクトリーを作成します。このディレクトリーで、お気に入りのテキストエディターを使用してファイル HelloWorldSvcImpl.java
を作成し、例12.4「HelloWorldSvcImpl クラス」 からコードを追加します。
例12.4 HelloWorldSvcImpl クラス
12.4.7. Blueprint ファイルの書き込み リンクのコピーリンクがクリップボードにコピーされました!
Blueprint 設定ファイルは、クラスパスの OSGI-INF/blueprint
ディレクトリーに格納されている XML ファイルです。Blueprint ファイルをプロジェクトに追加するには、最初に次のサブディレクトリーを作成します。
ProjectDir/osgi-service/src/main/resources ProjectDir/osgi-service/src/main/resources/OSGI-INF ProjectDir/osgi-service/src/main/resources/OSGI-INF/blueprint
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 ファイル
12.4.8. サービスバンドルの実行 リンクのコピーリンクがクリップボードにコピーされました!
osgi-service
プロジェクトをインストールおよび実行するには、以下の手順を実行します。
プロジェクトをビルドします — コマンドプロンプトを開き、
ProjectDir/osgi-service
ディレクトリーに移動します。Maven を使用して、次のコマンドを入力してデモをビルドします。mvn install
mvn install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドが正常に実行される場合、
ProjectDir/osgi-service/target
ディレクトリーには、バンドルファイルosgi-service-1.0-SNAPSHOT.jar
が含まれている必要があります。osgi-service バンドルをインストールして開始する: Red Hat Fuse コンソールで、次のコマンドを入力します。
Jkaraf@root()> bundle:install -s file:ProjectDir/osgi-service/target/osgi-service-1.0-SNAPSHOT.jar
Jkaraf@root()> bundle:install -s file:ProjectDir/osgi-service/target/osgi-service-1.0-SNAPSHOT.jar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ProjectDir は Maven プロジェクトを含むディレクトリーで、
-s
フラグはバンドルをすぐに起動するように指示します。たとえば、Windows マシンのプロジェクトディレクトリーがC:\Projects
の場合、以下のコマンドを入力します。karaf@root()> bundle:install -s file:C:/Projects/osgi-service/target/osgi-service-1.0-SNAPSHOT.jar
karaf@root()> bundle:install -s file:C:/Projects/osgi-service/target/osgi-service-1.0-SNAPSHOT.jar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Windows マシンでは、
file
URL のフォーマット方法に注意してください。file
URL ハンドラーが認識する構文の詳細は 「ファイル URL ハンドラー」 を参照してください。サービスが作成されたことを確認する: バンドルが正常に開始されたことを確認するには、次の Red Hat Fuse コンソールコマンドを入力します。
karaf@root()> bundle:list
karaf@root()> bundle:list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このリストのどこかに、
osgi-service
バンドルの行が表示されるはずです。以下に例を示します。[ 236] [Active ] [Created ] [ ] [ 60] osgi-service (1.0.0.SNAPSHOT)
[ 236] [Active ] [Created ] [ ] [ 60] osgi-service (1.0.0.SNAPSHOT)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow