Tooling チュートリアル
CodeReady Studio で Fuse Tooling を使用する方法の例
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、CTO である Chris Wright のメッセージ をご覧ください。
第1章 Fuse Tooling チュートリアルについて リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Fuse Tooling チュートリアルは、Fuse Tooling を使用して Apache Camel アプリケーションを開発、実行、テスト、およびデプロイするための実践的な紹介を提供します。
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
始める前に、次のソフトウェアに精通している必要があります。
Fuse Tooling チュートリアルの概要 リンクのコピーリンクがクリップボードにコピーされました!
チュートリアルの概要と、各チュートリアルで達成できることは次のとおりです。
Fuse Integration プロジェクトを作成し、チュートリアルリソースファイル (メッセージの例とルーティングコンテキストファイル) を設定します。プロジェクトを作成すると、ルーティングコンテキストと事前ルートが自動作成されます。
フォルダーからメッセージを取得して別のフォルダーにコピーする単純なルートのエンドポイントを定義します。
テストメッセージを表示します。ルートを実行し、テストメッセージがソースフォルダーからターゲットフォルダーにコピーされたことを確認して、ルートが機能することを確認します。
メッセージをフィルタリングし、メッセージのコンテンツに基づいて別のターゲットフォルダーにコピーするコンテンツベースのルーターを追加します。
メッセージをさらにフィルタリングし、メッセージのコンテンツに基づいて別のターゲットフォルダーにコピーする別のルートを追加します。
Camel デバッガーを使用してブレークポイントを設定してから、ルートをステップスルーしてルート変数とメッセージ変数を調べます。
メッセージをルートにドロップし、すべてのルートノードを介して追跡します。
ルートの JUnit テストケースを作成してから、ルートをテストします。
Apache Camel プロジェクトを Red Hat Fuse に公開するプロセスをウォークスルーします。ローカルサーバーを定義し、公開オプションを設定し、サーバーを起動し、プロジェクトを公開し、サーバーに接続して、プロジェクトが正常にビルドおよび公開されたことを確認します。
Fuse Tooling 機能の詳細は、Tooling ユーザーガイド を参照してください。
サンプルアプリケーションについて リンクのコピーリンクがクリップボードにコピーされました!
Fuse Tooling チュートリアルでビルドしたサンプルアプリケーションは、動物園が動物を注文するための簡単な注文アプリケーションをシミュレートします。サンプルの XML メッセージが提供されます。各 XML メッセージには、お客様情報 (動物園の名前、都市、国) と注文情報 (要求された動物の種類と数、および許可される動物の最大数) が含まれます。
Fuse Tooling を使用して、受信サンプルメッセージを取得し、コンテンツ (有効な注文と無効な注文) に基づいてフィルタリングし、動物園の場所 (国) で有効な注文をさらに並べ替えるブループリントプロジェクトを作成します。後のチュートリアルでは、サンプルアプリケーションを使用して、ルーティングコンテキストをデバッグし、ルートを介してメッセージをトレースし、JUnit でルートをテストし、最後に Fuse プロジェクトを公開します。
リソースファイルについて リンクのコピーリンクがクリップボードにコピーされました!
各チュートリアルは、前のチュートリアルの上にビルドされています。あるチュートリアルで生成されたコードは、次のチュートリアルの開始点であり、チュートリアルを順番に完了することができます。または、最初のチュートリアルを完了した後、提供されているコンテキストファイルの 1 つを開始点として使用して、他のチュートリアルを順番どおりに実行することもできます。
チュートリアルは、ここ にある Fuse-tooling-tutorials-jbds-10.3.zip ファイルにあるリソースファイルに依存します。この zip ファイルには 2 つのフォルダーが含まれています。
- Messages
-
このフォルダーには、
message1.xml、message2.xml、…、message6.xmlという名前の 6 つのメッセージファイルが含まれます。最初のチュートリアルでは、2章環境の設定、これらのメッセージファイルを保存するディレクトリーを作成し、そのコンテンツも表示します。これらのメッセージファイルは、すべてのチュートリアルに必要です。 - blueprintContexts
このフォルダーには、次の 3 つのルーティングコンテキストファイルが含まれています。
Blueprint1.xml: これは、3章ルートの定義のチュートリアルを完了することで得られるソリューションルーティングコンテキストです。次のチュートリアルの開始点として使用できます。-
Blueprint2.xml: これは、5章コンテンツベースのルーターの追加チュートリアルのソリューションコンテキストファイルです。blueprint2.xmlを、6章ルーティングコンテキストに別のルートを追加するチュートリアルの開始点として使用できます。 Blueprint3.xml: これは、6章ルーティングコンテキストに別のルートを追加するチュートリアルのソリューションコンテキストファイルです。blueprint3.xmlを、以下のチュートリアルの開始点として使用できます。
第2章 環境の設定 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、Fuse Integration プロジェクトを作成するプロセスを説明します。プロジェクトには、初期ルートとデフォルトの CamelContext が含まれています。ルートは、メッセージが通過するプロセッサーのチェーンです。CamelContext は、ルートを設定するためのコンテキストを定義し、エンドポイント (メッセージソースとターゲット) 間のメッセージエクスチェンジに使用するポリシーを指定する単一のルーティングルールベースです。
他のチュートリアルに従う前に、このチュートリアルを完了する必要があります。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- Fuse Integration プロジェクトを作成する
- プロジェクトのテストメッセージ (XML ファイル) をダウンロードします
- テストメッセージを表示する
始める前に リンクのコピーリンクがクリップボードにコピーされました!
Fuse Integration プロジェクトを設定する前に、Fuse Tooling を使用して Red Hat CodeReady Studio をインストールする必要があります。CodeReady Studio のインストール方法は、Red Hat customer portal にアクセスして、プラットフォームのインストールガイドを参照してください。
次の手順を実行する前に10章プロジェクトを Red Hat Fuse に公開するチュートリアルでは、Java8 をインストールする必要があります。
Fuse Integration プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat CodeReady Studio を開きます。
CodeReady Studio を初めて起動すると、JBoss パースペクティブで開きます。
それ以外の場合は、前の CodeReady Studio セッションで使用していたパースペクティブで開きます。
メニューから、File → New → Fuse Integration Project を選択して、New Fuse Integration Project ウィザードを開きます。
Project Name フィールドに
ZooOrderAppを入力します。Use default workspace location オプションをオンのままにします。
Next をクリックして、Select a Target Runtime ページを開きます。
- デプロイメントプラットフォームとして Standalone を選択します。
Karaf/Fuse on Karaf を選択し、ランタイムに選択されている None selected を受け入れます。
注記後でランタイムを追加します。10章プロジェクトを Red Hat Fuse に公開するチュートリアル。
デフォルトの Apache Camel version を受け入れます。
Next をクリックして Advanced Project Setup ページを開き、Empty - Blueprint DSL テンプレートを選択します。
Finish をクリックします。
Fuse Tooling は、Maven リポジトリーから、プロジェクトのビルドに必要なすべてのファイルのダウンロードを開始し、新しいプロジェクトを Project Explorer ビューに追加します。
CodeReady Studio がまだ Fuse Integration パースペクティブを表示していない場合は、今すぐ切り替えるかどうかを尋ねられます。
Yes をクリックします。
新しい ZooOrderApp プロジェクトが Fuse Integration パースペクティブで開きます。
ZooOrderApp プロジェクトには、ルートを作成して実行するために必要なすべてのファイルが含まれています。
ZooOrderApp/pom.xml— Maven プロジェクトファイル。-
ZooOrderApp/src/main/resources/OSGI-INF/blueprint/blueprint.xml— Camel ルーティングコンテキストと初期の空のルートが含まれる Blueprint XML ファイル。
メインのルーティングコンテキストを表示するには、Editor ビューで
blueprint.xmlファイルを開き、Source タブをクリックします。
ID 値を表示するためのコンポーネントラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
デザインキャンバスに配置するパターンとコンポーネントのラベルが、Tooling チュートリアルに示されているラベルと同じであることを確認するには、次の手順に従います。
エディター設定ページを開きます。
- Linux および Windows マシンでは、Windows → Preferences → Fuse Tooling → Editor を選択します。
- OS X では、CodeReady Studio → Preferences → Fuse Tooling → Editor を選択します。
Use ID values for all component labels オプションをオンにします。
- Apply and Close をクリックします。
プロジェクトのテストメッセージをダウンロードする リンクのコピーリンクがクリップボードにコピーされました!
サンプルの XML メッセージファイルが提供されているので、Tooling チュートリアルを実行しながら ZooOrderApp プロジェクトをテストできます。メッセージには、動物園の動物の注文情報が含まれています。たとえば、シカゴ動物園の 5 頭のウォンバットの注文。
提供されたテストメッセージ (XML ファイル) をダウンロードしてプロジェクトにコピーするには:
CodeReady Studio Project Explorer ビューで、テストメッセージを含むフォルダーを作成します。
-
ZooOrderApp/srcフォルダーを右クリックし、New → Folder を選択します。New Folder ウィザードが開きます。 -
Folder name に
dataと入力します。 - Finish をクリックします。
-
こちら をクリックして、提供される Tooling チュートリアルのリソース
Fuse-tooling-tutorials-jbds-10.3.zipファイルの場所に対して Web ブラウザーを開きます。Fuse-tooling-tutorials-jbds-10.3.zipファイルを、ZooOrderApp プロジェクトのワークスペースの外部にある便利な場所にダウンロードし、デプロイメントします。1章Fuse Tooling チュートリアルについてで説明されているように、2 つのフォルダーが含まれています。messages フォルダーから、6 つの XML ファイルを ZooOrderApp プロジェクトの
src/dataフォルダーにコピーします。注記XML ファイルの
は無視しても問題はありません。
テストメッセージの表示 リンクのコピーリンクがクリップボードにコピーされました!
各 XML メッセージファイルには、動物園 (お客様) からの大量の動物の注文が含まれています。たとえば、'message1.xml' ファイルには、ブルックリン動物園からの 12 頭のウォンバットの注文が含まれています。
Editor ビューで任意のメッセージ XML ファイルを開いて、コンテンツを調べることができます。
- Project Explorer ビューで、メッセージファイルを右クリックします。
- ポップアップメニューから Open を選択します。
Source タブをクリックします。
XML ファイルが Editor ビューで開きます。
たとえば、
message1.xmlファイルの内容には、Bronx 動物園からの 12 頭のウォンバットに関する注文が表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新しく作成した message1.xml ファイルの最初の行の
を無視しても問題はありません。ドキュメントが参照する文法の制約 (DTD または XML スキーマ) がないことを示しています。
次の表に、6 つのメッセージファイルすべての内容の概要を示します。
| msg# | <name> | <city> | <country> | <animal> | <quantity> |
|---|---|---|---|---|---|
| 1 | ブロンクス動物園 | ブロンクス NY | USA | ウォンバット | 12 |
| 2 | サンディエゴ動物園 | カリフォルニア州サンディエゴ | USA | キリン | 3 |
| 3 | シーライフセンター | ミュンヘン | ドイツ | ペンギン | 15 |
| 4 | Berlin Zoo | ベルリン | ドイツ | エミュー | 6 |
| 5 | フィラデルフィア動物園 | フィラペルフィア PA | USA | キリン | 2 |
| 6 | セントルイス動物園 | セントルイス MO | USA | ペンギン | 10 |
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
CodeReady Studio プロジェクトを設定したので、次の手順 3章ルートの定義XML メッセージを処理するルートを定義するチュートリアルに進むことができます。
第3章 ルートの定義 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、エンドポイントをルートに追加および設定する方法を説明します。エンドポイントは、ルートを通過するメッセージのソースとシンクを定義します。ZooOrderApp プロジェクトでは、開始 (ソース) エンドポイントは XML メッセージファイルを含むフォルダーです。シンク (終了) エンドポイントは、プロジェクトで指定する別のフォルダーです。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- ルートにソースエンドポイントとシンクエンドポイントを追加します
- エンドポイントを設定します
- エンドポイントを接続します
作業を開始する前に リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始する前に:
- 2章環境の設定チュートリアルで説明されているように、ワークスペース環境を設定する必要があります。
-
CodeReady Studio で、Editor ビューで
ZooOrderAppプロジェクトの/src/main/resources/OSGI-INF/blueprint/blueprint.xmlファイルを開きます。 -
必要に応じて、Editor ビューの下部にある Design タブをクリックして、
Route_route1というラベルが付けられた初期ルートのグラフを表示します。
ソースエンドポイントの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、src/data フォルダーをルートのソースエンドポイントとして設定します。
File コンポーネント (
) を Palette の Components ドロワーからキャンバスにドラッグし、それを Route_route1コンテナーノードにドロップします。File コンポーネントは、
Route_route1コンテナーノード内のFrom _from1ノードに変更されます。キャンバスで
From _from1ノードを選択します。キャンバスの下にある Properties ビューには、編集用のノードのプロパティーフィールドが表示されます。
メッセージファイルのソースディレクトリーを指定するには、Properties ビューで Advanced タブをクリックします。
Directory Name フィールドに
src/dataを入力します。src/dataは、プロジェクトのディレクトリーからの相対パスです。Consumer タブで、チェックボックスをクリックして Noop オプションを有効にします。
Noop オプションにより、
message#.xmlファイルがsrc/dataフォルダーから削除されなくなり、べき等を有効にして各message#.xmlファイルが 1 度だけ消費されるようにします。Details タブを選択して、ファイルノードの Details ページを開きます。
ツールは、Advanced 設定タブで設定した Directory Name と Noop プロパティーを Uri フィールドに自動的に入力することに注意してください。また、Id フィールドに自動生成される ID (
_from1) も設定します。注記ツールは、自動生成された ID 値の前にアンダースコア (_) を付けます。オプションで ID 値を変更できます。アンダースコア接頭辞は必須ではありません。
自動生成された ID はそのままにします。
- File → Save を選択して、ルートを保存します。
シンクエンドポイントの設定 リンクのコピーリンクがクリップボードにコピーされました!
ルートのシンク (ターゲット) エンドポイントを追加して設定するには、次の手順に従います。
別の File コンポーネントを Palette の Components ドロワーからドラッグし、それを
Route_route1コンテナーノードにドロップします。File コンポーネントは、
Route_route1コンテナーノード内のTo_to1ノードに変更されます。キャンバスで
To_to1ノードを選択します。キャンバスの下にある Properties ビューには、編集用のノードのプロパティーフィールドが表示されます。
Details タブ:
-
Uri フィールドに
file:target/messages/receivedと入力します。 Id フィールドに
_Receivedと入力します。注記このツールは、実行時に
target/messages/receivedフォルダーを作成します。
-
Uri フィールドに
Route_route1コンテナーで From _from1 ノードを選択し、そのコネクター矢印 (
) を To_Received ノードにドラッグしてからリリースします。
注記2 つのファイルノードは、ルートエディターのレイアウト方向設定に従って、キャンバス上で接続および整列されます。選択肢は、Down (デフォルト) と Right です。
ルートエディターのレイアウト設定オプションにアクセスするには:
- Linux および Windows マシンでは、Windows → Preferences → Fuse Tooling → Editor → Choose the layout direction for the diagram editor を選択します。
- OS X では、CodeReady Studio → Preferences → Fuse Tooling → Editor → Choose the layout direction for the diagram editor を選択します。
注記プロジェクトを閉じる前にノードを接続しない場合、プロジェクトを再度開くと、ツールによってノードが自動的に接続されます。
- ルートを Save します。
キャンバスの下部にある Source タブをクリックして、ルートの XML を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
ルートにエンドポイントを追加して設定したので、次の 4章ルートの実行 チュートリアル説明に従ってルートを実行できます。
第4章 ルートの実行 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、ルートを実行して、ルートがソースエンドポイントからシンクエンドポイントにメッセージを正しく転送することを確認するプロセスを説明します。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- ルートをローカル Camel コンテキストとして実行します (まだテストを設定していないため、テストなしで)
- ルートを介してメッセージを送信します。
- シンクエンドポイントが受信したメッセージを調べて、ルートがテストメッセージを正しく処理したことを確認します
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次の結果の ZooOrderApp プロジェクトが必要です。
- 2章環境の設定 チュートリアルを終了します。
次のいずれかになります。
3章ルートの定義 チュートリアルを終了します。
あるいは、以下のような場合もあります。
-
「リソースファイルについて」で説明されているように、プロジェクトの
blueprint.xmlファイルを提供されるblueprintContexts/blueprint1.xmlファイルに置き換える。
ルートを実行する リンクのコピーリンクがクリップボードにコピーされました!
ルートを実行するには:
-
ZooOrderAppプロジェクトを開きます。 Project Explorer で
ZooOrderApp/Camel Contexts/blueprint.xmlを選択します。blueprint.xmlを右クリックし、Run As → Local Camel Context (without tests) を選択します。注記代わりに Local Camel Context を選択すると、ツールは提供された JUnit テストに対してルーティングコンテキストを自動的に実行しようとします。JUnit テストが存在しないため、ツールはテストなしでルーティングコンテキストの実行に戻ります。9章JUnit を使用したルートのテストチュートリアルでは、ZooOrderApp プロジェクトをテストするための JUnit テストケースを作成します。
Console パネルが開き、プロジェクトの実行の進行状況を反映するログメッセージが表示されます。最初に、Maven はローカルの Maven リポジトリーを更新するために必要なリソースをダウンロードします。Maven のダウンロードプロセスには数分かかる場合があります。
出力の最後にメッセージ (以下と同様) が表示されるのを待ちます。これらのメッセージは、ルートが正常に実行されたことを示しています。
... [Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Route: _route1 started and consuming from:Endpoint[file://src/data?noop=true] [Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Total 1 routes, of which 1 are started. [Blueprint Event Dispatcher: 1]BlueprintCamelContext INFO Apache Camel 2.21.0.redhat-3 (CamelContext: ...) started in 0.163 seconds [Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Apache Camel 2.21.0.redhat-3 (CamelContext: ...) started in 0.918 seconds
... [Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Route: _route1 started and consuming from:Endpoint[file://src/data?noop=true] [Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Total 1 routes, of which 1 are started. [Blueprint Event Dispatcher: 1]BlueprintCamelContext INFO Apache Camel 2.21.0.redhat-3 (CamelContext: ...) started in 0.163 seconds [Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Apache Camel 2.21.0.redhat-3 (CamelContext: ...) started in 0.918 secondsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
ルートをシャットダウンするには、Console ビューの上部にある
をクリックします。
ルートを確認する リンクのコピーリンクがクリップボードにコピーされました!
ルートが適切に実行されたことを確認するには、メッセージ XML ファイルがソースフォルダー (src/data) からターゲットフォルダー (target/messages/received) にコピーされたかどうかを確認します。
-
Project Explorer で
ZooOrderAppを選択します。 - 右クリックして、Refresh を選択します。
Project Explorer で
target/messages/フォルダーを見つけ、そのフォルダーをデプロイメントし、target/messages/receivedフォルダーに 6 つのメッセージファイル (message1.xmlからmessage6.xml) が含まれていることを確認します。message1.xmlをダブルクリックして、ルートエディターの Design タブでそれを開き、Source タブを選択して XML コードを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
5章コンテンツベースのルーターの追加チュートリアルでは、メッセージのコンテンツを使用して宛先を決定するコンテンツベースのルーターを追加します。
第5章 コンテンツベースのルーターの追加 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、Content-Based Router (CBR) を追加してルートにログを記録する方法を示します。
CBR は、そのコンテンツに基づいてメッセージを宛先にルーティングします。このチュートリアルでは、作成する CBR は、各メッセージの数量フィールドの値 (注文された動物の数) に基づいて、メッセージをさまざまなフォルダー (有効または無効) にルーティングします。各注文の動物の最大値は 10 です。CBR は、数量が 10 より大きいかどうかに応じて、メッセージをさまざまなフォルダーにルーティングします。例えば、ある動物園が 5 頭のシマウマを注文し、3 頭のシマウマしか入手できなかった場合、注文は無効な注文先フォルダーにコピーされます。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- ルートにコンテンツベースのルーターを追加します
コンテンツベースのルーターを設定します。
- コンテンツベースルーターの各出力ブランチにログエンドポイントを追加します
- 各ログエンドポイントの後に Set Header EIP を追加します
- それ以外の場合は、コンテンツベースのルーターにブランチを追加します
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
4章ルートの実行 チュートリアルを終了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint1.xmlファイルに置き換える。
コンテンツベースルーターの追加と設定 リンクのコピーリンクがクリップボードにコピーされました!
ルートにコンテンツベースのルーターを追加して設定するには、次の手順に従います。
-
Project Explorer で
ZooOrderApp/src/main/resources/OSGI-INF/blueprint/blueprint.xmlをダブルクリックして Editor ビューで開きます。 -
Design キャンバスで
To_Receivedノードを選択し、ごみ箱アイコンを選択して削除します。 Palette で Routing ドロワーを開き、Choice (
) パターンをクリックし、(Design キャンバスで) From_from1ノードをクリックします。Route_route1コンテナーが拡張し、Choice_choice1ノードが追加されます。エラーアイコンは、Choice_choice1ノードに子ノードが必要なことを示しています。子ノードは、次のステップで追加します。Routing ドロワーから、When (
) パターンをクリックし、キャンバスで Choice_choice1ノードをクリックします。Choice_choice1コンテナーが拡張し、When_when1ノードが追加されます。When_when1ノードに付随する
は、1 つまたは複数の必要なプロパティー値を設定する必要があることを示しています。
注記このツールは、ルートコンテナーの無効なドロップポイントにパターンを追加することを防ぎます。
キャンバスで
When_when1ノードを選択し、Properties ビューでそのプロパティーを開きます。-
Expression フィールドの
ボタンをクリックして、使用可能なオプションのリストを開きます。
テストメッセージは XML で記述されているため、xpath (XML クエリー言語の場合) を選択します。
注記Expression を選択すると、Properties ビューに、Expression フィールドのすぐ下のインデントされたリストにそのプロパティーが表示されます。このインデントされたリストの Id プロパティーは、式の ID を設定します。Description フィールドに続く Id プロパティーによって
Whenノードの ID が設定されます。インデントされた Expression フィールドに、
/order/orderline/quantity/text() > 10と入力します。この式は、quantity フィールドの値が 10 より大きいメッセージのみが、ルート内のこのパスを (invalidOrders フォルダーに) 移動することを指定します。
残りの各プロパティーはそのままにしておきます。
注記Trim オプション (デフォルトで有効) は、メッセージから先頭または末尾の空白と改行を削除します。
- ルーティングコンテキストファイルを Save します。
Source タブをクリックして、ルートの XML を表示します。
ロギングの追加と設定 リンクのコピーリンクがクリップボードにコピーされました!
ZooOrder アプリケーションの例では、ログメッセージを追加して、ルートを通過するときに XML メッセージを追跡できるようにします。ルートを実行すると、ログメッセージが Console ビューに表示されます。
次の手順に従って、CBR ルートにロギングを追加します。
-
Design タブの Palette で、Components ドロワーを開き、Log コンポーネント (
) をクリックします。
キャンバスで
When_when1ノードをクリックします。When_when1コンテナーが拡張し、Log_log1ノードが追加されます。-
キャンバスで
Log_log1ノードを選択し、Properties ビューでそのプロパティーを開きます。 Message フィールドで、
The quantity requested exceeds the maximum allowed - contact customer.と入力します。
残りのプロパティーはそのままにしておきます。
+
ツールは、ログノード id 値を自動生成します。Fuse Integration パースペクティブの Messages ビューで、ルートでトレースが有効になっている場合、ツールはメッセージインスタンスの Trace Node Id 列にログノードの Id フィールドのコンテンツを挿入します (8章ルートを介したメッセージのトレース チュートリアルを参照してください)。Console では、ルートが実行されるたびに、ログノードの Message フィールドのコンテンツがログデータに追加されます。
- ルーティングコンテキストファイルを Save します。
メッセージヘッダーの追加と設定 リンクのコピーリンクがクリップボードにコピーされました!
メッセージヘッダーには、メッセージを処理するための情報が含まれています。
メッセージヘッダーを追加および設定するには:
-
Palette で、Transformation ドロワーを開き、Set Header (
) パターンをクリックします。
キャンバスで
Log_log1ノードをクリックします。When_when1コンテナーが拡張し、SetHeader_setHeader1ノードが追加されます。キャンバスで
SetHeader_setHeader1ノードを選択し、Properties ビューでそのプロパティーを開きます。-
Expression フィールドのボタンをクリックして使用可能な言語のリストを開き、constant を選択します。
-
インデントされた Expression フィールドに
Invalidと入力します。 -
Header Name フィールドに
Destinationと入力します。 残りのプロパティーはそのままにしておきます。
-
Palette で、Components ドロワーを開き、File (
) コンポーネントをクリックします。
キャンバスで
SetHeader_setHeader1ノードをクリックします。When_when1コンテナーが拡張し、To_to1ノードが追加されます。キャンバスで
To_to1ノードを選択し、Properties ビューでそのプロパティーを開きます。Details タブで、directoryName を Uri フィールドの
target/messages/invalidOrdersに置き換え、Id フィールドに_Invalidと入力します。- ルーティングコンテキストファイルを Save します。
Source タブをクリックして、ルートの XML を表示します。
有効な注文を処理するためのブランチの追加と設定 リンクのコピーリンクがクリップボードにコピーされました!
これまでのところ、CBR は無効な注文 (数量の値が 10 より大きい注文) を含むメッセージを処理します。
有効な注文 (つまり、When_when1 ノードに設定された XPath 式と一致しない XML メッセージ) を処理するようにルートのブランチを追加および設定するには、次のようにします。
-
Palette で、Routing ドロワーを開き、Otherwise (
) パターンをクリックします。
キャンバスで
Choice_choice1コンテナーをクリックします。Choice_choice1コンテナーが拡張し、Otherwise_otherwise1ノードが追加されます。-
キャンバスで
Otherwise_otherwise1ノードを選択し、Properties ビューでそのプロパティーを開きます。 Id フィールドで、
_otherwise1を_elseValidに変更します。
それ以外のブランチのロギングを設定するには、次のようにします。
-
Palette で、Components ドロワーを開き、Log (
) コンポーネントをクリックします。
キャンバスで
Otherwise_elseValidノードをクリックします。Otherwise-elseValidコンテナーが拡張し、Log_log2ノードが追加されます。-
キャンバスで
Log_log2ノードを選択し、Properties ビューでそのプロパティーを開きます。 Message フィールドに、
This is a valid order - OK to process.と入力します。残りのプロパティーはそのままにしておきます。
- ルートを Save します。
それ以外のブランチのメッセージヘッダーを設定するには、次の手順に従います。
- Palette で、Transformation ドロワーを開き、Set Header パターンをクリックします。
キャンバスで
Log_log2ノードをクリックします。Otherwise_elseValidコンテナーが拡張し、SetHeader_setHeader2ノードが追加されます。注記ダイアグラムが混雑したときに、コンテナーを閉じてスペースを解放できます。これを行うには、閉じるコンテナーを選択し、そのコンテナーの
ボタンをクリックします。
コンテナーを再度開くには、コンテナーを選択して、
ボタンをクリックします。
Design タブでコンテナーを閉じたり開いたりしても、ルーティングコンテキストファイルには影響しません。変更はありません。
-
キャンバスで
SetHeader_setHeader2ノードを選択し、Properties ビューでそのプロパティーを開きます。 -
Expression フィールドの
ボタンをクリックして、使用可能な言語のリストを開き、constant を選択します。
-
インデントされた Expression フィールドに
ReadyForDispatcherと入力します。 -
Header Name フィールドに
Destinationと入力します。 残りのプロパティーはそのままにしておきます。
有効なメッセージのターゲットフォルダーを指定するには、次の手順に従います。
-
Palette で、Components ドロワーを開き、File (
) コンポーネントを選択します。
キャンバスで
SetHeader_setHeader2ノードをクリックします。Otherwise_elseValidコンテナーが拡張し、To_to1ノードが追加されます。-
キャンバスで
To_to1ノードを選択し、Properties ビューでそのプロパティーを開きます。 URI フィールドの directoryName を
target/messages/validOrdersに置き換え、Id フィールドに_Validと入力します。ルーティングコンテキストファイルを Save します。
完成したコンテンツベースのルーターは次のようになります。
キャンバスの左下にある Source タブをクリックして、ルートの XML を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
CBR の検証 リンクのコピーリンクがクリップボードにコピーされました!
「ルートを実行する」チュートリアルで説明したように新しいルートを実行し、Console ビューでログメッセージを確認することができます。
実行後、ルートが正しく実行されたかどうかを確認するには、Project Explorer でターゲットの宛先フォルダーを確認します。
-
ZooOrderAppを選択します。 - それを右クリックしてコンテキストメニューを開き、Refresh を選択します。
プロジェクトの root ノード (
ZooOrderApp) でtarget/messages/フォルダーを見つけ、デプロイメントします。target/messages/invalidOrdersフォルダーにmessage1.xmlおよびmessage3.xmlが含まれることを確認します。これらのメッセージでは、
quantity要素の値は 10 を超えます。target/messages/validOrdersフォルダーに有効な注文が含まれる 4 つのメッセージファイルが含まれていることを確認します。-
message2.xml -
message4.xml -
message5.xml message6.xmlこれらのメッセージでは、
quantity要素の値は 10 以下です。注記メッセージの内容を表示するには、各メッセージをダブルクリックして、ルートエディターの XML エディターで開きます。
-
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
次のチュートリアル 6章ルーティングコンテキストに別のルートを追加する では、有効な注文メッセージをさらに処理する 2 番目のルートを追加します。
第6章 ルーティングコンテキストに別のルートを追加する リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、ZooOrderApp プロジェクトの blueprint.xml ファイルの Camel コンテキストに 2 番目のルートを追加する方法を説明します。2 番目のルート:
- 最初のルートの otherwise の場合は分岐の終端から直接メッセージ (有効な注文) を受け取ります。
- お客様の国に従って有効なメッセージを並べ替えます。
-
各メッセージを
ZooOrderApp/target/messagesフォルダーの対応する国フォルダーに送信します。たとえば、シカゴ動物園からの注文は USA フォルダーにコピーされます。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- 2 番目のルートに直接接続するために既存のルートを再設定します
- Camel コンテキストに 2 番目のルートを追加します
- 最初のルートのブランチから直接メッセージを受信するように 2 番目のルートを設定します
- コンテンツベースのルーターを 2 番目のルートに追加します
- 2 番目のルートのコンテンツベースルーターの各出力ブランチに、メッセージヘッダー、ロギング、およびターゲット宛先を追加して設定します
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
5章コンテンツベースのルーターの追加 チュートリアルを完了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint2.xmlファイルに置き換える。
既存のルートのエンドポイントを再設定する リンクのコピーリンクがクリップボードにコピーされました!
既存のルートは、すべての有効な注文を target/messages/validOrders フォルダーに送信します。
このセクションでは、既存のルートの Otherwise _elseValid ブランチのエンドポイントを再設定して、代わりに 2 番目のルート (次のセクションで作成します) に接続します。
2 番目のルートと直接接続するように既存のルートを設定するには:
-
ルートエディターで
ZooOrderApp/src/main/resources/OSGI-INF/blueprint/blueprint.xmlを開きます。 - キャンバスで、Route_route1 コンテナーを選択して、Properties ビューでそのプロパティーを開きます。
- Shutdown Route プロパティーまで下にスクロールして、Default を選択します。
- キャンバスで、ターミナルファイルノード To_Valid を選択して、そのプロパティーを Properties ビューに表示します。
-
Uri フィールドで既存のテキストを削除して、
direct:OrderFulfillmentを入力します。 -
Id フィールドに
_Fulfillを入力します。
既存の To_Valid 端末ファイルノードを再使用する代わりに、Components → Direct コンポーネントに移動してこれを置き換えることができます (再使用する To_Valid ノードと同じプロパティー値で設定する)。
Direct コンポーネントの詳細は、Apache Camel コンポーネントリファレンス を参照してください。
2 番目のルートを追加する リンクのコピーリンクがクリップボードにコピーされました!
ルーティングコンテキストに別のルートを追加するには:
-
Palette で、Routing ドロワーを開き、Route (
) パターンをクリックします。
キャンバスで
Route_route1コンテナーの右をクリックします。キャンバスで Route パターンが
Route_route2コンテナーノードになります。-
Route_route2コンテナーノードをクリックして、Properties ビューでそのプロパティーを表示します。プロパティーはそのままにしておきます。 - ファイルを 保存 します。
ルーティングコンテキストが複雑になるにつれて、作業中はルートエディターを個々のルートに集中させることができます。これを実行するには、Project Explorer で、ルートエディターがキャンバスで表示するルートをダブルクリックします (例: Route_route2)。
キャンバスにルーティングコンテキストにあるすべてのルートを表示するには、Camel Contexts フォルダーの上部にあるプロジェクトの .xml コンテキストファイルエントリー (src/main/resources/OSGI-INF/…) をダブルクリックします。
米国の注文を処理するための Choice ブランチの設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、ルートに Choice ブランチを追加し、新しい target/messages/validOrders/USA フォルダーに USA からの注文を送信するようにルートを設定します。また、メッセージヘッダーとログファイルコンポーネントを設定します。
-
Palette で、Components ドロワーを開き、Direct コンポーネントを選択します (
)。
キャンバスで
Route_route2コンテナーをクリックします。Route_route2コンテナーが拡張し、Direct コンポーネント (From_from2ノード) が追加されます。-
キャンバスで
From_from2ノードをクリックし、Properties ビューでそのプロパティーを開きます。 Uri フィールドで、
name(direct:の後) をOrderFulfillmentに置き換え、Idフィールドで、_direct:OrderFulfillmentと入力します。-
Palette で、Routing ドロワーを開き、Choice (
) パターンを選択します。
キャンバスで
From _direct:OrderFulfillmentノードをクリックします。Route_route2コンテナーが拡張し、Choice_choice2ノードが追加されます。Properties ビューで、
Choice_choice2ノードのプロパティーをそのままにしておきます。-
パレットで、Routing ドロワーを開き、When (
) パターンを選択します。
キャンバスで
Choice_choice2ノードをクリックします。Choice_choice2コンテナーが拡張し、When_when2ノードが追加されます。-
キャンバスで
When_when2ノードを選択し、Properties ビューでそのプロパティーを開きます。 When_when2ノードのプロパティーを以下のように設定します。- Expression ドロップダウンリストから xpath を選択します。
-
インデントされた Expression フィールドに、
/order/customer/country = 'USA'と入力します。 - Trim を有効のままにします。
2 番目の Id フィールドに
_when/usaと入力します。
-
Palette で、Components ドロワーを開き、File (
) コンポーネントを選択します。
キャンバスで
When_when/usaコンテナーをクリックします。When_when/usaコンテナーが拡張し、To_to1ノードが追加されます。Properties ビューで:
-
Uri フィールドで、
directoryNameをtarget/messages/validOrders/USAに置き換えます。 -
Id フィールドに
_USと入力します。
-
Uri フィールドで、
- ファイルを 保存 します。
メッセージヘッダーを設定し、ログコンポーネントを追加するには:
- Palette で、Transformation ドロワーを開き、Set Header を選択します。
キャンバスで
When_when/usaノードをクリックします。When_when/usaコンテナーが拡張し、SetHeader_setHeader3ノードが追加されます。-
キャンバスで
SetHeader_setHeader3ノードを選択し、Properties ビューでそのプロパティーを開きます。 ノードのプロパティーを次のように設定します。
- Expression ドロップダウンメニューから、constant を選択します。
-
インデントされた Expression フィールドに
USAと入力します。 - Trim を有効のままにします。
-
Header Name フィールドに
Destinationと入力します。 2 番目の Id フィールドに
_setHead_usaと入力します。
-
Palette で、Components ドロワーを開き、Log コンポーネント (
) を選択します。
キャンバスで
SetHeaderノードの上をクリックします。When_when/usaコンテナーが拡張し、Log_log3ノードが追加されます。キャンバスで
Log_log3ノードを選択し、Properties ビューでそのプロパティーを開きます。Properties ビューで:
-
Message フィールドに
Valid order - ship animals to USA customerと入力します。 -
Id フィールドに
_usaと入力します。 Logging Level はそのままにします。
-
Message フィールドに
ファイルを 保存 します。
Route_route2の USA ブランチは以下のようになります。
ドイツの注文を処理するための Otherwise ブランチの設定 リンクのコピーリンクがクリップボードにコピーされました!
Route_route2 がキャンバスに表示される場合:
-
Palette で、Routing ドロワーを開き、Otherwise のパターン (
) を選択します。
キャンバスで
Choice_choice2コンテナーをクリックします。Choice_choice2コンテナーが拡張し、Otherwise_otherwise1ノードが追加されます。-
Otherwise_otherwise1ノードを選択し、Properties ビューでそのプロパティーを開きます。 -
Properties ビューで、Id フィールドに
_else/gerと入力します。 -
Palette で、Transformation ドロワーを開き、Set Header パターン (
) を選択します。
キャンバスで
Otherwise_else/gerノードをクリックします。Otherwise_else/gerコンテナーが拡張し、SetHeader_setHeader3ノードが追加されます。-
キャンバスで
SetHeader_setHeader3ノードを選択し、Properties ビューでそのプロパティーを開きます。 Properties ビューで:
- Expression ドロップダウンリストから、constant を選択します。
-
2 番目の Expression フィールドに
Germanyと入力します。 - Trim はそのままにしておきます。
-
Header Name フィールドに
Destinationと入力します。 -
2 番目の Id フィールドに
_setHead_gerと入力します。
-
Palette で、Components ドロワーを開き、Log パターン (
) を選択します。
キャンバスで、
SetHeader_setHead_gerノードの下をクリックします。Otherwise_else/gerコンテナーが拡張し、Log_log3ノードが追加されます。必要に応じて、コネクターエラーをLog_log3ノードからSetHeader_setHead_gerノードにドラッグします。-
キャンバスで
Log_log3ノードを選択し、Properties ビューでそのプロパティーを開きます。 Properties ビューで:
-
Message フィールドに
Valid order - ship animals to Germany customerと入力します。 -
Id フィールドに
_gerと入力します。 - Logging Level はそのままにしておきます。
-
Message フィールドに
Components ドロワーで File パターン (
) を選択し、Log_gerノードの下をクリックします。Otherwise_else/gerコンテナーが拡張し、To_to1ノードが追加されます。必要に応じて、コネクターエラーをSetHeader_setHead_gerノードからTo_to1ノードにドラッグします。-
キャンバスで
To_to1ノードを選択し、Properties ビューでそのプロパティーを開きます。 Properties ビューで:
-
Uri フィールドで、
directoryNameをtarget/messages/validOrders/Germanyに置き換えます。 -
Id フィールドに
_GERと入力します。
-
Uri フィールドで、
- ファイルを 保存 します。
Route_route2 のドイツブランチは以下のようになります。
2 番目のルートを確認する リンクのコピーリンクがクリップボードにコピーされました!
キャンバス上のルートは次のようになります。
完成したルート 1
完成したルート 2
キャンバスの下部にある Source タブで、camelContext 要素の XML は次のようになります。例6.1「デュアルルートコンテンツベースルーターの XML」:
例6.1 デュアルルートコンテンツベースルーターの XML
ツールが shutdownRoute=" " 属性を 2 番目のルート要素 (<route id="route2">) に追加した場合は、その属性を削除します。そうしないと、ZooOrderApp プロジェクトの実行に失敗する可能性があります。
更新されたプロジェクトが期待どおりに機能することを確認するには、次の手順に従います。
-
ZooOrderApp/Camel Contexts/blueprint.xmlをローカルの Camel コンテキスト (テストなし) として実行します。 コンソールの出力の終わりを確認します。次の行が表示されます。
ターゲットの宛先フォルダーを確認して、ルートが正しく実行されたことを確認します。
-
Project Explorer で
ZooOrderAppを右クリックし、Refresh を選択します。 target/messages/フォルダーをデプロイメントします。message*.xmlファイルが以下のように宛先フォルダー内で分散されるはずです。図6.1 プロジェクトエクスプローラーでのターゲットメッセージの宛先
-
Project Explorer で
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
次のチュートリアル 7章ルーティングコンテキストのデバッグでは、Fuse Tooling デバッガーの使用方法を学習します。
第7章 ルーティングコンテキストのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、Camel デバッガーを使用して、ローカルで実行されているルーティングコンテキストの論理エラーを見つける方法を示します。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- 2 つの経路の対象ノードにブレークポイントを設定します
- デバッグパースペクティブで、経路をステップスルーし、メッセージ変数の値を調べます
- メッセージ変数の値を変更し、効果を観察しながら、経路をもう一度ステップスルーします
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
6章ルーティングコンテキストに別のルートを追加する チュートリアルを完了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint3.xmlファイルに置き換える。
ブレークポイントの設定 リンクのコピーリンクがクリップボードにコピーされました!
デバッガーでは、条件付きブレークポイントと無条件ブレークポイントの両方を設定できます。このチュートリアルでは、無条件のブレークポイントのみを設定します。条件付きブレークポイント (デバッグセッション中に特定の条件が満たされたときにトリガーされるブレークポイント) を設定する方法は、Tooling ユーザーガイド を参照してください。
無条件のブレークポイントを設定するには:
-
必要に応じて、ルートエディターで
ZooOrderApp/src/main/resources/OSGI-INF/blueprint/blueprint.xmlを開きます。 -
Project Explorer で
Camel Contexts→src/main/resources/OSGI-INF/blueprint/blueprint.xmlをデプロイメントして両方のルートエントリーを公開します。 -
Route_route1 エントリーをダブルクリックして、Design タブで
Route_route1にフォーカスを切り替えます。 キャンバスで
Choice_choice1ノードを選択し、その
アイコンをクリックし、無条件のブレークポイントを設定します。
注記ルートエディターで、ノードの
アイコンまたは
アイコンをそれぞれクリックすることにより、特定のブレークポイントを無効または削除できます。キャンバスを右クリックし、Delete all breakpoints を選択すると、設定したすべてのブレークポイントを削除することができます。
以下の
Route_Route1ノードに無条件ブレークポイントを設定します。-
Log_log1 -
SetHeader_setHeader1 -
To_Invalid -
Log_log2 -
SetHeader_setHeader2 -
To_Fulfill
-
-
Project Explorer で、
src/main/resources/OSGI-INF/blueprintの下にあるRoute_route2をダブルクリックして、キャンバスでRoute_route2を開きます。 以下の
Route_Route2ノードに無条件ブレークポイントを設定します。-
Choice_choice2 -
SetHeader_setHead_usa -
Log_usa -
To_US -
SetHeader_setHead_ger -
Log_ger -
To_GER
-
ルーティングコンテキストのステップスルー リンクのコピーリンクがクリップボードにコピーされました!
次の 2 つの方法でルーティングコンテキストをステップスルーできます。
-
ステップオーバー (
) - ブレークポイントに関係なく、ルーティングコンテキストで実行の次のノードにジャンプします。
再開 (
) - ルーティングコンテキスト内の次のアクティブなブレークポイントにジャンプします。
-
Project Explorer で
ZooOrderAppプロジェクトのCamel Contextsフォルダーをデプロイメントし、blueprint.xmlファイルを公開します。 blueprint.xmlファイルを右クリックしてコンテキストメニューを開き、Debug As → Local Camel Context (without tests) をクリックします。Camel デバッガーは、最初に検出したブレークポイントで実行を一時停止し、今すぐ Debug パースペクティブを開くかどうかを尋ねます。
Yes をクリックします。
注記No をクリックすると、確認ペインがさらに数回表示されます。3 回目の拒否後、それは消え、Camel デバッガーは実行を再開します。この時点でデバッガーを操作するには、Window → Open Perspective → > Debug をクリックして、Debug パースペクティブを開く必要があります。
Debug ビューに示されるように、ルーティングコンテキストが
_choice1 in _route1 [blueprint.xml]で一時停止された状態で Debug パースペクティブが開きます。注記ブレークポイントは、デバッガーが自動的に再開する前に最大 5 分間保持され、次のブレークポイントまたはルーティングコンテキストの最後のいずれかに移動します。
Variables ビューで、ノードをデプロイメントして、各ノードで使用可能な変数と値を表示します。
ルーティングコンテキストをステップ実行すると、最後のブレークポイント以降に値が変更された変数が黄色で強調表示されます。変更された変数を表示するには、各ブレークポイントでノードをデプロイメントする必要がある場合があります。
をクリックし、次のブレークポイント _log2 in _route1 [blueprint.xml]に移動します。-
Variables ビューでノードをデプロイメントし、
_choice1 in Route1 [blueprintxt.xml]の最後のブレークポイントから変更された変数を確認します。
をクリックし、次のブレークポイント _setHeader2 in Route1 [blueprint.xml]に移動します。_log2 in Route1 [blueprint.xml]のブレークポイントから変更された変数 (黄色で強調表示) を検証します。Debug ビューで
_log2 in _route1 [blueprint.xml]をクリックし、Variables ビューにブレークポイント_log2 in _route1 [blueprint.xml]からの変数の値を投入し素早く比較します。Debug ビューでは、同じメッセージフロー内のブレークポイントを切り替えて、Variables ビューで変化する変数値をすばやく比較および監視できます。
注記メッセージフローの長さはさまざまです。
Route_route1のInvalidOrdersブランチを移動するメッセージの場合、メッセージフローは短くなります。Route_route2に続行するRoute_route1のValidOrdersブランチを移動するメッセージでは、メッセージフローが長くなります。ルーティングコンテキストのステップを続行します。1 つのメッセージがルーティングコンテキストを完了し、次のメッセージがそのコンテキストに入ると、新しいメッセージフローが Debug ビューに表示され、新しいブレッドクラム ID でタグ付けされます。
この場合、
ID-janemurpheysmbp-home-55846-1471374645179-0-3は、ルーティングコンテキストに入ったmessage2.xmlに対応する 2 番目のメッセージフローを識別します。ブレッドクラム ID は 2 ずつ増加します。注記Exchange ID とメッセージ ID は同一であり、メッセージがルーティングコンテキストを通過する間は変更されません。それらの ID は、メッセージフローのブレッドクラム ID から作成され、1 ずつ増加します。そのため、
message2.xmlの場合、そのExchangeIdおよびMessageIdはID-janemurpheysmbp-home-55846-1471374645179-0-4になります。Message3.xmlがブレークポイント_choice1 in _route_route1 [blueprint.xml]に入る際に、Processor 変数を確認します。表示される値は、これまでルーティングコンテキストを移動したmessage1.xmlおよびmessage2.xmlの累積メトリックです。タイミングメトリックはミリ秒単位です。
-
ルーティングコンテキストを介して各メッセージのステップを続行し、各処理ステップで変数とコンソール出力を調べます。
Message6.xmlがブレークポイントTo_GER in Route2 [blueprint.xml]に入ると、デバッガーはパンくずスレッドのシャットダウンを開始します。 メニューバーで
をクリックし、Camel デバッガーを終了します。コンソールは終了しますが、手動で出力をクリアする必要があります。
注記Debug ビューの Camel Context ノードでスレッドまたはエンドポイントを選択した状態で、
を 2 回クリックします。1 回目のクリックでスレッドまたはエンドポイントを終了し、2 回目のクリックで Camel Context (つまりセッション) を終了します。
メニューバーで
を右クリックし、コンテキストメニューを開き、Close を選択して Debug パースペクティブを閉じます。
CodeReady Studio は、Camel デバッガーを起動したパースペクティブに自動的に戻ります。
Project Explorer で、プロジェクトを右クリックし、Refresh を選択して表示を更新します。
注記すべてのメッセージがルーティングコンテキストを移動する前にセッションを途中で終了した場合は、
ZooOrderApp/src/dataフォルダーにmessage3.xml.camelLockのようなメッセージが表示されることがあります。プロジェクトでデバッガーを再度実行する前に、これを削除する必要があります。これを行うには、.camelLockメッセージをダブルクリックしてコンテキストメニューを開き、Delete を選択します。求められたら、OK をクリックして削除を確認します。ZooOrderApp/target/messages/ディレクトリーをデプロイメントして、メッセージが予想される宛先に配信されていることを確認します。
-
Project Explorer で
すべてのブレークポイントを設定して有効にして、ルーティングコンテキストをそのままにします。
変数の値を変更する リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、ウォッチリストに変数を追加して、メッセージがルーティングコンテキストを通過するときに変数の値がどのように変化するかを簡単に確認します。メッセージ本文の変数の値を変更してから、その変更がルーティングコンテキストを介したメッセージのルートにどのように影響するかを観察します。
-
ZooOrderAppプロジェクトで Camel デバッガーを再度実行するには、blueprint.xmlファイルを右クリックして、Debug As → Local Camel Context (without tests) をクリックします。 Message1が最初のブレークポイント_choice1 in _route1 [blueprint.xml]で停止した場合、変数NodeIdおよびRouteId(Exchangeカテゴリー) ならびにMessageBodyおよびCamelFileName(Messageカテゴリー) を監視リストに追加します。4 つの変数のそれぞれについて:
- Variables ビューで、適切なカテゴリーをデプロイメントして、ターゲット変数を公開します。
変数 (ここでは
ExchangeカテゴリーのNodeId) を右クリックしてコンテキストメニューを開き、Watch を選択します。Expressions タブが開き、監視するように選択した変数がリスト表示されます。
注記ウォッチリストを作成すると、関心のある複数の変数の現在の値をすばやく簡単に確認できます。
-
4 番目のブレークポイント
_Fulfill in _route1 [blueprint.xml]に到達するまで、ルーティングコンテキスト全体でmessage1を確認します。 -
Variables ビューで、
Messageカテゴリーをデプロイメントします。 変数
Destinationを監視リストに追加します。これで、Expressions ビューに次の変数が含まれるはずです。
注記- 変数のリストの下のペインには、選択した変数の値が表示されます。
- Expressions ビューは、明示的に削除するまで、リストに追加したすべての変数を保持します。
-
残りのルーティングコンテキスト全体で
message1を確認し、次にルーティングコンテキスト全体でmessage2を確認します。 -
_choice1 in _route1 [blueprint.xml]でmessage3を停止します。 -
Variables ビューで
Messageカテゴリーをデプロイメントし、MessageBody変数を表示します。 MessageBodyを右クリックしてコンテキストメニューを開き、Change Value を選択します。(これを無効な注文から有効な注文に変更するため)、
quantityの値を 15 から 10 に変更します。この操作により、インメモリーの値のみが変更されます (
message3.xmlファイルは編集されません)。- OK をクリックします。
Expressions ビューに切り替え、
MessageBody変数を選択します。変数リストの下にあるペインには
message3のボディー全体が表示され、注文アイテムの現在の値を簡単に確認することができます。
をクリックし、次のブレークポイントに移動します。
To_Invalidへのブランチをたどる代わりに、message3はTo_FulfillおよびRoute_route2へのブランチをたどります。
Camel デバッガーのフォーカスを絞る リンクのコピーリンクがクリップボードにコピーされました!
ブレークポイントを無効にしてから再度有効にすることで、デバッガーのフォーカスを一時的に絞り込んでから再拡張できます。
-
ルーティングコンテキスト全体で
message4を確認し、各ステップで Debug ビュー、Variables ビュー、および Console の出力をチェックします。 -
_choice1 in _route1 [blueprint.xml]でmessage4を停止します。 Breakpoints ビューに切り替え、
_choice1の下にリスト表示されるブレークポイントの横にある各チェックボックスのチェックを外します。ブレークポイントのチェックボックスをオフにすると、一時的に無効になります。
をクリックして、次のブレークポイントに移動します。
デバッガーは、無効なブレークポイントをバイパスし、
_FulFill in _route1 [blueprint.xml]にジャンプします。
をクリックして、もう一度次のブレークポイントに進みます。
デバッガーは、
_GER in _route2 [blueprint.xml]にジャンプします。-
を繰り返しクリックして、ルーティングコンテキスト全体で message5およびmessage6素早く確認します。 - Breakpoints ビューに切り替え、すべてのブレークポイントの横にあるチェックボックスをオンにして、ブレークポイントを再度有効にします。
メッセージ変数値を変更した場合の影響を確認する リンクのコピーリンクがクリップボードにコピーされました!
デバッガーを停止し、message1 の数量変数の値を変更した結果を確認するには:
ツールバーで、
をクリックし、Camel デバッガーを終了します。
-
コンソールの
ボタンをクリックして出力をクリアします。
- Debug パースペクティブを閉じて、Camel デバッガーを起動したパースペクティブに戻ります。
- Project Explorer で、表示を更新します。
ZooOrderApp/target/messages/ディレクトリーをデプロイメントして、メッセージが想定どおりに配信されたかどうかを確認します。Message1のみがinvalidOrdersに送信されたこと、およびmessage3.xmlがvalidOrders/Germanyフォルダーに表示されることが確認できるはずです。
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
8章ルートを介したメッセージのトレースチュートリアルでは、ルーティングコンテキストを介してメッセージをトレースし、ルーティングコンテキストのパフォーマンスを最適化および微調整できる場所を決定します。
第8章 ルートを介したメッセージのトレース リンクのコピーリンクがクリップボードにコピーされました!
トレースを使用すると、メッセージが 1 つのノードから別のノードにルーティングされるときにメッセージをインターセプトできます。ルーティングコンテキストを介してメッセージをトレースし、ルーティングコンテキストのパフォーマンスを最適化および微調整できる場所を確認できます。このチュートリアルでは、ルートを介してメッセージをトレースする方法を示します。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
-
Fuse Integration パースペクティブで
ZooOrderAppを実行する -
ZooOrderAppでトレースを有効にする -
ZooOrderAppにメッセージをドロップし、すべてのルートノードを通じてメッセージを追跡する
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
6章ルーティングコンテキストに別のルートを追加する チュートリアルを完了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint3.xmlファイルに置き換える。
Fuse Integration パースペクティブの設定 リンクのコピーリンクがクリップボードにコピーされました!
メッセージトレースを容易にするためにワークスペースを設定するには:
ツールバーの右側にある
ボタンをクリックし、リストから Fuse Integration を選択します。
Fuse Integration パースペクティブがデフォルトのレイアウトで開きます。
JMX Navigator タブを Terminal タブの右端にドラッグし、そこにドロップします。
この配置により、Diagram View がルーティングコンテキストのノードをグラフィカルに表示するためのスペースが増え、メッセージがルーティングコンテキストを通過する際にたどるパスを視覚的に追跡しやすくなります。
注記ルーティングコンテキストの
.xmlファイルへのアクセスを容易にするために (特にプロジェクトが複数のコンテキストで構成される場合)、このツールは Project Explorer のCamel Contextsフォルダーにコンテキストをリスト表示します。さらに、ルーティングコンテキスト内のすべてのルートは、コンテキストファイルエントリーのすぐ下にアイコンとして表示されます。キャンバスのルーティングコンテキストに単一のルートを表示するには、Project Explorer でそのアイコンをダブルクリックします。ルーティングコンテキスト内のすべてのルートを表示するには、コンテキストファイルエントリーをダブルクリックします。
メッセージトレースの開始 リンクのコピーリンクがクリップボードにコピーされました!
ZooOrderApp プロジェクトでメッセージのトレースを開始するには、以下を実行します。
-
Project Explorer で
ZooOrderAppプロジェクトをデプロイメントしてsrc/main/resources/OSGI-INF/blueprint/blueprint.xmlを公開します。 -
src/main/resources/OSGI-INF/blueprint/blueprint.xmlを右クリックし、コンテキストメニューを開きます。 Run As → Local Camel Context (without tests) を選択します。
注記Local Camel Context を選択すると、
ZooOrderAppプロジェクトの JUnit テストがまだ作成されていないため、ツールはテストのない実行に戻します。9章JUnit を使用したルートのテスト で、後でそれを行います。JMX Navigator で、
Local Processesをデプロイメントします。-
maven [ID]ノードを右クリックし、Connect を選択します。 ルートの要素をデプロイメントします。
Routesノードを右クリックし、Start Tracing を選択します。ツールは、ルーティングコンテキストのグラフィック表現を Diagram View に表示します。
すべてのメッセージフローパスを明確に表示するには、ノードをドラッグして Diagram View タブにぴったり収まるようにノードを再配置する必要があります。また、Red Hat CodeReady Studio の他のビューとタブのサイズを調整して、Diagram View タブを拡張できるようにする必要がある場合もあります。
実行中の ZooOrderApp プロジェクトにメッセージをドロップする リンクのコピーリンクがクリップボードにコピーされました!
実行中の ZooOrderApp プロジェクトにメッセージをドロップするには:
Project Explorer で、メッセージファイル (
message1.xmlからmessage6.xmlまで) にアクセスできるようにZooOrderApp/src/dataをデプロイメントします。message1.xmlを JMX Navigator の_context1>Endpoints>file>src/data?noop=trueノードにドラッグアンドドロップします。メッセージがルートを通過すると、ツールは各ステップでその通過をトレースして記録します。
メッセージビューの設定 リンクのコピーリンクがクリップボードにコピーされました!
メッセージトレースを表示する前に、Messages View を更新する必要があります。また、すべてのメッセージトレースにわたって列を保持する場合は、Messages View で列を設定する必要があります。
- Messages View を開きます。
-
パネルのメニューバー右上にある
(リフレッシュボタン) をクリックし、表示に message1.xmlのメッセージトレースを反映させます。 パネルのメニューバーの
アイコンをクリックし、Configure Columns を選択して、Configure Columns ウィザードを開きます。
注記ルーティングコンテキストでメッセージに設定したメッセージヘッダー Destination がリストに表示されていることに注意してください。
アイテムを選択または選択解除することにより、Messages View にアイテムを含めたり除外したりできます。選択した個々のアイテムを強調表示してリスト内で上下に移動することにより、Messages View にアイテムが表示される列の順序を並べ替えることができます。
Configure Columns ウィザードで、次の方法で列を選択して順序付けします。
これらの列とその順序は、再度変更するまで Messages View に保持されます。
ツールのすべてのテーブルで、列方向のレイアウトを制御することができます。ドラッグ方式を使用して、表形式を一時的に再配置します。たとえば、列の境界線ルールをドラッグして、その幅を拡大または縮小します。列を非表示にするには、境界線を完全に縮小します。列ヘッダーをドラッグして、テーブル内の列を再配置します。配置を維持するには、代わりに View → Configure Columns メソッドを使用する必要があります。
メッセージトレースのステップスルー リンクのコピーリンクがクリップボードにコピーされました!
メッセージトレースをステップスルーするには:
-
message2.xmlを JMX Navigator の_context1>Endpoints>file>src/data?noop=trueノードにドラッグアンドドロップします。 - Console から Messages View に切り替えます。
Messages View で
(リフレッシュボタン) をクリックし、表示に message2.xmlのメッセージトレースを反映させます。JMX Navigator でメッセージをドロップするたびに、Messages View を更新してメッセージトレースを入力する必要があります。
メッセージトレースのいずれかをクリックし、Properties ビューでその詳細を表示します。
このツールでは、メッセージトレースに関する詳細 (メッセージヘッダーが設定されている場合はそれを含む) が Properties ビューの上半分に、メッセージインスタンスのコンテンツが Properties ビュー下半分に表示されます。したがって、アプリケーションがルート内の任意のステップでヘッダーを設定する場合は、Message Details をチェックして、それらが期待どおりに設定されているかどうかを確認できます。
各メッセージを強調表示して、特定のメッセージがルートをどのように通過したか、およびルートの各ステップで期待どおりに処理されたかどうかを確認することで、メッセージインスタンスをステップスルーできます。
Diagram View を開き、ルートの関連するステップが強調表示されていることを確認します。
ツールは、Diagram View でルートを表示し、処理ステップを終了するパスにタイミングとパフォーマンスのメトリック (ミリ秒単位) をタグ付けします。メトリックの Total exchanges のみが図に表示されます。
表示されたメトリックにマウスポインターを合わせると、メッセージフローに関する追加のメトリックが表示されます。
- ステップがメッセージを処理するのにかかった平均時間
- ステップがメッセージを処理するのにかかった最大時間
- ステップがメッセージを処理するのにかかった最小時間
任意で、トレースが有効であれば、いつでも
ZooOrderApp/src/data/の残りのメッセージを JMX Navigator の_context1>Endpoints>file>src/data?noop=trueノードにドラッグし、ドロップすることができます。ドロップするたびに、
(更新ボタン) をクリックし、Messages View に新しいメッセージのトレースを入力することを忘れないでください。
それが終わったら:
-
JMX Navigator で
_context1を右クリックし、Stop Tracing Context を選択します。 -
Console を開いて、パネル右上の
ボタンをクリックしてコンソールを停止します。
ボタンをクリックしてコンソール出力をクリアします。
-
JMX Navigator で
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
9章JUnit を使用したルートのテストチュートリアルで、プロジェクトの JUnit テストケースを作成し、プロジェクトを Local Camel Context として実行します。
第9章 JUnit を使用したルートのテスト リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、New Camel Test Case ウィザードを使用してルートのテストケースを作成し、ルートをテストする方法を示します。
概要 リンクのコピーリンクがクリップボードにコピーされました!
New Camel Test Case ウィザードは、定型的な JUnit テストケースを生成します。ルートを作成または変更する場合 (たとえば、プロセッサーを追加する場合)、作成または変更したルートに固有の期待値とアサーションを追加するために、生成されたテストケースを作成または変更する必要があります。これにより、テストがルートに対して有効であることが保証されます。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
-
JUnit テストケースを保存する
/src/test/フォルダーを作成する -
ZooOrderAppプロジェクトの JUnit テストケースを生成する - 新しく生成された JUnit テストケースを変更します
-
ZooOrderAppプロジェクトのpom.xmlファイルを変更する -
新しい JUnit テストケースで
ZooOrderAppを実行する - 出力を観察します
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
8章ルートを介したメッセージのトレースチュートリアルを完了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint3.xmlファイルに置き換える。
Project Explorer で、
ZooOrderAppプロジェクトの/src/data/ディレクトリーおよび/target/messages/サブディレクトリーからトレースにより生成されたメッセージを削除します。トレースにより生成されたメッセージは、ID-接頭辞で始まります。例えば、図9.1「トレースで生成されたメッセージ」トレースによって生成された 8 つのメッセージを示します。図9.1 トレースで生成されたメッセージ
トレースで生成されたすべてのメッセージをバッチで選択し、右クリックして Delete を選択します。
src/test フォルダーの作成 リンクのコピーリンクがクリップボードにコピーされました!
ZooOrderApp プロジェクトの JUnit テストケースを作成する前に、ビルドパスに含まれるフォルダーを作成する必要があります。
-
Project Explorer で
ZooOrderAppプロジェクトを右クリックし、New → Folder を選択します。 New Folder ダイアログで、プロジェクトツリーペインで
ZooOrderAppノードをデプロイメントし、srcフォルダーを選択します。ZooOrderApp/srcが Enter or select the parent folder フィールドに表示されるのを確認してください。Folder name に
/test/javaを入力します。Finish をクリックします。
Project Explorer では、新しい
src/test/javaフォルダーがsrc/main/resourcesフォルダーの下に表示されます。新しい
/src/test/javaフォルダーがビルドパスに含まれていることを確認します。-
Project Explorer で
/src/test/javaフォルダーを右クリックし、コンテキストメニューを開きます。 ビルドパスを選択して、メニューオプションを表示します。
Remove from Build Path のメニューオプションで、
/src/test/javaフォルダーが現在ビルドパスに含まれていることが確認できます。
-
Project Explorer で
JUnit テストケースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ZooOrderApp プロジェクトの JUnit テストケースを作成するには、以下を実行します。
-
Project Explorer で
src/test/javaを選択します。 右クリックして、New → Camel Test Case を選択します。
-
Camel JUnit Test Case ウィザードで、
Source folderフィールドにZooOrderApp/src/test/javaが含まれるようにします。適切なフォルダーを見つけるには、
をクリックします。
-
Package フィールドに
tutorial.zooapp.routeと入力します。このパッケージには、新しいテストケースが含まれます。 Camel XML file under test フィールドで、
をクリックし、XML ファイルをフィルターするように設定されたファイルエクスプローラーを開き、ZooOrderAppプロジェクトのblueprint.xmlファイルを選択します。OK をクリックします。Name フィールドのデフォルトは BlueprintXmlTest です。
Next をクリックして、Test Endpoints ページを開きます。
デフォルトでは、すべてのエンドポイントが選択され、テストケースに含まれます。
Finish をクリックします。
注記プロンプトが表示されたら、ビルドパスに JUnit を追加します。
テストのアーティファクトはプロジェクトに追加され、src/test/java の下にある Project Explorer に表示されます。テストケースを実装するクラスは、ツールの Java エディターで開きます。
この生成された JUnit テストケースは ZooOrderApp プロジェクトには不十分なため、正常に実行できません。「BlueprintXmlTest ファイルの変更」および「pom.xml ファイルの変更」に記載されているように、テストケースおよびプロジェクトの pom.xml を変更する必要があります。
BlueprintXmlTest ファイルの変更 リンクのコピーリンクがクリップボードにコピーされました!
BlueprintXmlTest.java ファイルを変更し、以下を実行する必要があります。
- 必要なファイル機能をサポートするいくつかのクラスをインポートします
-
さまざまなソース
.xmlファイルの内容を保持する変数を作成する -
ソース
.xmlファイルの内容を読み取る - 適切な期待値を定義します
次の手順に従って、BlueprintXmlTest.java ファイルを変更します。
Project Explorer で、
ZooOrderAppプロジェクトをデプロイメントしてBlueprintXmlTest.javaファイルを公開します。-
BlueprintXmlTest.javaファイルを開きます。 -
Java エディターで
import org.apache.camel.EndpointInject;の横にあるデプロイメントボタンをクリックしてリストをデプロイメントします。 太字で示されている 2 行を追加します。最初の行を追加するとエラーが発生しますが、次のセクションで指示どおりに
pom.xmlファイルを更新すると解決されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
// Expected message bodiesのすぐ後の行までスクロールします。 protected Object[] expectedBodies={ …… expectedBody2</something>"};の行をprotected String body#;の行に置き換えます。protected String body1; protected String body2; protected String body3; protected String body4; protected String body5; protected String body6;
protected String body1; protected String body2; protected String body3; protected String body4; protected String body5; protected String body6;Copy to Clipboard Copied! Toggle word wrap Toggle overflow public void testCamelRoute() throws Exception {の行まで下方向にスクロールし、その直後に以下のようにbody# = FileUtils.readFileToString(new File("src/data/message#.xml"), "UTF-8");の行を挿入します。これらの行は、次のセクションで指示どおりにpom.xmlファイルを更新するまでエラーを示します。// Valid orders body2 = FileUtils.readFileToString(new File("src/data/message2.xml"), "UTF-8"); body4 = FileUtils.readFileToString(new File("src/data/message4.xml"), "UTF-8"); body5 = FileUtils.readFileToString(new File("src/data/message5.xml"), "UTF-8"); body6 = FileUtils.readFileToString(new File("src/data/message6.xml"), "UTF-8"); // Invalid orders body1 = FileUtils.readFileToString(new File("src/data/message1.xml"), "UTF-8"); body3 = FileUtils.readFileToString(new File("src/data/message3.xml"), "UTF-8");// Valid orders body2 = FileUtils.readFileToString(new File("src/data/message2.xml"), "UTF-8"); body4 = FileUtils.readFileToString(new File("src/data/message4.xml"), "UTF-8"); body5 = FileUtils.readFileToString(new File("src/data/message5.xml"), "UTF-8"); body6 = FileUtils.readFileToString(new File("src/data/message6.xml"), "UTF-8"); // Invalid orders body1 = FileUtils.readFileToString(new File("src/data/message1.xml"), "UTF-8"); body3 = FileUtils.readFileToString(new File("src/data/message3.xml"), "UTF-8");Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
// TODO Ensure expectations make sense for the route(s) we're testingの直後の行まで下方向にスクロールします。 outputEndpoint.expectedBodiesReceivedInAnyOrder(expectedBodies);で始まりinputEndpoint.sendBody(expectedBody); }で終わるコードのブロックを、ここに示す行に置き換えます。// Invalid orders outputEndpoint.expectedBodiesReceived(body1, body3); // Valid orders for USA output3Endpoint.expectedBodiesReceived(body2, body5, body6); // Valid order for Germany output4Endpoint.expectedBodiesReceived(body4);
// Invalid orders outputEndpoint.expectedBodiesReceived(body1, body3); // Valid orders for USA output3Endpoint.expectedBodiesReceived(body2, body5, body6); // Valid order for Germany output4Endpoint.expectedBodiesReceived(body4);Copy to Clipboard Copied! Toggle word wrap Toggle overflow 残りのコードはそのままにしておきます。
- ファイルを保存します。
更新された
BlueprintXmlTest.javaファイルに必要な変更が反映されていることを確認します。次のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
pom.xml ファイルの変更 リンクのコピーリンクがクリップボードにコピーされました!
commons-io プロジェクトの依存関係を ZooOrderApp プロジェクトの pom.xml ファイルに追加する必要があります。
-
Project Explorer で、
targetフォルダーの下のpom.xmlを選択し、ツールの XML エディターで開きます。 -
ページの下部にある
pom.xmlタブをクリックして、ファイルを表示して編集します。 <dependencies>セクションの最後に以下の行を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
JUnit テストの実行 リンクのコピーリンクがクリップボードにコピーされました!
テストを実行するには:
- より多くのワークスペースを解放するには、JBoss パースペクティブに切り替えます。
-
Project Explorer で
ZooOrderAppプロジェクトを右クリックします。 Run As → JUnit Test を選択します。
デフォルトでは、JUnit ビューはサイドバーで開きます。(見やすくするには、Console、Servers、および Properties のタブが表示されている右下のパネルにドラッグします。)
注記プロジェクトで JUnit を初めて実行すると、テストが失敗することがあります。通常、テストを再実行すると、成功します。
テストが正常に実行されると、次のように表示されます。
図9.2 JUnit の実行が成功しました
テストが失敗すると、次のように表示されます。
図9.3 JUnit の実行に失敗しました
注記実行環境が Java SE 8 に設定されていない場合、JUnit は失敗します。JUnit タブの上部にあるメッセージバーに、正しい SDK が見つからないことを示すエラーメッセージが表示されます。
この問題を解決するには、プロジェクトのコンテキストメニューを開き、Run As → Run Configurations → JRE を選択します。Environments] button next to the *Execution environment フィールドをクリックして、Java SE 8 環境を見つけて選択します。
出力を調べて、テストの失敗を解決するためのアクションを実行します。
JUnit パネルに表示されるエラーの詳細を表示するには、パネルのメニューバーの
をクリックし、ビューを最大化します。
JUnit テストケースを再度実行する前に、Project Explorer で ZooOrderApp プロジェクトの
/src/dataフォルダーから JUnit が生成するテストメッセージを削除します (図9.1「トレースで生成されたメッセージ」を参照)。
関連資料 リンクのコピーリンクがクリップボードにコピーされました!
JUnit テストの詳細は、JUnit を参照してください。
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
10章プロジェクトを Red Hat Fuse に公開するチュートリアルでは、Apache Camel プロジェクトを Red Hat Fuse に公開する方法を学びます。
第10章 プロジェクトを Red Hat Fuse に公開する リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、プロジェクトを Red Hat Fuse に公開するプロセスを説明します。Red Hat Fuse Tooling を実行しているのと同じマシンに Red Hat Fuse のインスタンスがインストールされていることを前提としています。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- Red Hat Fuse サーバーを定義します
- 公開オプションを設定します
-
Red Hat Fuse サーバーを起動し、
ZooOrderAppプロジェクトをパブリッシュする - Red Hat Fuse サーバーに接続します
-
ZooOrderAppプロジェクトのバンドルが正常にビルドされ、公開されたかどうかを確認する -
ZooOrderAppプロジェクトのアンインストール
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始する前に、次のものが必要です。
- Red Hat Fuse インスタンスへのアクセス
- コンピューターにインストールされている Java 8
次のいずれかから生じる ZooOrderApp プロジェクト:
9章JUnit を使用したルートのテスト チュートリアルを完了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint3.xmlファイルに置き換える。
Red Hat Fuse Server の定義 リンクのコピーリンクがクリップボードにコピーされました!
サーバーを定義するには:
- Fuse Integration パースペクティブを開きます。
- 右下のパネルの Servers タブをクリックして、Servers ビューを開きます。
以下をクリックします。利用可能なサーバーはありません。このリンクをクリックして、新しいサーバーを作成...リンクをクリックすると、Define a New Server ページが表示されます。
注記すでにサーバーが定義されているときに新しいサーバーを定義するには、Servers ビュー内を右クリックして、New → Server を選択します。
Red Hat JBoss Middleware ノードをデプロイメントして、使用可能なサーバーオプションを公開します。
- Red Hat Fuse サーバーを選択します。
Server's host name ( localhost) と Server name (Fuse n.n Runtime Server) のデフォルトを受け入れ、Next をクリックして Runtime ページを開きます。
注記Fuse をまだインストールしていない場合は、Download and install runtime リンクを使用して今すぐダウンロードできます。
すでにサーバーを定義している場合、ツールはこのページをスキップし、代わりに設定の詳細ページを表示します。
- Name のデフォルトを受け入れます。
- Home Directory フィールドの横にある Browse をクリックして、インストールに移動して選択します。
Execution Environment の横にあるドロップダウンメニューからランタイム JRE を選択します。
JavaSE-1.8(推奨) を選択します。必要に応じて、Environments ボタンをクリックしてリストから選択します。
注記Fuse サーバーには Java 8 が必要です (推奨)。Execution Environment で選択するには、事前にインストールしておく必要があります。
- Alternate JRE オプションはそのままにしておきます。
Next をクリックして Fuse Server のランタイム定義を保存し、Fuse server configuration details ページを開きます。
SSH Port のデフォルト (8101) を受け入れます。
ランタイムは SSH ポートを使用して、サーバーの Karaf シェルに接続します。このデフォルトが正しくない場合は、Red Hat Fuse
installDir/etc/org.apache.karaf.shell.cfgファイルを確認して正しいポート番号を検出できます。User Name に、サーバーへのログインに使用する名前を入力します。
これは、Red Hat Fuse installDir`/etc/users.properties` ファイルに保存されているユーザー名です。
注記/etc/users.propertiesファイルのデフォルトのユーザーがアクティベートされている場合 (アンコメント)、ツールは User Name および Password にデフォルトユーザーの名前およびパスワードを自動入力します。設定されていない場合は、
user=password,roleのフォーマットを使用してそのファイルにユーザーを追加するか (例:joe=secret,Administrator)、karafjaasコマンドセットを使用して設定できます。-
jaas:realms: レルムをリスト表示します。 -
jaas:manage --index 1: 最初の (サーバー) レルムを編集します。 -
jaas:useradd <username> <password>— ユーザーと関連するパスワードを追加します。 -
jaas:roleadd <username> Administrator— 新規ユーザーのロールを指定します。 jaas:update— 新しいユーザー情報を使用してレルムを更新します。サーバーに対して jaas レルムがすでに選択されている場合は、コマンド
JBossFuse:karaf@root>jaas:usersを実行してユーザー名を検出できます。
-
Password には、サーバーにログインする際に User name に必要なパスワードを入力します。
これは、Red Hat Fuse の
installDir/etc/users.propertiesファイルまたは karafjaasコマンドによって設定されたパスワードです。Finish をクリックします。
Runtime Server [stopped, Synchronized] が Servers ビューに表示されます。
Servers ビューで、ランタイムサーバーをデプロイメントします。
JMX[Disconnected] は、Runtime Server [stopped, Synchronized] エントリーの下にノードとして表示されます。
公開オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
パブリッシュオプションを使用して、ZooOrderApp プロジェクトを稼働中のサーバーにパブリッシュする方法およびタイミングを設定できます。
- プロジェクトに加えられた変更を保存するとすぐに自動的に
- プロジェクトを変更して保存した後、設定された間隔で自動的に
- 手動で、公開操作を選択した場合
このチュートリアルでは、ZooOrderApp プロジェクトへの変更を保存したら直ちにパブリッシュするように設定します。改善点を報告する場合は、以下のように行います。
- Servers ビューで、Runtime Server [stopped, Synchronized] エントリーをダブルクリックして、その概要を表示します。
サーバーの Overview ページで、Publishing セクションをデプロイメントしてオプションを表示します。
Automatically publish when resources change オプションが有効になっていることを確認します。
必要に応じて、Publishing interval の値を変更して、変更が加えられたときにプロジェクトの公開を高速化または遅延させます。
-
Servers ビューで、
をクリックします。
サーバーが起動するまで数秒待ちます。その場合:
Terminal ビューにスプラッシュ画面が表示されます。
Servers ビューには以下が表示されます。
JMX Navigator は、n.n Runtime Server[Disconnected と表示します:
Servers ビューで、n.n Runtime Server [Started] を右クリックし、Add and Remove を選択して、Add and Remove ページを開きます。
If server is started, publish changes immediately オプションがオンになっていることを確認します。
ZooOrderAppを選択し、Add をクリックして Fuse サーバーに割り当てます。Finish をクリックします。
Servers ビューには、次のように表示されます。
Runtime Server [Started, Synchronized]
注記サーバーの場合、synchronized とは、サーバーで公開されているすべてのモジュールがローカルの対応するモジュールと同一であることを意味します。
ZooOrderApp [Started, Synchronized]
注記モジュールの場合、synchronized とは、公開されたモジュールがローカルの対応するモジュールと同一であることを意味します。自動公開が有効になっているため、ZooOrderApp プロジェクトに加えられた変更は、(Publishing interval の値に応じて) 数秒で公開されます。
- JMX[Disconnected]
ランタイムサーバーへの接続 リンクのコピーリンクがクリップボードにコピーされました!
ランタイムサーバーへの接続後、ZooOrderApp プロジェクトのパブリッシュされた要素が表示され、それらと対話できます。
- Servers ビューで、JMX[Disconnected] をダブルクリックしてランタイムサーバーに接続します。
JMX Navigator で
Camelフォルダーをデプロイメントし、ZooOrderAppの要素を表示します。Bundles ノードをクリックして、ランタイムサーバーにインストールされているバンドルのリストを Properties ビューに入力します。
Search フィールドに ZooOrderApp と入力します。対応するバンドルが表示されます。
注記または、Terminal ビューで
osgi:listコマンドを実行し、サーバーランタイムにインストールされているバンドルに関する生成されたリストを表示することもできます。ツールは、osgi:listコマンドが表示する OSGi バンドルに異なる命名スキームを使用します。この場合、コマンドはCamel Blueprint Quickstartを返します。これはインストールされたバンドルのリストの最後に表示されるプロジェクトの
pom.xmlファイルの<build>セクションで、バンドルのシンボリック名およびそのバンドル名 (OSGi) がmaven-bundle-pluginエントリーにリスト表示されます。
ZooOrderApp プロジェクトのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
公開されたリソースをアンインストールするために、JMX 接続を切断したり、サーバーを停止したりする必要はありません。
ランタイムサーバーから ZooOrderApp リソースを削除するには、以下を実行します。
- Servers ビューで、n.n Runtime Server を右クリックしてコンテキストメニューを開きます。
Add and Remove を選択します:
-
Configured 列で
ZooOrderAppを選択し、Remove をクリックしてZooOrderAppリソースを Available 列に移動します。 - Finish をクリックします。
Servers ビューで、JMX[Connected] を右クリックし、Refresh をクリックします。
JMX[Connected] 下の
Camelツリーが消えます。注記JMX Navigator でも、Server Connections > n.n Runtime Server[Connected] の
Camelツリーが消失します。- Properties ビューに Bundles ページが表示されたら、リストの最後までスクロールして、ZooOrderApp のバンドルがリストされていないことを確認します。