15.2. リモートで実行中のルーティングコンテキストのデバッグ
リモートホストにデプロイされた Fuse サーバーは、CodeReady Studio の Servers ビューに登録できません。そのため、CodeReady Studio 内からリモート Fuse サーバーを起動、自動的に再デプロイ、または停止することはできません。代わりに、CodeReady Studio 外のデバッグモードで Fuse を起動する必要があります。
前提条件
次のいずれかの方法で Fuse ランタイムにアクセスします。
-
ローカルマシンに Fuse サーバーをインストールし、
Fuse_HOME/etc/users.properties
ファイルを編集して管理
ユーザーをアクティブにします。詳細は、「サーバーの追加」 を参照してください。 -
リモートマシンにインストールされている Fuse サーバーにアクセスできます。
admin
ユーザーの認証情報を含む接続の詳細を知っている必要があります。
-
ローカルマシンに Fuse サーバーをインストールし、
新しい Fuse Integration プロジェクトを作成します。「プロジェクト名とワークスペースの指定」 を参照してください。Fuse Integration プロジェクトで以下を行います。
- Fuse サーバーランタイムのバージョンに一致する Camel バージョンを選択します。
空の Blueprint DSL プロジェクトを作成するか、Blueprint DSL で Fuse の事前定義済みテンプレートの 1 つを使用します。
注記必須ではありませんが、プロジェクトのルーティングコンテキストを
Local Camel Context
として正常に実行できることを確認することが推奨されます。詳細は、「ローカル Camel コンテキストとしてルートを実行」 を参照してください。注記「リモートデバッグのセットアップと起動」 の例は、Fuse
Content Based Router の事前定義済みテンプレートおよび Red Hat Fuse 6.3.0 ランタイムに基づいています。
In Red Hat CodeReady Studio:
- Fuse サーバーを Servers ビューに追加します。詳細は、「サーバーの追加」 を参照してください。
- Fuse サーバーを起動します。詳細は、「サーバーの起動」 を参照してください。
- プロジェクトを Fuse Runtime サーバーに公開します。詳細は、「リソース変更時に Fuse プロジェクトを自動公開」 を参照してください。
- プロジェクトのバンドルがデプロイされ、アクティブであることを確認します。詳細は、「プロジェクトのサーバーへの公開を確認」 を参照してください。
- Fuse Runtime サーバーを停止します。詳細は、「サーバーの停止」 を参照してください。
リモートデバッグのセットアップと起動
Fuse にデプロイされたプロジェクトが停止し、サーバーが停止したら、以下のようにリモートデバッグを設定して起動する必要があります。
Red Hat CodeReady Studio 外のデバッグモードで Fuse を起動します。
リモートホストにデプロイされた Fuse サーバーは、CodeReady Studio の Servers ビューに登録できないため、CodeReady Studio 外のデバッグモードで Fuse を起動する必要があります。
- CodeReady Studio で、ルートエディターで開かれているプロジェクトのルーティングコンテキストのノードにブレークポイントを設定します。
- リモートの Camel コンテキストデバッグ設定を作成し、実行します。
- JMX Navigator ビューで Fuse ランタイムに接続します。
- Fuse ランタイム内で稼働している Camel ルートの入力ノードの JMX Navigator ビューでテストメッセージをドロップします。
- ルートのデバッグに Camel デバッガーのツールのいずれかを使用します。
手順
リモートデバッグを設定して起動するには、以下を実行します。
Red Hat CodeReady Studio の外部でターミナルを開き、以下を入力します。
$ [FUSE_HOME]/bin/fuse debug
- Fuse スプラッシュ画面が表示されるのを待ってから、CodeReady Studio の Fuse Integration パースペクティブに戻ります。
- ツールのルートエディターで、Design タブでプロジェクトのルーティングコンテキストを開き、対象のノードにブレークポイントを設定します。詳細は、14章ブレークポイントの設定 を参照してください。
Project Explorer ビューで、プロジェクトのルートを右クリックし、Debug As
Debug Configurations を選択して Debug Configurations ウィザードを開きます。 設定タイプペインで、Remote Camel Context または Remote Camel Context and Java のいずれかを選択し、 をクリックします。
Remote Camel Context および Remote Camel Context および Java オプションの両方で、Camel および JMX タブで設定の詳細を指定する必要があります。
Remote Camel Context および Java オプションのみの場合は、Connect タブで設定の詳細も指定する必要があります。
注記プロジェクトに標準の Eclipse Java デバッグツールを使用してデバッグする Java コードが含まれない限り、Remote Camel Context オプションを選択します。
- 名前 フィールド に は、新しい起動設定の名前を入力します。
Camel タブで Browse ボタンをクリックし、Open Resources ダイアログでプロジェクトのルーティングコンテキストの
.xml
ファイルを見つけます。注記Matching items ペインでファイルを選択すると、ツールはペインの下部にあるプロジェクトルートに対するファイルの場所を表示します。
Matching items ペインで、リストからプロジェクトのルーティングコンテキストファイルを選択し、OK をクリックします。
このツールは、ファイルのパスを Select Camel Context file フィールドに挿入します。
JMX タブをクリックします。
以下のように JMX 接続の詳細を編集します。
JMX Uri EOF-EOFchange
:9011/jmxrmi
to:1099/karaf-root
Fuse サーバーがリモートホストで実行している場合は、
localhost
をリモートホストの DNS 名または IP アドレスに置き換えます。-
JMX User psyc-psycenter
admin
. JMX Password psyc-psycenter
admin
.重要JMX User および JMX Password に示される値は、
Fuse_HOME/etc/users.properties
ファイルに保存される Fuse 管理 ユーザーのデフォルトです。設定が異なる場合は、それに固有の値を入力します。リモート Camel コンテキスト デバッグ起動設定を作成する場合は、完了します。[debugCfgGo] に進みます。
Connect タブをクリックします。
Port の値を
8000
から5005
に変更します。その他のプロパティーはそのままにしておきます。- Apply をクリックしてから Debug をクリックします。
- JMX Navigator ビューで、Fuse [xxx] [Disconnected] をダブルクリックして接続し、そのツリーを展開します。
Project Explorer ビューで、テストメッセージを
src/test/resources/data
からドラッグし、JMX Navigator ビューのcbr-example-context/Endpoints/file/work/cbr/input
フォルダーにドロップします。ルーティングコンテキストで設定された最初のブレークポイントにメッセージが到達すると、ツールは Debug パースペクティブに切り替えるように要求します。
Yes をクリックします。
この時点で、任意の Camel デバッガーのツールを使用して、ルーティングコンテキストをデバッグできます。
注記リモートデバッグセッションでは、Console ビューにログ出力は表示されません。
注記1 つのメッセージがルーティングコンテキストの最後に到達すると、デバッガーは一時停止されます。デバッグを続行するには、Fuse Integration パースペクティブに戻し、JMX Navigator ビューの入力ノードに別のメッセージをドロップします。そうするたびに、ツールは Debug パースペクティブへの切り替えを確認するように要求します。