Menu Close
A.2. Red Hat Fuse OSGi プロジェクトの設定
概要
OSGi バンドルをビルドするための Maven プロジェクトは、単純な単一レベルプロジェクトです。サブプロジェクトは必要ありません。ただし、以下を行う必要があります。
適切な設定でプロジェクトを設定するために使用できる Maven アーキタイプが複数あります。
ディレクトリー構造
OSGi バンドルを構築するプロジェクトは、単一レベルプロジェクトです。最上位の POM ファイルと src
フォルダーのみが必要です。すべての Maven プロジェクトと同様に、すべての Java ソースコードを src/java
フォルダーに配置し、Java 以外のリソースを src/resources
フォルダーに配置します。
Java 以外のリソースには、Spring 設定ファイル、JBI エンドポイント設定ファイル、および WSDL コントラクトが含まれます。
Apache CXF、Apache Camel、または別の Spring が設定されている Bean を使用する Red Hat Fuse OSGi プロジェクトには、src/resources/META-INF/spring
フォルダーに beans.xml
ファイルも含まれます。
バンドルプラグインの追加
バンドルプラグインを使用する前に、Apache Felix に依存関係を追加する必要があります。依存関係を追加したら、バンドルプラグインを POM のプラグイン部分に追加できます。
例A.1「OSGi バンドルプラグインの POM への追加」に、バンドルプラグインをプロジェクトに追加するために必要な POM エントリーを示します。
例A.1 OSGi バンドルプラグインの POM への追加
... <dependencies> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.osgi.core</artifactId> <version>1.0.0</version> </dependency> ... </dependencies> ... <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <configuration> <instructions> <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> <Import-Package>*,org.apache.camel.osgi</Import-Package> <Private-Package>org.apache.servicemix.examples.camel</Private-Package> </instructions> </configuration> </plugin> </plugins> </build> ...
例A.1「OSGi バンドルプラグインの POM への追加」のエントリーは以下を行います。
Apache Felix に依存関係を追加する
プロジェクトにバンドルプラグインを追加する
バンドルのシンボリック名としてプロジェクトのアーティファクト ID を使用するようにプラグインを設定する
バンドルされたクラスによってインポートされたすべての Java パッケージを含めるようにプラグインを設定する。また、org.apache.camel.osgi パッケージをインポートする
一覧表示されたクラスをバンドル化するが、エクスポートしたパッケージの一覧には含めないようにプラグインを設定する
プロジェクトの要件を満たすように設定を編集します。
バンドルプラグインの設定に関する詳細は、「Bundle プラグインの設定」を参照してください。
バンドルプラグインのアクティベート
Maven がバンドルプラグインを使用するには、プロジェクトの結果をバンドルとしてパッケージ化するよう指示します。そのためには、POM ファイルの packaging
要素を bundle
に設定します。
有用な Maven アーキタイプ
バンドルプラグインを使用するよう事前設定されたプロジェクトを生成するには、複数の Maven アーキタイプを使用できます。
Spring OSGi アーキタイプ
Spring OSGi アーキタイプは、以下のように Spring DM を使用して OSGi プロジェクトを構築するための汎用プロジェクトを作成します。
org.springframework.osgi/spring-bundle-osgi-archetype/1.1.2
以下のコマンドを使用してアーキタイプを呼び出します。
mvn archetype:generate -DarchetypeGroupId=org.springframework.osgi -DarchetypeArtifactId=spring-osgi-bundle-archetype -DarchetypeVersion=1.1.2 -DgroupId=groupId -DartifactId=artifactId -Dversion=version
Apache CXF コードファーストアーキタイプ
Apache CXF コードファーストアーキタイプは、以下のように Java からサービスを構築するためのプロジェクトを作成します。
org.apache.servicemix.tooling/servicemix-osgi-cxf-code-first-archetype/2010.02.0-fuse-02-00
以下のコマンドを使用してアーキタイプを呼び出します。
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-code-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version
Apache CXF wsdl ファーストアーキタイプ
Apache CXF wsdl ファーストアーキタイプは、以下のように WSDL からサービスを作成するためのプロジェクトを作成します。
org.apache.servicemix.tooling/servicemix-osgi-cxf-wsdl-first-archetype/2010.02.0-fuse-02-00
以下のコマンドを使用してアーキタイプを呼び出します。
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-wsdl-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version
Apache Camel アーキタイプ
Apache Camel アーキタイプは、以下のように Red Hat Fuse にデプロイされたルートを構築するためのプロジェクトを作成します。
org.apache.servicemix.tooling/servicemix-osgi-camel-archetype/2010.02.0-fuse-02-00
以下のコマンドを使用してアーキタイプを呼び出します。
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-camel-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version