American Flights のインターフェースと実装をデバッグします。
コンポーネントを追加する
デバッグを容易にするには、Set Variable コンポーネントと Logger コンポーネントを American Flights 実装に追加します。
-
実装ファイル (
implementation.xml) を開きます。 -
[Query Flights (フライトを照会)] という名前の Database Select 操作 (
<db:select/>) の後に Set Variable コンポーネントを追加します。設定 XML で次の
<set-variable/> 設定を指定します。<set-variable value="#[payload]" doc:name="Set variable Payload" variableName="databasePayload" /> -
Transform コンポーネント (
<ee:transform>) の後に、次の設定を含む Logger コンポーネントを追加します。<logger doc:name="Log Payload" message="#[ %dw 2.0 output application/json --- payload]" />完全な実装 XML 例を表示するには、クリックしてください。
<flow name="getFlights"> <logger doc:name="Logger" doc:id="ahcnzm" /> <db:select doc:name="Query Flights" doc:id="pvuqsc" config-ref="Database_Config" > <db:sql> <![CDATA[Select * FROM american]]> </db:sql> </db:select> <set-variable value="#[payload]" doc:name="Set variable Payload" variableName="databasePayload" doc:id="vtptsr" /> (1) <ee:transform doc:name="Transform Message" doc:id="uniqueId" > <ee:message > <ee:set-payload > <![CDATA[ %dw 2.0 output application/json --- payload map ( payload01 , indexOfPayload01 ) -> { ID: payload01.ID, code: (payload01.code1 default "") ++ (payload01.code2 default ""), price: payload01.price default 0, departureDate: payload01.takeOffDate as String default "", origin: payload01.fromAirport default "", destination: payload01.toAirport default "", emptySeats: payload01.seatsAvailable default 0, plane: { "type": payload01.planeType default "", totalSeats: payload01.totalSeats default 0 } } ]]> </ee:set-payload> </ee:message> </ee:transform> <logger doc:name="Log Payload" message="#[ %dw 2.0 output application/json --- payload]" /> (2) </flow>1 Set Variable コンポーネント 2 Logger コンポーネント -
ブレークポイントを追加するに進みます。
アプリケーションの実行を一時停止するブレークポイントのセットアップ方法を確認します。
ブレークポイントを追加する
American Flights プロジェクトにブレークポイントを追加する手順は、次のとおりです。
-
American Flights プロジェクトのインターフェース (
interface.xml) を開きます。 -
アクティビティバーで [Run and Debug (実行およびデバッグ)] アイコンを選択します。
-
インターフェースファイル (
interface.xml) で、<flow-ref/> コンポーネントが含まれる行にブレークポイントを追加します。
または、F9 を使用して行にブレークポイントを追加します。
-
American Flights プロジェクトの実装ファイル (
implementation.xml) を開き、ブレークポイントを <db:select/> および <set-variable/> コンポーネントに追加します。 -
すべてのブレークポイントが [Breakpoints (ブレークポイント)] パネルにリストされるようになりました。
-
デバッグセッションを開始するに進みます。
デバッグセッションを実行し、アプリケーションの実行中にさまざまなポイントでメッセージと変数を調べます。
デバッグセッションを開始する
-
[Run and Debug (実行およびデバッグ)] メニューから、[Debug Mule Application (Mule アプリケーションをデバッグ)] をクリックします。
IDE でアプリケーションがパッケージ化され、新しいターミナルが開きます。このターミナルでアプリケーションを埋め込み Mule Runtime Engine にデプロイします。
American Flights アプリケーションをテストする
デバッグセッションが開始されたら、次の手順を実行します。
-
IDE から、コンソールのターミナルウィンドウを開きます。
-
デスクトップ IDE で、[View (表示)] > [Terminal (ターミナル)] を選択する。
-
クラウド IDE で、
(メニュー) アイコンをクリックし、[Terminal (ターミナル)] > [New Terminal (新規ターミナル)] を選択する。 -
いずれかの IDE で、Ctrl キーを押してからバッククォートキー (`) を押す。
-
-
ターミナルで
curl コマンドを使用して、実装ではなくインターフェース (interface.xml) のリスナーに対して GET 要求を実行します。curl http://localhost:8081/api/flightsインターフェースのリスナーの URI にある
//api/flights に注意してください。この手順の詳細は、「フローをトリガーする」を参照してください。 -
American Flights プロジェクトの最初のブレークポイントでアプリケーションの実行が停止することを確認します。
ブレークポイントはインターフェースファイル (
interface.xml) に配置されています。 -
デバッグツールバーで [Step Over (ステップオーバー)] ボタンをクリックして、
implementation.xml の <db:select/> 要素にある次のブレークポイントまで実行を継続します。 -
[Run and Debug (実行およびデバッグ)] サイドバーの [Variables (変数)] パネルにブレークポイントでの Mule イベントに関する情報が提供されていることを確認します。
-
デバッグツールバーで [Step Over (ステップオーバー)] ボタンをクリックして、
<set-variable/> 要素にある次のブレークポイントまで実行を継続します。 -
[Variables (変数)] パネルで [Mule Message (Mule メッセージ)] > [Payload (ペイロード)] に移動して、データベース応答がフライトデータの配列になっていることを確認します。
-
監視式を追加するに進みます。
監視式を追加する
-
[Run and Debug (実行およびデバッグ)] サイドバーから [Watch (監視)] パネルを開きます。
-
パネルの [+] アイコンをクリックし、式
payload.^mediaType を追加します。
-
実行が Transform Message コンポーネント (
<ee:transform/>) に移動するまで [Step Over (ステップオーバー)] ボタンをクリックします。 -
ペイロードが
application/java であることに注意してください。
パネル"] -
Logger コンポーネント (
<logger>) に達するまで引き続き [Step Over (ステップオーバー)] ボタンをクリックします。 -
ペイロードが
application/json に変換されていることに注意してください。
-
デバッグツールバーの [Continue (続行)] ボタンをクリックし、アプリケーションがデータベースから REST クライアントまたはブラウザーに応答を返すことを確認します。
完全な実装 XML 例を表示するには、クリックしてください。
[ { "ID": 1, "code": "rree0001", "price": 541, "departureDate": "2016-01-20T00:00:00", "origin": "MUA", "destination": "LAX", "emptySeats": 0, "plane": { "type": "Boeing 787", "totalSeats": 200 } }, { "ID": 2, "code": "eefd0123", "price": 300, "departureDate": "2016-01-25T00:00:00", "origin": "MUA", "destination": "CLE", "emptySeats": 7, "plane": { "type": "Boeing 747", "totalSeats": 345 } }, { "ID": 3, "code": "ffee0192", "price": 300, "departureDate": "2016-01-20T00:00:00", "origin": "MUA", "destination": "LAX", "emptySeats": 0, "plane": { "type": "Boeing 777", "totalSeats": 300 } }, { "ID": 4, "code": "rree1000", "price": 200, "departureDate": "2016-01-20T00:00:00", "origin": "MUA", "destination": "CLE", "emptySeats": 5, "plane": { "type": "Boeing 737", "totalSeats": 150 } }, { "ID": 5, "code": "rree1093", "price": 142, "departureDate": "2016-02-11T00:00:00", "origin": "MUA", "destination": "SFO", "emptySeats": 1, "plane": { "type": "Boeing 737", "totalSeats": 150 } }, { "ID": 6, "code": "ffee1112", "price": 954, "departureDate": "2016-01-20T00:00:00", "origin": "MUA", "destination": "CLE", "emptySeats": 100, "plane": { "type": "Boeing 787", "totalSeats": 200 } }, { "ID": 7, "code": "eefd1994", "price": 676, "departureDate": "2016-01-01T00:00:00", "origin": "MUA", "destination": "SFO", "emptySeats": 0, "plane": { "type": "Boeing 777", "totalSeats": 300 } }, { "ID": 8, "code": "ffee2000", "price": 300, "departureDate": "2016-02-20T00:00:00", "origin": "MUA", "destination": "SFO", "emptySeats": 30, "plane": { "type": "Boeing 737", "totalSeats": 150 } }, { "ID": 9, "code": "eefd3000", "price": 900, "departureDate": "2016-02-01T00:00:00", "origin": "MUA", "destination": "SFO", "emptySeats": 0, "plane": { "type": "Boeing 737", "totalSeats": 150 } }, { "ID": 10, "code": "eefd4511", "price": 900, "departureDate": "2016-01-15T00:00:00", "origin": "MUA", "destination": "LAX", "emptySeats": 100, "plane": { "type": "Boeing 777", "totalSeats": 300 } }, { "ID": 11, "code": "rree4567", "price": 456, "departureDate": "2016-01-20T00:00:00", "origin": "MUA", "destination": "SFO", "emptySeats": 100, "plane": { "type": "Boeing 737", "totalSeats": 150 } } ] -
デバッグセッションを停止するに進みます。