スタートガイド
Red Hat Fuse を今すぐ使用する
fuse-docs-support@redhat.com
概要
前書き
Fuse を使用するには、Spring Boot、JBoss EAP、または Apache Karaf に関わらず、該当のコンテナーのファイルをダウンロードおよびインストールする必要があります。本書では、これらの各コンテナーに初めて Fuse アプリケーションをインストール、開発、および構築するための情報および手順を提供します。
第1章 Fuse on Spring Boot の使用
Spring Boot で Fuse アプリケーションを開発するには、最初に Spring Boot で実行する Fuse のサンプルブースタープロジェクトを生成およびビルドします。詳細は以下を参照してください。
1.1. Fuse on Spring Boot
Spring Boot は、よく知られている Spring コンテナーがさらに進化したものです。Spring Boot コンテナーの特徴は、コンテナー機能が独立してデプロイできる小さなチャンクに分割されていることです。これにより、特定のサービスに特化し、小さなフットプリントでコンテナーをデプロイできます。これは、マイクロサービスアーキテクチャーのパラダイムに対応するために必要になります。
このコンテナー技術の特徴は次のとおりです。
- 特に、スケーラブルなクラウドプラットフォーム (Kubernetes および OpenShift) での実行に適しています。
- マイクロサービスアーキテクチャーに適した小さなフットプリント。
- 「設定より規約」(Convention over Configuration) 向けに最適化されています。
- アプリケーションサーバーは必要ありません。Spring Boot アプリケーション Jar を直接 JVM で実行できます。
1.2. ブースタープロジェクトの生成
Fuse ブースタープロジェクトは、スタンドアロンアプリケーションの実行を手助けする開発者向けのプロジェクトです。ここでは、ブースタープロジェクトの 1 つである Circuit Breaker ブースターの生成手順を説明します。この演習では、Fuse on Spring Boot の便利なコンポーネントを使用します。
Netflix/Hystrix サーキットブレーカーは、ネットワーク接続の中断や、バックエンドサービスの一時的な利用停止に分散アプリケーションが対応できるようにします。サーキットブレーカーパターンの基本概念は、バックエンドサービスが一時的に利用できなくなった場合に、依存するサービスの損失が自動的に検出され、代替動作をプログラムで作成できることです。
Fuse サーキットブローカーブースターは 2 つの関連サービスで構成されます。
-
呼び名を返すバックエンドサービスである
name
サービス。 -
名前を取得するよう
name
サービスを呼び出し、文字列Hello, NAME
を返すフロントエンドサービスであるgreetings
サービス。
このブースターデモンストレーションでは、Hystrix サーキットブレーカーは greetings
サービスと name
サービスとの間に挿入されます。バックエンドの name
サービスが利用できなくなると、name
サービスは再起動するまでの間にブロックされるのではなく、greetings
サービスが代替動作にフォールバックして即座にクライアントに応答することができます。
前提条件
- Red Hat Developer Platform にアクセスできる必要があります。
- サポートされるバージョンの Java Developer Kit (JDK) が必要です。詳細は「Red Hat Fuse でサポートされる構成」を参照してください。
- Apache Maven 3.3.x 以上が必要です。
手順
- https://developers.redhat.com/launch に移動します。
START をクリックします。
ランチャーウィザードによって、Red Hat アカウントにログインするよう要求されます。
- Log in or register ボタンをクリックし、ログインします。
- Launcher ページで Deploy an Example Application ボタンをクリックします。
- Create Example Application ページで Create Example Application as フィールドに名前 fuse-circuit-breaker を入力します。
- Select an Example をクリックします。
Example ダイアログで、Circuit Breaker オプションを選択します。Select a Runtime ドロップダウンメニューが表示されます。
- Select a Runtime ドロップダウンメニューで Fuse を選択します。
-
バージョンのドロップダウンメニューで 7.3.0 (Red Hat Fuse) を選択します。
2.21.2 (Community)
バージョンは選択しないでください。 - Save をクリックします。
- Create Example Application ページで Download をクリックします。
-
Your Application is Ready ダイアログが表示されたら、
Download.zip
をクリックします。ブラウザーが生成されたブースタープロジェクト (ZIP ファイルとしてパッケージ) をダウンロードします。 - アーカイブユーティリティーを使用して、生成されたプロジェクトをローカルファイルシステムの任意の場所に展開します。
1.3. ブースタープロジェクトのビルド
これらの手順は、Fuse on Spring Boot で Circuit Breaker ブースターをビルドする方法を説明します。
前提条件
- Red Hat Developer Portal からブースタープロジェクトの生成およびダウンロードが完了している必要があります。
- サポートされるバージョンの Java Developer Kit (JDK) が必要です。詳細は「Red Hat Fuse でサポートされる構成」を参照してください。
- Apache Maven 3.3.x 以上が必要です。
手順
シェルプロンプトを開き、Maven を使用してコマンドラインからプロジェクトをビルドします。
cd fuse-circuit-breaker
mvn clean package
Maven によってプロジェクトがビルドされた後、Build Success メッセージが表示されます。
新しいシェルプロンプトを開き、以下のように name サービスを起動します。
cd name-service
mvn spring-boot:run -DskipTests -Dserver.port=8081
Spring Boot が起動すると、以下のような出力が表示されます。
... 2019-05-06 20:19:59.401 INFO 9553 --- [ main] o.a.camel.spring.SpringCamelContext : Route: route1 started and consuming from: servlet:/name?httpMethodRestrict=GET 2019-05-06 20:19:59.402 INFO 9553 --- [ main] o.a.camel.spring.SpringCamelContext : Total 1 routes, of which 1 are started 2019-05-06 20:19:59.403 INFO 9553 --- [ main] o.a.camel.spring.SpringCamelContext : Apache Camel 2.21.0.fuse-730078-redhat-00001 (CamelContext: camel-1) started in 0.287 seconds 2019-05-06 20:19:59.406 INFO 9553 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:19:59.473 INFO 9553 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8081 (http) 2019-05-06 20:19:59.479 INFO 9553 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 5.485 seconds (JVM running for 9.841)
新しいシェルプロンプトを開き、以下のように greetings サービスを起動します。
cd greetings-service
mvn spring-boot:run -DskipTests
Spring Boot が起動すると、以下のような出力が表示されます。
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)
greetings サービスは
http://localhost:8080/camel/greetings
URL で REST エンドポイントを公開します。web ブラウザーで URL を開くか、別のシェルプロンプトで以下の
curl
コマンドを入力して、REST エンドポイントを呼び出します。curl http://localhost:8080/camel/greetings
応答は次のとおりです。
{"greetings":"Hello, Jacopo"}
Camel Hystrix によって提供されるサーキットブレーカー機能を実証するには、name サービスが実行されているシェルプロンプトウインドウで Ctrl-C を入力し、バックエンド name サービスを中止します。
これで name サービスが利用できなくなるため、呼び出されたときに greetings サービスがハングしないよう、サーキットブレーカーが作動します。
web ブラウザーで
http://localhost:8080/camel/greetings
を開くか、別のシェルプロンプトウインドウに以下のcurl
コマンドを入力して、greetings REST エンドポイントを呼び出します。curl http://localhost:8080/camel/greetings
応答は次のとおりです。
{"greetings":"Hello, default fallback"}
greetings サービスが実行されているウインドウで、ログに以下のメッセージシーケンスが表示されます。
2019-05-06 20:24:16.952 INFO 9729 --- [-CamelHystrix-2] route2 : Try to call name Service 2019-05-06 20:24:16.956 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused) 2019-05-06 20:24:16.956 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : Retrying request 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused) 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : Retrying request 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused) 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : Retrying request 2019-05-06 20:24:16.964 INFO 9729 --- [-CamelHystrix-2] route2 : We are falling back!!!!
-
この例に関する詳細は、
greetings-service
の実行中に http://localhost:8080/ で Circuit Breaker - Red Hat Fuse ページを開いてください。このページには、サーキットブレーカーの状態を監視する Hystrix ダッシュボードへのリンクが含まれます。
第2章 Fuse on Karaf の使用
ここで説明する情報や手順は、Fuse On Karaf について学び、Karaf コンテナーで初めて Fuse アプリケーションをインストール、開発、およびビルドするのに役立ちます。以下を参照してください。
2.1. Fuse on Karaf
Apache Karaf は、OSGi Alliance の OSGi 標準 をベースとしています。OSGi は電気通信業界で開発され、ホットコードスワッピング と呼ばれる機能により、サーバーをシャットダウンする必要がなくすぐにアップグレードできる、ゲートウェイサーバーの開発に使用されました。その後、OSGi コンテナー技術はその他多くの用途に使用され、一般的に Eclipse IDE などのモジュール化されたアプリケーションで使用されます。
このコンテナー技術の特徴は次のとおりです。
- 特にスタンドアロンモードでの実行に適しています。
- モジュール化 (OSGi バンドル) の強力なサポート、および高度なクラスローディングサポート。
- 1 つのコンテナーに複数のバージョンの依存関係を一緒にデプロイできます (ただし、注意して行う必要があります)。
- ホットコードスワッピングにより、コンテナーをシャットダウンせずにモジュールをアップグレードまたは置き換えできます。これは独自の機能ですが、適切に行うには多大な労力が必要になります。
2.2. Fuse on Karaf のインストール
Red Hat カスタマーポータルから Fuse 7.4 on Karaf の標準インストールパッケージをダウンロードできます。このパッケージは Karaf コンテナーの標準アセンブリーをインストールし、完全な Fuse テクノロジースタックを提供します。
前提条件
- Red Hat カスタマーポータル のフルサブスクリプションアカウントが必要になります。
- カスタマーポータルにログインする必要があります。
- CodeReady Studio インストーラー がダウンロードされている必要があります。
- Fuse on Karaf インストーラー がダウンロードされている必要があります。
手順
-
ダウンロードした Fuse on Apache Karaf の
.zip
アーカイブファイルを、ファイルシステムFUSE_INSTALL
の任意の場所に展開します。 Fuse ランタイムに管理ユーザーを追加します。
-
テキストエディターで
FUSE_INSTALL/etc/users.properties
ファイルを開きます。 -
#admin = admin
で始まる行の最初の#
文字を削除します。 -
#g\:admingroup
で始まる行の最初の#
文字を削除します。 ユーザーエントリーのユーザー名
USERNAME
とパスワードPASSWORD
をカスタマイズし、以下のようなユーザーエントリーおよび管理グループエントリーにします (連続した行)。USERNAME = PASSWORD,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
-
etc/users.properties
ファイルを保存します。
-
テキストエディターで
以下のように、CodeReady Studio インストーラー を実行します。
java -jar DOWNLOAD_LOCATION/codereadystudio-12.12.0.GA-installer-standalone.jar
インストール中、以下を行います。
- 契約条件に同意します。
- インストールパスを選択します。
- Java 8 JVM を選択します。
-
Select Platforms and Servers で、Add をクリックして
FUSE_INSTALL
ディレクトリーの場所を確認し、Fuse on Karaf ランタイムを設定します。 - Select Additional Features to Install で Red Hat Fuse Tooling を選択します。
- CodeReady Studio が起動します。Searching for runtimes ダイアログが表示されたら OK をクリックして Fuse on Karaf ランタイムを作成します。
(任意手順): コマンドラインから Apache Maven を使用するには、Maven をインストールおよび設定する必要があります。
注記CodeReady Studio のみを使用する場合、CodeReady Studio にはMaven が事前インストールおよび設定されているため、Maven をインストールする必要は厳密的にはありません。しかし、コマンドラインから Maven を呼び出す場合は、インストールを行う必要があります。
2.3. Karaf で初めて Fuse アプリケーションをビルド
次の手順は、Karaf で初めて Fuse アプリケーションをビルドする場合に便利です。
前提条件
- Red Hat カスタマーポータル のフルサブスクリプションアカウントが必要になります。
- カスタマーポータルにログインする必要があります。
- CodeReady Studio インストーラー がダウンロードされている必要があります。
- ダウンロードした Fuse on Karaf インストーラー が正常にインストールされている必要があります。
手順
CodeReady Studio で以下のように新しいプロジェクトを作成します。
- File→New→Fuse Integration Project と選択します。
-
fuse-camel-cbr
フィールドに eap-camel を入力します。 - Next をクリックします。
Select a Target Environment ペインで以下の設定を選択します。
- Standalone をデプロイメントプラットフォームとして選択します。
-
Karaf/Fuse on Karaf をランタイム環境として選択し、Runtime (optional) ドロップダウンメニューを使用して
Red Had JBoss Middleware> Red Hat Fuse 7+ Runtime
サーバーをターゲットランタイムとして選択します。
- ターゲットランタイムの選択後、Camel Version が自動的に選択され、フィールドがグレーアウトされます。
- Next をクリックします。
- Advanced Project Setup ペーンで Beginner→Content Based Router - Blueprint DSL テンプレートを選択します。
- Finish をクリックします。
- 関連する Fuse Integration パースペクティブを開くように要求された場合は、Yes をクリックします。
CodeReady Studio が必要なアーティファクトをダウンロードし、バックグラウンドでプロジェクトをビルドする間待機します。
重要CodeReady Studio で初めて Fuse プロジェクトをビルドする場合、リモート Maven リポジトリーから依存関係をダウンロードするため、ウィザードがプロジェクトの生成を完了するまで 数分かかることがあります。プロジェクトがバックグラウンドでビルドされている間は、ウィザードを中断したり、CodeReady Studio を閉じたりしないようにしてください。
以下のように、プロジェクトをサーバーにデプロイします。
サーバーが起動していない場合は、Servers ビュー (Fuse Integration パースペクティブの左下隅) で
fuse-karaf-7.4.0.fuse-740028-redhat-00001 Runtime Server
サーバーを選択し、緑色の矢印をクリックして起動します。注記Warning: The authenticity of host 'localhost' can’t be established. というダイアログが表示されたら、Yes をクリックしてサーバーに接続し、Karaf コンソールにアクセスします。
Console ビューに以下のようなメッセージが表示されるまで待機します。
Karaf started in 1s. Bundle stats: 12 active, 12 total
- サーバーが起動した後、Servers ビューに切り替え、サーバーを右クリックしてコンテキストメニューで Add and Remove を選択します。
-
Add and Remove ダイアログで
fuse-camel-cbr
プロジェクトを選択し、Add > ボタンをクリックします。 - Finish をクリックします。
Terminal ビューに移動し、
bundle:list | tail
を入力して、プロジェクトの OSGi バンドルが起動したかどうかをチェックします。以下のような出力が表示されるはずです。... 228 │ Active │ 80 │ 1.0.0.201505202023 │ org.osgi:org.osgi.service.j 232 │ Active │ 80 │ 1.0.0.SNAPSHOT │ Fuse CBR Quickstart
Camel ルートが起動すると、すぐに fuse-camel-cbr
プロジェクトにディレクトリー work/cbr/input
が作成されます。
-
Project Explorer ビューで Refresh をクリックし、新たに作成された
work/cbr/input
ディレクトリーを表示します。 -
プロジェクトの
src/main/data
ディレクトリーにあるファイルをwork/cbr/input
ディレクトリーにコピーします。 しばらく待ってから再度 Project Explorer ビューを更新し、国別に分類された同じファイルが
work/cbr/output
ディレクトリーにあることを確認します。-
work/cbr/output/others
のorder1.xml
-
work/cbr/output/uk
のorder2.xml
およびorder4.xml
-
work/cbr/output/us
のorder3.xml
およびorder5.xml
-
以下のようにプロジェクトをアンデプロイします。
-
Servers ビューで
Red Hat Fuse 7+ Runtime Server
サーバーを選択します。 - サーバーを右クリックし、コンテキストメニューで Add and Remove を選択します。
-
Add and Remove ダイアログで
fuse-camel-cbr
プロジェクトを選択し、< Remove ボタンをクリックします。 - Finish をクリックします。
-
Servers ビューで
第3章 Fuse on JBoss EAP の使用
本章では、Fuse on JBoss EAP を紹介し、JBoss EAP コンテナーで初めて Fuse アプリケーションをインストール、開発、およびビルドする方法を説明します。
以下を参照してください。
3.1. Fuse on JBoss EAP
Eclipse Foundation の Jakarta EE の技術 (旧名称 Java EE) をベースとした JBoss Enterprise Application Platform (EAP) は、当初はエンタープライズアプリケーション開発のユースケースに対応するために作成されました。JBoss EAP は、サービスおよび標準化された Java API (永続性、メッセージング、セキュリティーなど) を実装する明確に定義されたパターンを特徴としています。近年ではディペンデンシーインジェクション (依存性の注入) の CDI の導入や、エンタープライズ Java Bean の簡素化されたアノテーションの導入により、この技術はより軽量化されました。
このコンテナー技術の特徴は次のとおりです。
- 特にスタンドアロンモードでの実行に適しています。
- 事前設定された多くの標準サービス (永続性、メッセージング、セキュリティーなど) をそのまま使用できます。
- 通常、アプリケーション WAR は小型および軽量です (多くの依存関係はコンテナーに事前インストールされているため)。
- 標準化された後方互換性のある Java API。
3.2. Fuse on JBoss EAP のインストール
Red Hat カスタマーポータルから Fuse 7.4 on JBoss EAP の標準インストールパッケージをダウンロードできます。このパッケージは JBoss EAP コンテナーの標準アセンブリーをインストールし、完全な Fuse テクノロジースタックを提供します。
前提条件
- Red Hat カスタマーポータル のフルサブスクリプションアカウントが必要になります。
- カスタマーポータルにログインする必要があります。
- JBoss EAP および JBoss EAP 7.2 Update 01 がダウンロードされている必要があります。
- Fuse on JBoss EAP がダウンロードされている必要があります。
- CodeReady Studio インストーラー がダウンロードされている必要があります。
手順
次のように、シェルプロンプトから JBoss EAP インストーラーを実行します。
java -jar DOWNLOAD_LOCATION/jboss-eap-7.2.0-installer.jar
インストール中、以下を行います。
- 契約条件に同意します。
-
JBoss EAP ランタイムのインストールパス
EAP_INSTALL
を選択します。 - 管理ユーザーを作成し、後で必要になる管理ユーザーのクレデンシャル情報を注意して書き留めておきます。
- 残りの画面では、デフォルト設定を使用できます。
-
シェルプロンプトを開き、
EAP_INSTALL
ディレクトリーに移動します。 EAP_INSTALL
ディレクトリーから JBoss EAP 7.2 Update 01 を適用します。以下に例を示します。bin/jboss-cli.sh "patch apply jboss-eap-7.2.1-patch.zip"
EAP_INSTALL
ディレクトリーから、以下のように Fuse on EAP のインストーラーを実行します。java -jar DOWNLOAD_LOCATION/fuse-eap-installer-7.4.0.jar
以下のように、CodeReady Studio インストーラーを実行します。
java -jar DOWNLOAD_LOCATION/codereadystudio-12.12.0.GA-installer-standalone.jar
インストール中、以下を行います。
- 契約条件に同意します。
- インストールパスを選択します。
- Java 8 JVM を選択します。
-
Select Platforms and Servers ステップで、Add をクリックして
EAP_INSTALL
ディレクトリーの場所を確認し、JBoss EAP ランタイムを設定します。 - Select Additional Features to Install で Red Hat Fuse Tooling を選択します。
- CodeReady Studio が起動します。Searching for runtimes ダイアログが表示されたら OK をクリックして JBoss EAP ランタイムを作成します。
(任意手順): コマンドラインから Apache Maven を使用するには、Maven をインストールおよび設定する必要があります。
注記CodeReady Studio のみを使用する場合、CodeReady Studio にはMaven が事前インストールおよび設定されているため、厳密的には Maven をインストールする必要はありません。しかし、コマンドラインから Maven を呼び出す場合は、インストールを行う必要があります。
3.3. JBoss EAP で最初の Fuse アプリケーションをビルド
次の手順は、JBoss EAP で初めて Fuse アプリケーションをビルドする場合に便利です。
前提条件
- Red Hat カスタマーポータル のフルサブスクリプションアカウントが必要になります。
- カスタマーポータルにログインする必要があります。
- CodeReady Studio インストーラー がダウンロードされている必要があります。
- ダウンロードした Fuse on JBoss EAP が正常にインストールされている必要があります。
手順
CodeReady Studio で以下のように新しいプロジェクトを作成します。
- File→New→Fuse Integration Project と選択します。
-
Project Name フィールドに
eap-camel
を入力します。 - Next をクリックします。
Select a Target Environment ペインで以下の設定を選択します。
- Standalone をデプロイメントプラットフォームとして選択します。
-
Wildfly/Fuse on EAP をランタイム環境として選択し、Runtime (optional) ドロップダウンメニューを使用して
JBoss EAP 7.x Runtime
サーバーをターゲットランタイムとして選択します。
- ターゲットランタイムの選択後、Camel Version が自動的に選択され、フィールドがグレーアウトされます。
- Next をクリックします。
- Advanced Project Setup ペーンで Spring Bean - Spring DSL テンプレートを選択します。
Finish をクリックします。
重要CodeReady Studio で初めて Fuse プロジェクトをビルドする場合、ウィザードがプロジェクトの生成を完了するまで 数分 かかることがあります。これは、リモート Maven リポジトリーから依存関係をダウンロードするためです。プロジェクトがバックグラウンドでビルドされている間は、ウィザードを中断したり、CodeReady Studio を閉じたりしないでください。
- 関連する Fuse Integration パースペクティブを開くように要求された場合は、Yes をクリックします。
- CodeReady Studio が必要なアーティファクトをダウンロードし、バックグラウンドでプロジェクトをビルドする間待機します。
以下のように、プロジェクトをサーバーにデプロイします。
-
サーバーが起動していない場合は、Servers ビュー (Fuse Integration パースペクティブの左下隅) で
Red Hat JBoss EAP 7.2 Runtime
サーバーを選択し、緑色の矢印をクリックして起動します。 Console ビューに以下のようなメッセージが表示されるまで待機します。
14:47:07,283 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 13948ms - Started 495 of 680 services (326 services are lazy, passive or on-demand)
- サーバーが起動した後、Servers ビューに切り替え、サーバーを右クリックしてコンテキストメニューで Add and Remove を選択します。
-
Add and Remove ダイアログで
eap-camel
プロジェクトを選択し、Add > をクリックします。 - Finish をクリックします。
-
サーバーが起動していない場合は、Servers ビュー (Fuse Integration パースペクティブの左下隅) で
以下のように、プロジェクトが動作していることを確認します。
-
URL http://localhost:8080/camel-test-spring?name=Kermit に移動し、
eap-camel
プロジェクトで実行されているサービスにアクセスします。 -
ブラウザーウインドウには、
Hello Kermit
が応答として表示されるはずです。
-
URL http://localhost:8080/camel-test-spring?name=Kermit に移動し、
以下のようにプロジェクトをアンデプロイします。
-
Servers ビューで
Red Hat JBoss EAP 7.2 Runtime
サーバーを選択します。 - サーバーを右クリックし、コンテキストメニューで Add and Remove を選択します。
-
Add and Remove ダイアログで
eap-camel
プロジェクトを選択し、< Remove をクリックします。 - Finish をクリックします。
-
Servers ビューで
第4章 Maven のローカルでの設定
一般的な Fuse アプリケーションの開発では、Maven を使用してプロジェクトをビルドおよび管理します。
以下のトピックで Maven をローカルで設定する方法を説明します。
4.1. Maven 設定の準備
Maven は、Apache の無料のオープンソースビルドツールです。通常は、Maven を使用して Fuse アプリケーションをビルドします。
手順
- Maven ダウンロードページ から最新バージョンの Maven をダウンロードします。
システムがインターネットに接続していることを確認します。
プロジェクトのビルド中、Maven が外部リポジトリーを探し、必要なアーティファクトをダウンロードするのがデフォルトの動作になります。Maven はインターネット上でアクセス可能なリポジトリーを探します。
このデフォルト動作を変更し、Maven によってローカルネットワーク上のリポジトリーのみが検索されるようにすることができます。これは Maven をオフラインモードで実行できることを意味します。オフラインモードでは、Maven によってローカルリポジトリーのアーティファクトが検索されます。「ローカル Maven リポジトリーの追加」 を参照してください。
4.2. Red Hat リポジトリーを Maven へ追加
Red Hat Maven リポジトリーあるアーティファクトにアクセスするには、Red Hat Maven リポジトリーを Maven の settings.xml
ファイルに追加する必要があります。Maven は、.m2
ディレクトリーで settings.xml
ファイルを探します。ユーザー指定の settings.xml
ファイルがない場合、Maven は M2_HOME/conf/settings.xml
のシステムレベルの settings.xml
ファイルを使用します。
前提条件
Red Hat リポジトリーを追加する settings.xml
ファイルがある場所を知っている必要があります。
手順
以下の例のように、settings.xml
ファイルに Red Hat リポジトリーの repository
要素を追加します。
<?xml version="1.0"?> <settings> <profiles> <profile> <id>extra-repos</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>redhat-ga-repository</id> <url>https://maven.repository.redhat.com/ga</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>redhat-ea-repository</id> <url>https://maven.repository.redhat.com/earlyaccess/all</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>jboss-public</id> <name>JBoss Public Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>redhat-ga-repository</id> <url>https://maven.repository.redhat.com/ga</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>redhat-ea-repository</id> <url>https://maven.repository.redhat.com/earlyaccess/all</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>jboss-public</id> <name>JBoss Public Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public</url> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>extra-repos</activeProfile> </activeProfiles> </settings>
4.3. ローカル Maven リポジトリーの追加
インターネットへ接続せずに Apache Karaf コンテナーを実行し、オフライン状態では使用できない依存関係を持つアプリケーションをデプロイする場合、Maven 依存関係プラグインを使用してアプリケーションの依存関係を Maven オフラインリポジトリーにダウンロードすることができます。ダウンロード後、このカスタマイズされた Maven オフラインリポジトリーをインターネットに接続していないマシンに提供することができます。
手順
pom.xml
ファイルが含まれるプロジェクトディレクトリーで、以下のようなコマンドを実行し、Maven プロジェクトのリポジトリーをダウンロードします。mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline -Dmaven.repo.local=/tmp/my-project
この例では、プロジェクトのビルドに必要な Maven 依存関係とプラグインは
/tmp/my-project
ディレクトリーにダウンロードされます。etc/org.ops4j.pax.url.mvn.cfg
ファイルを編集し、org.ops4j.pax.url.mvn.offline
を true に設定します。これによりオフラインモードが有効になります。## # If set to true, no remote repository will be accessed when resolving artifacts # org.ops4j.pax.url.mvn.offline = true
- このカスタマイズされた Maven オフラインリポジトリーを、インターネットに接続していない内部のマシンに提供します。
4.4. Maven アーティファクトおよびコーディネート
Maven ビルドシステムでは、アーティファクト が基本のビルドブロックです。ビルド後のアーティファクトの出力は、通常 JAR や WAR ファイルなどのアーカイブになります。
Maven の主な特徴として、アーティファクトを検索し、検索したアーティファクト間で依存関係を管理できる機能が挙げられます。Maven コーディネート は、特定のアーティファクトの場所を特定する値のセットです。基本的なコーディネートには、以下の形式の 3 つの値があります。
groupId:artifactId:version
基本的なコーディネートに packaging の値、または packaging と classifier の値の両方を追加することがあります。Maven コーディネートには以下の形式のいずれかを使用できます。
groupId:artifactId:version groupId:artifactId:packaging:version groupId:artifactId:packaging:classifier:version
値の説明は次のとおりです。
- groupdId
-
アーティファクトの名前の範囲を定義します。通常、パッケージ名のすべてまたは一部をグループ ID として使用します。例:
org.fusesource.example
- artifactId
- グループ名に関連するアーティファクト名を定義します。
- version
-
アーティファクトのバージョンを指定します。バージョン番号には
n.n.n.n
のように最大 4 つの部分を含めることができ、最後の部分には数字以外の文字を含めることができます。たとえば1.0-SNAPSHOT
の場合、最後の部分は英数字のサブ文字列である0-SNAPSHOT
になります。 - packaging
-
プロジェクトのビルド時に生成されるパッケージ化されたエンティティーを定義します。OSGi プロジェクトでは、パッケージングは
bundle
になります。デフォルト値はjar
です。 - classifier
- 同じ POM からビルドされた内容が異なるアーティファクトを区別できるようにします。
アーティファクトの POM ファイルの要素は、以下のようにアーティファクトのグループ ID、アーティファクト ID、パッケージング、およびバージョンを定義します。
<project ... > ... <groupId>org.fusesource.example</groupId> <artifactId>bundle-demo</artifactId> <packaging>bundle</packaging> <version>1.0-SNAPSHOT</version> ... </project>
前述のアーティファクトの依存関係を定義するには、以下の dependency
要素を POM ファイルに追加します。
<project ... > ... <dependencies> <dependency> <groupId>org.fusesource.example</groupId> <artifactId>bundle-demo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> ... </project>
バンドルは特定タイプの JAR ファイルで、jar
はデフォルトの Maven パッケージタイプであるため、前述の依存関係に bundle
パッケージを指定する必要はありません。ただし、依存関係でパッケージタイプを明示的に指定する必要がある場合は、type
要素を使用できます。