ナビゲーションをスキップ

AquaLogic Service Bus Console の使い方

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

プロキシ サービス : アクション

プロキシ サービスは、AquaLogic Service Bus サーバ上にローカルに実装されるサービスの定義です。アクションを使用すると、パイプラインやプロキシ サービスのルート ノードとブランチ ノードのメッセージ フローを設計およびコンフィグレーションできます。

ここでは、パイプラインのステージ、ルート ノード、ブランチ ノードへのアクションの追加、および AquaLogic Service Bus で使用できる各アクションについて説明します。内容は以下のとおりです。

 


アクションの追加

[ステージ コンフィグレーションの編集] ページでは、アクションを追加できます。アクションとは、プロキシ サービス内のメッセージ フローでのメッセージの処理を定義するパイプライン ステージおよびルート ノードとブランチ ノードの要素です。メッセージ フローの詳細については、「メッセージ フローの概要」を参照してください。

注意 : アクションを追加する前に、パイプライン ペア ノードを作成し、ステージを追加する必要があります。詳細については、「パイプライン ペア ノードの追加」および「ステージの追加」を参照してください。

アクションを追加するには

  1. まだセッションを作成していない場合は、左側のナビゲーション ペインで、[Change Center] の下にある [作成] をクリックして、現在のコンフィグレーションに変更を加えるための新しいセッションを作成します。詳細については、「Change Center の使用」を参照してください。
  2. [プロキシ サービスの概要] ページで、対象プロキシ サービスの [メッセージ フローの編集] アイコンをクリックします。または、[プロジェクト エクスプローラ] モジュールを使用している場合は、選択したプロジェクトまたはフォルダのリソースのリストで該当するプロキシ サービスの [メッセージ フローの編集] アイコンをクリックします。
  3. [メッセージ フローの編集] ページが表示されます。

  4. 既存のパイプラインを展開して、要求パイプラインと応答パイプラインから成るパイプラインを表示します。
  5. アクションを追加する既存のステージのステージ アイコンをクリックし、[編集ステージ] をクリックします。[ステージ コンフィグレーションの編集] ページが表示されます。
  6. [アクションの追加] をクリックし、アクションの種類を選択して、アクションを追加します。
  7. 次の表は、AquaLogic Service Bus メッセージ フローについてコンフィグレーションできるアクションと、そのアクションについて説明する (コンフィグレーション方法も含む) トピックへのリンクを示しています。

    表 16-1 AquaLogic Service Bus のアクション

    アクション

    説明

    割り当て

    コンテキスト変数に XQuery 式の結果を割り当てる。

    削除

    コンテキスト変数や、XPath 式で指定されたすべてのノードを削除する。

    For Each

    値のシーケンスを反復処理してアクションのブロックを実行する。

    If Then

    XQuery 式のブール結果に基づき、1 つまたは複数のアクションを条件付きで実行する。

    挿入

    XPath 式で選択したノードを基準に、指定した位置に XQuery 式の結果を挿入する。

    ログ

    ログに記録するメッセージを作成する。

    パブリッシュ

    メッセージのターゲット サービスを指定し、メッセージのパッケージおよびサービスへの送信方法をコンフィグレーションする。

    パブリッシュ テーブル

    メッセージのターゲット サービスを指定し、メッセージのパッケージおよびサービスへの送信方法をコンフィグレーションする。パブリッシュ テーブルは、切り替え式の条件ロジックで一連のルーティング オプションのラッピングに使用する。

    エラーを発生させる

    指定したエラー コードと説明を使用して例外を発生させる。

    名前変更

    コンテンツを変更せずに、XPath 式で選択した要素の名前を変更する。

    置換

    XPath 式で指定されたノードまたはノードのコンテンツを置換する。

    返信

    呼び出し元に即時に返信されるように指定する。成功時または失敗時の返信を選択できる。

    レポート

    プロキシ サービスのメッセージ レポートを有効にする。

    サービス コールアウト

    AquaLogic Service Bus に登録済みのプロキシ サービスまたはビジネス サービスの同期 (ブロック) コールアウトをコンフィグレーションする。

    スキップ

    実行時に現在のステージの実行がスキップされて、処理がメッセージ フローの次のステージに進むように指定する。

    転送ヘッダ

    メッセージの転送ヘッダの値を設定する。

    検証

    XML スキーマ要素または WSDL リソースに対して、XPath 式で選択した要素を検証する。


     

ステージ コンフィグレーションの編集

アクションをコンフィグレーションしたら、[ステージ コンフィグレーションの編集] ページに戻って、次の手順に示すように、アクション、ブランチ ノード、エラー ハンドラの追加やアクションの更新などを行うことができます。

  1. 別のアクションを追加するには、前のアクションのアイコンをクリックして [アクションの追加] をポイントし、アクションを選択します。必要に応じてアクションの追加を続行します。追加するアクションの種類の詳細については、「アクションの追加」の該当する手順を参照してください。メッセージ フローのアクションは任意の組み合わせで連鎖できます。
  2. アクションを追加したら、次の表に示すように、メッセージ フローのアクションの移動や、変更の削除または破棄などを行うことによりステージをコンフィグレーションできます。
  3. 表 16-2 ステージ コンフィグレーションの編集時に使用するタスク

    作業内容

    手順

    アクションの削除

    該当するアイコンをクリックし、[このアクションを削除] をクリックする。アクションが削除される。

    アクションを下に移動する

    該当するアイコンをクリックし、[アクションを下に移動] をクリックする。アクションがこのステージに含まれる次のアクションの下に移動する。

    注意 : このオプションは、ステージに複数のアクションが含まれる場合にのみ表示される。

    アクションを上に移動する

    該当するアイコンをクリックし、[アクションを上に移動] をクリックする。アクションがこのステージに含まれる前のアクションの上に移動する。

    注意 : このオプションは、ステージに複数のアクションが含まれる場合にのみ表示される。

    アクションの切り取り

    該当するアイコンをクリックし、[切り取り] をクリックする。

    アクションのコピー

    該当するアイコンをクリックし、[コピー] をクリックする。

    このステージ内から切り取りまたはコピーしたアクションの貼り付け

    該当するアイコンをクリックし、[アクションの貼り付け] をクリックする。

    注意 : 別のステージにアクションを貼り付けることはできない。アクションの貼り付けは同一ステージ内でのみ可能。

    更新した内容を保存して [メッセージ フローの編集] ページに戻る

    [保存] をクリックする。

    変更を取り消して [メッセージ フローの編集] ページに戻る

    [取り消し] をクリックする。

    [ステージ コンフィグレーションの編集] ページを開いたまま保存前の変更をクリアする

    [クリア] をクリックする。

    変更を取り消してメッセージ フローを終了する

    [すべて取り消し] をクリックする。メッセージ フローを終了することを確認すると、最初にプロキシ サービスの [メッセージ フローの編集] アイコンをクリックしたページ ([プロキシ サービスの概要] ページか、プロジェクト ビューまたはフォルダ ビュー ページ) が表示される。


     
  4. [ステージ コンフィグレーションの編集] ページでコンフィグレーションを行ったら、[メッセージ フローの編集] ページに戻って、次の表に示すタスクを完了できます。
  5. 表 16-3 メッセージ フローの編集時に使用するタスク

    作業内容

    手順

    既存のパイプラインへのステージの追加

    適切な要求パイプラインまたは応答パイプラインをクリックし、[ステージの追加] をクリックする。詳細については、「ステージの追加」を参照。

    パイプライン ペア ノードの追加

    プロキシ サービス アイコンをクリックし、[パイプライン ペアの追加] をクリックする。または、既存のパイプライン ペア ノード アイコンをクリックし、[追加パイプライン ペアの追加] をクリックする。詳細については、「パイプライン ペア ノードの追加」を参照。

    ルート ノードの追加

    パイプライン ペア ノード アイコンをクリックし、[追加ルート ノードの追加] をクリックする。詳細については、「ルート ノードの追加」を参照。

    別のプロキシ サービスのメッセージ フローから切り取りまたはコピーしたルート ノードの貼り付け

    作成したパイプライン ペアのパイプライン ペア ノード アイコンをクリックし、[ルート ノードの貼り付け] をクリックする。

    注意 : ルート ノードをあらかじめ切り取りまたはコピーしていないと、このオプションは使用できない。

    条件付きブランチ ノードの追加

    パイプライン ペア ノード アイコンをクリックし、[追加条件付きブランチ ノードの追加] をクリックする。詳細については、「条件付きブランチ ノードの追加」を参照。

    このプロキシ サービスへのエラー処理の追加

    プロキシ サービス アイコンをクリックし、[サービス エラー ハンドラの追加] をクリックする。詳細については、「プロキシ サービスへのエラー処理の追加」を参照。

    ステージ名と説明を編集する

    該当するステージ アイコンをクリックし、[編集名前と説明] をクリックする。

    ステージの削除

    該当するステージ アイコンをクリックし、[削除] をクリックする。

    更新した内容を保存して [プロキシ サービスの概要] ページに戻る

    [保存] をクリックする。

    変更を取り消して [プロキシ サービスの概要] ページに戻る

    [取り消し] をクリックする。

    [メッセージ フローの編集] ページを開いたまま変更をクリアする

    [クリア] をクリックする。

    変更を取り消してメッセージ フローを終了する


    [すべて取り消し] をクリックする。メッセージ フローを終了することを確認すると、最初にプロキシ サービスの [メッセージ フローの編集] アイコンをクリックしたページ ([プロキシ サービスの概要] ページか、プロジェクト ビューまたはフォルダ ビュー ページ) が表示される。


     

注意 : [保存] をクリックすると、メッセージ フローは現在のセッション内で更新されます。コンフィグレーションに対する変更が完了したら、左側のナビゲーション ペインで、[Change Center] の下にある [アクティブ化] をクリックします。セッションが終了し、コンフィグレーションが保存されます。または、セッション中の任意の時点で [破棄] をクリックして、現在のセッションでそれまでに行った変更内容を削除します。

注意 : アクションの詳細については、については、BEA AquaLogic Service Bus の『ユーザーズ ガイド』にある「AquaLogic Service Bus でのメッセージ フローの作成」で、アクションの使用例、設計パターン、ベスト プラクティスを参照してください。

更新アクション

更新アクションには、削除、名前変更、挿入、置換などのアクションがあります。これらのアクションは、次のように評価され、実行されます。

関連トピック

プロキシ サービスの概要

プロキシ サービスの追加

プロキシ サービスの表示と検索

プロキシ サービスの表示と変更

メッセージ フローの表示と変更

 


割り当て

XQuery 式の結果をコンテキスト変数に割り当てるには、割り当てアクションを使用します。

割り当てアクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[割り当てる] を選択します。
  2. 割り当てアクションが表示されます。このアクションには以下の機能があります。

  3. [] をクリックします。[XQuery 式エディタ] ページが表示されます。XQuery 式を使用して、名前付き変数に割り当てるデータを作成します。詳細については、「インライン XQuery 式エディタの使用」を参照してください。
  4. 式を編集したら、[変数] フィールドにコンテキスト変数を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。特に、「inbound 変数と outbound 変数」および「送信するメッセージの作成」を参照してください。
  5. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

関連トピック

転送ヘッダ

メッセージ コンテキスト

 


削除

削除アクションは、コンテキスト変数または XPath 式で指定したすべてのノードを削除するときに使用します。削除アクションは一連の更新アクションの 1 つです。詳細については、「更新アクション」を参照してください。

削除アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[削除する] を選択します。
  2. 削除アクションが表示されます。このアクションには以下の機能があります。

  3. コンテキスト変数を削除するには、このオプションに関連付けられたラジオ ボタンを選択し、[変数] フィールドにコンテキスト変数の名前を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。
  4. また、XPath 式で選択されたすべてのノードを削除するには、XPath オプションに関連付けられたラジオ ボタンを選択し、[XPath] をクリックします。[XPath 式エディタ] ページが表示されます。詳細については、「XPath 式エディタの使用」を参照してください。式を保存したら、[変数] フィールドにコンテキスト変数を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。

  5. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

 


For Each

値のシーケンスを反復処理してアクションのブロックを実行するには、For Each アクションを使用します。

For Each アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[For Each] を選択します。For Each アクションが表示されます。
  2. 図 16-1 For Each アクションのコンフィグレーション オプション

    For Each アクションのコンフィグレーション オプション


     
  3. 所定のフィールドに変数名を入力し、[XPath] をクリックして、XPath 式を作成するための XPath エディタを開きます。次に、Do () ループでアクションをコンフィグレーションします。
  4. 実行時に For Each アクションがどのように実行されるかを説明するために、次の図に示す値を使用します。

    図 16-2 For Each アクションのコンフィグレーションの例

    For Each アクションのコンフィグレーションの例


     

    value 変数、index 変数、total 変数、および XPath 式の値は、指定を省略可能です。つまり、アクションの設計時にこれらの値を指定していなくても、セッションをアクティブ化することができます。

    注意 : For Each アクションでのコンテキスト変数のスコープについては、「For Each アクションでの変数のスコープ」と「ネストされた For Each アクション」を参照してください。

  5. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

For Each アクションでの変数のスコープ

value コンテキスト変数は、For Each アクション内でのみ参照できます。For Each アクションの実行が終了 (正常に終了するか、またはエラーで終了) すると、value 変数はスコープから外れ、メッセージ コンテキストから削除されます。ただし、For Each アクションの実行が終了すると、index 変数と total カウント変数は、前回の値のままコンテキスト内に残ります。For Each アクションが正常に終了すると、index 変数と total カウント変数の値は同じ数値 (シーケンス内の項目の合計数) になります。

反復の処理中にエラーが発生した場合、index 変数の値が total カウント変数の値よりも小さくなります。ただし、最後の反復の処理中は、indextotal カウントと同じ値になります。したがって、エラーが発生し、index の値と total の値が等しい場合は、最後の反復処理中か、For Each アクションの正常終了後のいずれかにエラーが発生したということだけを判断できます。

Do() ループでは、どの変数 (valueindex、または total) を変更することもできます。

value 変数

XPath の実行結果として返されるシーケンス内の値は、XPath が実行される変数 (上の図の例では body) のコンテンツへの参照であるため、For Each ループのアクションによって実行される value 変数に対するすべての更新は、body のコンテンツに反映されます。したがって、「挿入」と「更新アクション」で実行するよりも複雑なインプレース更新を実行できます。

たとえば、次の図のようにコンフィグレーションされた For Each アクションでは、注文書の品目のシーケンスを反復処理して、各項目の原価を 10% ずつ増やします。

図 16-3 For Each アクションのコンフィグレーションの例

For Each アクションのコンフィグレーションの例


 

index 変数

各反復処理の開始時に、index 変数の値は、次の index の値で上書きされます。つまり、ループの動作と実行される反復処理の回数は、index 変数の値のループで行われる変更による影響を受けません。

total 変数

total カウント変数は、For Each アクションの先頭で初期化されます。そのため、その値に対する Do() ループのアクションの結果としてのすべての変更は、永続的です。ただし、ループの動作と実行される反復処理の回数は、total 変数の値に対する変更による影響を受けません。

ネストされた For Each アクション

ネストされた For Each アクションをコンフィグレーションできます。そのようなアクションをコンフィグレーションする場合は、可能な限りユニークな変数名を使用することをお勧めします。ネストされた For Each アクションの変数を再利用する場合は、変数のスコープを確認してください。前の節で説明したように、次のような注意点があります。

 


If Then

XQuery 式のブール結果に基づき、1 つまたは複数のアクションを条件付きで実行するには、If Then アクションを使用します。

If Then アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[If... Then...] を選択します。
  2. If... Then... アクションが表示されます。このアクションには以下の機能があります。

    For Each アクションのコンフィグレーションの例


     
  3. [条件] をクリックします。[XQuery 条件エディタ] ページが表示されます。
  4. 作成した条件は、then() 句に入る前に、標準の if...then ロジックに従って実行されるテストとして使用されます。詳細については、「XQuery 条件エディタの使用」を参照してください。

  5. XQuery 条件を編集したら、[アクションの追加] をクリックし、その条件に関連付けるアクションを選択します。追加するアクションの種類の詳細については、「アクションの追加」を参照してください。
  6. 必要に応じて [If...Then...] アイコンをクリックして、else-if 条件または else 条件を追加し、[アクションの追加] をクリックして、これらの条件にアクションを関連付けます。
  7. 注意 : 条件アクションはネスト可能です。ただし、ステージ エディタでは、ネストは 4 累積レベルまでに制限されています。5 番目のレベルを追加しようとしても、そのネスト アクションは表示されません。累積レベルには、すべてのブランチ アクション (If... Then... 条件、パブリッシュ テーブル、ルート テーブル) が含まれます。たとえば、2 レベルの条件と、ルート テーブルを含むパブリッシュ テーブルを使用して、合計 4 レベルにすることができます。ただし、別の条件付きのアクションを追加 (最後のパブリッシュ テーブルに対して) しようとしても、そのアクションは表示されません。

  8. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

 


挿入

XPath 式で選択したノードを基準に、指定した位置に XQuery 式を挿入するには、挿入アクションを使用します。挿入アクションは更新アクションの 1 つです。詳細については、「更新アクション」を参照してください。

挿入アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[挿入する] を選択します。
  2. 挿入アクションが表示されます。このアクションには以下の機能があります。

    If Then アクション


     
  3. [] をクリックします。[XQuery 式エディタ] ページが表示されます。詳細については、「インライン XQuery 式エディタの使用」を参照してください。
  4. 式を編集したら、ドロップダウン リストで相対的な位置を選択します。相対的な位置は、XPath 式の結果を基準として挿入位置を決める場合に使用します。
  5. [XPath] をクリックします。[XPath 式エディタ] ページが表示されます。詳細については、「XPath 式エディタの使用」を参照してください。
  6. XPath 式を編集したら、[変数] フィールドにコンテキスト変数を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。
  7. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

注意 : 有効なコンフィグレーションには、以下のコンフィグレーションが含まれます。

 


ログ

ログに記録するメッセージを作成し、ログに使用する一連の属性を定義するには、ログ アクションを使用します。このトピックには、以下の節があります。

ログ アクションについて

ログ アクションを使用すると、プロキシ サービス内でステージが実行されるたびに、1 つまたは複数のメッセージを WebLogic Server ログに記録することができます。ログ アクションの 1 つまたは複数のインスタンスをメッセージ フローでコンフィグレーションすることができます。

ログ メッセージのコンテンツは、以下の 1 つまたは複数の要素で構成できます。

AquaLogic Service Bus では、非カタログ ロガー API を使用して、メッセージを WebLogic Server ログに書き込みます。AquaLogic Service Bus Console では、WebLogic Server Administration Console が提供するロギング コンフィグレーション機能をレプリケートしません。以下に示すような特定のログ ファイル コンフィグレーションが必要な場合は、WebLogic Server Administration Console を使用してコンフィグレーションを行ってください。

WebLogic Server のログについては、WebLogic Server ドキュメントの『ログ ファイルのコンフィグレーションとログ メッセージのフィルタ処理』を参照してください。

ログ アクションのコンフィグレーション

ログ アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[ログ] をクリックします。
  2. ログ アクションが表示されます。このアクションには以下の機能があります。

    挿入アクション


     
  3. [] をクリックします。[XQuery 式エディタ] ページが表示されます。コンテキスト変数の XQuery 式を通じてログに記録するメッセージ コンテキストを指定します。詳細については、「インライン XQuery 式エディタの使用」を参照してください。
  4. [アノテーション] フィールドに、このログ アクションのメモを入力します。
  5. [アノテーションの重大度] ドロップダウン リストで、以下のいずれかのオプションを選択します。
  6. 表 16-4 ログ アクションの重大度

    重大度

    一般的な用途

    情報

    通常の操作をレポートするために使用する、低レベルの情報メッセージ。

    警告

    疑わしい操作やコンフィグレーションが実行されたが、通常の操作に影響を及ぼさない。

    エラー

    ユーザ エラーが発生した。システムまたはアプリケーションでは、割り込みやサービスの停止をせずにエラーに対処できる。

    デバッグ

    アプリケーションの開発中に、アプリケーション内の下位レベルのアクティビティに関する詳細な説明を提供するメッセージの作成および使用が有効である可能性がある。


     
  7. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

 


パブリッシュ

メッセージのターゲット サービスを指定し、メッセージのパッケージおよびサービスへの送信方法をコンフィグレーションするには、パブリッシュ アクションを使用します。このトピックには、以下の節があります。

パブリッシュ アクションについて

以下のサービス品質およびメッセージ コンテキスト情報のスコープは、パブリッシュ アクションとパブリッシュ テーブル アクションに適用されます。

サービスの品質

パブリッシュ アクションまたはパブリッシュ テーブル アクションの結果としてメッセージが別のサービスにパブリッシュされると、プロキシ サービス着信転送と発信パブリッシュ アクションで JMS/XA 転送を使用している場合は、デフォルトのサービス品質 (QoS) は best effort になります。「best effort」では、メッセージ処理の信頼性が低く、メッセージの重複が防止されませんが、パフォーマンスは最適化されます。デフォルトの best effort サービス品質属性をオーバーライドするには、発信メッセージのコンテキスト変数 ($outbound) に qualityOfService を設定する必要があります。詳細については、「メッセージ コンテキスト」を参照してください。exactly once の信頼性については、「ルート ノードの追加」を参照してください。

サービス品質の詳細については、BEA AquaLogic Service Bus の『ユーザーズ ガイド』の「AquaLogic Service Bus でのメッセージ フローの作成」を参照してください。

メッセージ コンテキストのスコープ

各パブリッシュ トランスフォーメーションでは、メッセージ コンテキストのローカル コピーが独自に保持されます。パブリッシュ要求アクション内の事前定義されたコンテキスト変数に対する変更は、そのパブリッシュのエンドポイントまでに限定され、メッセージ フローによる以降の処理には影響しません。

操作手順を示すため、AquaLogic Service Bus が SOAP メッセージと添付 (SOAP、テキスト、バイナリの 3 つの部分) を受信するシナリオを想定した、パブリッシュ アクションでのメッセージ コンテキストの処理に関する質問とそれに対する回答を以下に示します。

パブリッシュ アクション内で要求アクションを使用してメッセージ コンテンツに加えた変更は、メッセージ フローの以降のノードで保持されるか

保持されません。パブリッシュ アクションで発信メッセージに加えた変更は、パブリッシュされたメッセージにのみ反映されます。つまり、パブリッシュ アクションで行った変更は、メッセージ フローがパブリッシュ アクションを含むステージ以降のノードに進む前にロール バックされます。

ただし、パブリッシュ要求アクションの 1 つとして応答アクションをコンフィグレーションする場合は、このルールの例外です。この場合、メッセージ コンテンツはロール バックされません。つまり、パブリッシュされたメッセージとして送信されたメッセージは、応答アクションが実行された結果としてクライアントに返されたメッセージです。たとえば、次のように、ステージにコンフィグレーションされたアクションのシーケンスが割り当てと応答であるケースを考えます。

Stage: publish to someservice

Request Actions:
     Assign message_x to body
     Reply with Success

実行時にこのステージが実行されると、クライアントは応答メッセージで message_x を受け取ります。

ファイル転送を使用してメッセージをパブリッシュする場合に何が作成されるか

ファイル システムに作成されるメッセージの種類は、以下のように発信サービスのタイプによって異なります。

メッセージのバイナリ部分だけをどのようにパブリッシュするか

  1. バイナリ部分をメッセージ本体にコピーする必要があります。これは以下のいずれかの方法で行います。
  2. attachments コンテキスト変数のコンテンツを削除します。このためには、[変数の <XPath>] オプションを使用する削除アクションを次のようにコンフィグレーションします。

HTTP 転送を使用してパブリッシュする場合に転送ヘッダを設定する必要があるか

転送ヘッダを設定する必要はありません。サービス タイプに応じて、Content-Type が自動的に設定されます。詳細については、「attachments コンテキスト変数の初期化」を参照してください。

パブリッシュ アクションのコンフィグレーション

パブリッシュ アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[パブリッシュ] を選択します。
  2. パブリッシュ アクションが表示されます。このアクションには以下の機能があります。

    ログ アクション


     
  3. [サービス] をクリックします。サービス ブラウザが表示されます。
  4. リストからサービスを選択し、[送信] をクリックします。そのサービスがデフォルトのリンクの代わりに表示されます。これがメッセージのターゲット サービスとなります。
  5. メッセージのパッケージ化の方法とサービスへの送信方法をコンフィグレーションするために、[要求アクション] フィールドの [アクションの追加] をクリックし、サービスに関連付けるアクションを選択します。複数のアクションを追加することもできます。追加するアクションの種類の詳細については、「アクションの追加」を参照してください。
  6. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

関連トピック

転送ヘッダ

メッセージ コンテキスト

パブリッシュ テーブル

 


パブリッシュ テーブル

パブリッシュ テーブルとは、切り替え式の条件テーブルに含まれる一連のルートであり、単一の XQuery 式の結果に基づいて各種ルートを選択できる簡単な構文です。メッセージのターゲット サービスを指定し、メッセージのパッケージおよびサービスへの送信方法をコンフィグレーションするには、パブリッシュ テーブル アクションを使用します。

デフォルトのサービス品質およびパブリック アクションのメッセージ コンテキストのスコープについては、「パブリッシュ アクションについて」を参照してください。

注意 : ステージ エディタでは、ネストは 4 累積レベルまでに制限されています。5 番目のレベルを追加しようとしても、そのネスト アクションは表示されません。累積レベルには、すべてのブランチ アクション (If... Then... 条件、パブリッシュ テーブル、ルート テーブル) が含まれます。たとえば、2 レベルの条件と、ルート テーブルを含むパブリッシュ テーブルを使用して、合計 4 レベルにすることができます。ただし、別の条件を追加 (最後のパブリッシュ テーブルに対して) すると、その条件は表示されません。

パブリッシュ テーブル アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[パブリッシュ テーブル] を選択します。パブリッシュ テーブル アクションが表示されます。
  2. パブリッシュ アクション


     
  3. [] をクリックします。[XQuery 式エディタ] ページが表示されます。実行時にルーティングの決定を行う値を返す XQuery 式を作成します。詳細については、「インライン XQuery 式エディタの使用」を参照してください。
  4. [演算子] ボックスで、いずれかの比較演算子を選択します ([=]、[!=]、[<]、[<=]、[>]、または [>=])。
  5. 所定のフィールドに、XQuery 式の結果として返される値が評価される対象の値を入力します。
  6. [サービス] をクリックして、指定した値の式による評価が true の場合にメッセージをパブリッシュするサービスを選択します。サービス ブラウザが表示されます。
  7. リストからサービスを選択し、[送信] をクリックします。そのサービスがデフォルトのリンクの代わりに表示されます。これがメッセージのターゲット サービスとなります。
  8. メッセージのパッケージとサービスへの送信方法をコンフィグレーションするために、[要求アクション] フィールドの [アクションの追加] をクリックし、サービスに関連付ける 1 つまたは複数のアクションを選択します。追加するアクションの種類の詳細については、「アクションの追加」を参照してください。
  9. 新しいケースを挿入するには、新しいケースのアイコン をクリックし、[新しいケースの挿入] を選択します。演算子のドロップダウン メニュー
  10. 新しいケースについて、手順 3 ~ 7 を繰り返します。
  11. ビジネス ロジックで指定されているようにケースを追加します。
  12. 最後に定義したケースのひし形アイコンをクリックして、[デフォルト ケースの挿入] を選択し、デフォルト ケースを最後に追加します。
  13. デフォルト ケースをコンフィグレーションします。このケースのコンフィグレーションでは、それ以前のケースが満たされていない場合のルーティングの動作を指定します。
  14. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

関連トピック

転送ヘッダ

メッセージ コンテキスト

パブリッシュ

 


エラーを発生させる

指定したエラー コード (文字列) と説明を使用して例外を発生させるには、エラーを発生させるアクションを使用します。

エラーを発生させるアクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[エラーを発生させる] を選択します。
  2. エラーを発生させるアクションが表示されます。このアクションには以下の機能があります。

    演算子のドロップダウン メニュー


     
  3. [エラー コード] フィールドに、発生させるエラー コードを入力します。
  4. [エラー メッセージ] フィールドに、エラー コードの説明を入力します。
  5. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

関連トピック

エラー処理アクションの詳細については、「エラー メッセージと処理」を参照してください。

 


名前変更

XPath 式で選択された要素のコンテンツを変更せずに要素名を変更するには、名前変更アクションを使用します。名前変更アクションは更新アクションの 1 つです。詳細については、「更新アクション」を参照してください。

名前変更アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[名前変更する] を選択します。
  2. 名前変更アクションが表示されます。このアクションには以下の機能があります。

    名前変更アクション


     
  3. [XPath] をクリックします。[XPath 式エディタ] ページが表示されます。XPath 式を使用して、名前を変更するデータ (名前付き変数内の) を指定します。XPath 式は、属性ではなく、要素を選択する必要があります。
  4. 詳細については、「XPath 式エディタの使用」を参照してください。

  5. [変数] フィールドにコンテキスト変数を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。
  6. 以下のいずれか 1 つを実行します。
  7. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

 


置換

XPath 式で指定されたノードまたはノードのコンテンツを置き換えるには、置換アクションを使用します。ノードまたはそのコンテンツは、XQuery 式が返した値で置換されます。

置換アクションでは、単純な値や要素を置き換えることができます (XQuery 式は属性を返すことができません)。XPath で属性が指定される場合は、XQuery 式で単純な値に評価する必要があります。XQuery 式から何も返されない場合、指定されたノードが空になるか、指定された属性が削除されます。

置換アクションは更新アクションの 1 つです。詳細については、「更新アクション」を参照してください。

置換アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[置換] を選択します。
  2. 置換アクションが表示されます。このアクションには以下の機能があります。

    置換アクション


     
  3. [XPath] をクリックします。[XPath 式エディタ] ページが表示されます。XPath 式を使用して、置換するデータ (名前付き変数内の) を指定します。詳細については、「XPath 式エディタの使用」を参照してください。
  4. XPath 式を編集したら、[変数] フィールドにコンテキスト変数を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。
  5. [] をクリックします。[XQuery 式エディタ] ページが表示されます。XQuery 式を使用して、名前付き変数内の XPath で指定したデータを置換するデータを作成します。詳細については、「インライン XQuery 式エディタの使用」を参照してください。
  6. XQuery 式を編集したら、以下のいずれかのオプションを選択します。
  7. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

 


返信

返信アクションは、要求パイプライン、応答パイプライン、またはエラー パイプラインで使用できます。成功時または失敗時の返信をコンフィグレーションできます。失敗の場合、SOAP サービスでは、HTTP 500 エラーが返されます。返信アクションでは、呼び出し元に即時に返信されるように指定します。

返信アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[返信する] を選択します。
  2. 返信アクションが表示されます。このアクションには以下の機能があります。

    置換アクション


     
  3. [成功時] ラジオ ボタンを選択すると、メッセージが成功した場合に応答します。[失敗時] ラジオ ボタンを選択すると、メッセージが失敗した場合に応答します。
  4. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

関連トピック

エラー処理アクションの詳細については、「エラー メッセージと処理」を参照してください。

パブリッシュ アクション要求アクションの 1 つとしての応答アクションの使用については、「パブリッシュ」の「メッセージ コンテキストのスコープ」を参照してください。

 


レポート

プロキシ サービスのメッセージ レポートを有効にするには、レポート アクションを使用します。

AquaLogic Service Bus には、メッセージ データを配信する機能があります。また、1 つまたは複数のレポート プロバイダにアラートを送信します。メッセージ データは、メッセージの本体またはメッセージに関連付けられた他の任意の変数 (ヘッダまたは inbound 変数など) から取り込むことができます。アラート データには、プロキシ サービスをモニタするためにコンフィグレーションできるサービス レベル アグリーメント (SLA) の違反または発生に関する情報が含まれます。レポート プロバイダに配信されるメッセージまたはアラート データは、メッセージのトラッキングや規定の監査などの機能に使用できます。

AquaLogic Service Bus JMS レポート プロバイダまたはユーザ定義のレポート プロバイダからレポート メッセージを受信するには、プロキシ サービスのメッセージ フローで、最初にレポート アクションを作成する必要があります。レポート アクションを使用すると、各メッセージから情報を抽出して、それをレポート データ ストリームに書き込むことができます。

アラート レポート用のレポート アクションをコンフィグレーションする必要はありません。アラート データは常にレポート データ ストリームで使用可能です。

レポート アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[レポート] を選択します。
  2. レポート アクションが表示されます。このアクションには以下の機能があります。

    返信アクション


     
  3. [] をクリックします。[XQuery 式エディタ] ページが表示されます。詳細については、「インライン XQuery 式エディタの使用」を参照してください。XQuery 式を使用して、AquaLogic Service Bus ダッシュボードに報告するデータを作成します。
  4. XQuery 式を編集したら、[キーの追加] をクリックします。[キー名] フィールドと [キー値] フィールド (XPath 式編集用の画面に移動するための [XPath] リンクを持つ)、および [変数] フィールド (コンテキスト変数の入力用) が表示されます。
  5. キー値のペアは、メッセージ コンテキスト変数やメッセージ ペイロードからキー識別子を抽出して、残りのメッセージを無視する場合に使用します。キーは、メッセージを識別する便利な手段となります。キーは、[レポート] モジュールでレポート インデックスとして表示されます。詳細については、「メッセージの表示と検索」および「メッセージの詳細の表示」を参照。

    1. [キー名] フィールドに、キーの名前を入力します。
    2. [XPath] をクリックします。[XPath 式の編集] ページが表示されます。詳細については、「XPath 式エディタの使用」を参照してください。
    3. [変数] フィールドにコンテキスト変数を入力します。コンテキスト変数の詳細については、「メッセージ コンテキスト」を参照してください。
    4. さらにキー値を追加するには、キー アイコンをクリックして [キーの追加] を選択します。キーを削除するには、キー アイコンをクリックして [このキーを削除] を選択します。

    レポート アクションのコンフィグレーションおよび AquaLogic Service Bus ダッシュボードで報告されるデータの例については、「レポート アクションのコンフィグレーションおよび生成されるレポート データの例」を参照してください。

  6. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

レポート アクションのコンフィグレーションおよび生成されるレポート データの例

ステージのエラー ハンドラでレポート アクションをコンフィグレーションする例を示します。目的は、エラーが発生した場合に fault コンテキスト変数のコンテンツを報告することです。次の図に示すようにレポート アクションをコンフィグレーションします。

図 16-4 キー名とキー値のコンフィグレーションの例

キー名とキー値のコンフィグレーションの例


 

ここで、errorCode はキー名を表し、キー値は ./ctx:errorCode という XPath を使用して fault 変数から抽出されます。

実行時にこのレポート アクションが行われるたびに、レポート データ ストリームを通じてメッセージが報告されます。次の図は、図 16-4 に示すキーと値のペアでコンフィグレーションされたレポート アクションが 2 回実行された後の、AquaLogic Service Bus Console の [メッセージ レポートの概要] ページを示しています。

図 16-5 実行時におけるレポート アクションの実行結果

実行時におけるレポート アクションの実行結果


 

関連トピック

レポート

 


再開

再開アクションはエラー ハンドラ内で使用します。実行時、このアクションによって、エラーが発生しなかった場合と同様にメッセージ フローの処理が続行されます。処理はエラー ハンドラがコンフィグレーションされているノードまたはステージの後から続行されます。以降のメッセージ フロー ロジックで要求される変数およびメッセージの状態に対応するようにコンテキスト変数とメッセージの状態を設定するために、エラー ハンドラに調整ロジックをコンフィグレーションすることが必要な場合があります。調整ロジックは再開アクションの前にコンフィグレーションします。

このアクションにパラメータはありません。このパラメータはエラー パイプラインでのみ使用できます。メッセージ フローの再開アクションを作成するには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[再開する] を選択します。[再開する] アイコンが表示されます。
  2. ステージ コンフィグレーションの編集」の説明に従い、続けて他のアクションをコンフィグレーションするか、ステージ コンフィグレーションを保存します。

関連トピック

エラー処理アクションの詳細については、「エラー メッセージと処理」を参照してください。

 


サービス コールアウト

AquaLogic Service Bus に登録済みのプロキシ サービスまたはビジネス サービスの同期 (ブロック) 呼び出しをコンフィグレーションするには、サービス コールアウト アクションを使用します。このトピックには、以下の節があります。

サービス コールアウト アクションについて

サービス コールアウトを使用すると、あるプロキシ サービスから別のサービスへのコールアウトを行うことができます。呼び出されるサービスの入力パラメータはプロキシ サービスのメッセージ コンテキストから作成され、呼び出されるサービスからの出力はメッセージ コンテキストにマッピングされます。コールアウトが行われるサービスは、以下の特性を持っている必要があります。

転送ヘッダに関する注意事項

サービス コールアウト アクションのコンフィグレーション時に指定する転送ヘッダに加え、以下のヘッダが AquaLogic Service Bus バインディング レイヤによって自動的に追加されます。

サービス コールアウト アクションのコンフィグレーション

サービスと操作を指定してコンテキストを入力し、コンテキスト変数を入力して呼び出し入力と出力パラメータにバインドします。

  1. [アクションの追加] をクリックし、[サービス コールアウト] を選択します。
  2. サービス コールアウト アクションが表示されます。このアクションには、サービス選択用の画面に移動するための [サービス] リンクがあります。

    実行時におけるレポート アクションの実行結果


     
  3. [サービス] をクリックします。サービス ブラウザが表示されます。
  4. 登録済みのプロキシ サービスまたはビジネス サービスのリストでサービスを選択し、[送信] をクリックします。
  5. 選択したサービスの名前がステージ コンフィグレーション ページに表示されます。以降のコンフィグレーション オプションは、サービスが WSDL ベースであるかどうかによって異なります。

サービスが WSDL ベースの場合

  1. サービスで呼び出す操作名を選択します。
  2. [要求パラメータ] フィールドに、実行時に評価される、要求パラメータの値を指定する変数の名前を入力します。
  3. 警告 : 入力変数にはコアのペイロード ドキュメントだけを指定します。SOAP パッケージは、AquaLogic Service Bus によって自動的に作成されます。そのため、入力ドキュメントを <soap-env:Body>...</soap-env:Body> でラッピングしないでください。

    たとえば、この要求パラメータに使用される body 入力変数を作成する場合は、$body (soap-env:Body ラッパーが保持されます) ではなく、body/* (ラッパー soap-env:Body を削除します) という XPath を使用して、その変数のコンテンツを定義します。

  4. [応答パラメータ] フィールドに、実行時に応答を割り当てる変数の名前を入力します。
  5. (オプション) 以下の項目を指定できます。
  6. 追加する各転送ヘッダについて、以下の手順を行います (指定したヘッダの値は、コールアウト サービスに送信されるメッセージに追加されます)。
    1. [転送ヘッダ] テーブルの [ヘッダを追加] をクリックします。次の図のように、[転送ヘッダ] テーブルの最初の行に入力されます。
    2. サービス コールアウト アクションのコンフィグレーション


       
    3. ターゲット サービスの転送固有のヘッダが入力済みのドロップダウン リストで選択するか、または所定のフィールドにヘッダ名を入力してヘッダを指定します。
    4. ドロップダウン リストには、事前定義されたすべてのターゲット転送のヘッダ名が入力されます (たとえば、HTTP 転送の場合は Content-Type、JMS 転送の場合は JMSCorrelationID など)。[その他] フィールドにヘッダ名を入力し、そのヘッダ名がこのサービスの転送の事前定義されたヘッダでない場合、そのヘッダは転送仕様の定義のとおりユーザ ヘッダになります。

    5. [ヘッダを <式> に設定] の [<式>] をクリックして、XQuery 式エディタまたは XSLT 式エディタを呼び出します。このエディタでは、ヘッダの値を設定できます。単純な式 (たとえば、text/xml) または複雑な XQuery 式あるいは XSLT 式を使用できます。
    6. AquaLogic Service Bus 転送レイヤでは、すべてのヘッダの XML 表現を文字列値として定義するため、式の結果は、ヘッダの値が設定される前に文字列に変換されます。何も返さない式のヘッダの値は、空の文字列に設定されます。式を使用してヘッダを削除することはできません。

      警告 : このアクションで指定できるすべての転送ヘッダとメタデータが実行時に使用されるわけではありません。つまり、特定のヘッダとメタデータの値は、上書きされる場合や、AquaLogic Service Bus ランタイムで無視される場合があります。特定の転送についてどのヘッダとメタデータを設定できるか、および実行時にどのヘッダとメタデータのセットが使用されるかについては、「ランタイムでの転送ヘッダの設定の使用方法について」を参照してください。

    7. テーブルにヘッダを追加するには、[ヘッダを追加] をクリックします。
    8. [ヘッダを追加]


       

      注意 : 指定する転送ヘッダに加え、その他のヘッダが AquaLogic Service Bus バインディング レイヤによって追加されます。詳細については、「転送ヘッダに関する注意事項」を参照してください。

  7. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

変数とメッセージ コンテキストがサービス コールアウトでどのように使用されるかを示す例については、「サービス コールアウトのメッセージの作成方法」を参照してください。

サービスが WSDL ベースでない場合

  1. [要求ドキュメント変数] フィールドに、要求ドキュメントを割り当てる変数の名前を入力します。
  2. サービス (SOAP ドキュメント スタイルのサービスの場合) に送信される SOAP メッセージの本体、またはサービス タイプが任意の XML の場合に送信される XML メッセージの本体を作成する変数は、実行時に評価されます。

    警告 : 入力変数にはコアのペイロード ドキュメントだけを指定します。SOAP パッケージは、AquaLogic Service Bus によって自動的に作成されます。そのため、入力ドキュメントを <soap-env:Body>...</soap-env:Body> でラッピングしないでください。

    たとえば、この要求パラメータに使用される body 入力変数を作成する場合は、$body (soap-env:Body ラッパーが保持されます) ではなく、body/* (ラッパー soap-env:Body を削除します) という XPath を使用して、その変数のコンテンツを定義します。

    メッセージング サービスの場合、変数に以下の制限があります。

  3. [応答ドキュメント変数] フィールドに、応答ドキュメントを割り当てる変数の名前を入力します。
  4. サービス コールアウトのサービス タイプが任意の SOAP の場合は、以下の項目を指定できます。
  5. 追加する各転送ヘッダについて、以下の手順を行います (指定したヘッダの値は、コールアウト サービスに送信されるメッセージに追加されます)。
    1. [転送ヘッダ] テーブルの [ヘッダを追加] をクリックします。次の図のように、[転送ヘッダ] テーブルの最初の行に入力されます。
    2. XML サービス コールアウトのコンフィグレーション


       
    3. ターゲット サービスの転送固有のヘッダが入力済みのドロップダウン リストで選択するか、または所定のフィールドにヘッダ名を入力してヘッダを指定します。
    4. ドロップダウン リストには、事前定義されたすべてのターゲット転送のヘッダ名が入力されます (たとえば、HTTP 転送の場合は Content-Type、JMS 転送の場合は JMSCorrelationID など)。[その他] フィールドにヘッダ名を入力し、そのヘッダ名がこのサービスの転送の事前定義されたヘッダでない場合、そのヘッダは転送仕様の定義のとおりユーザ ヘッダになります。

    5. [ヘッダを <式> に設定] の [<式>] をクリックして、XQuery 式エディタまたは XSLT 式エディタを呼び出します。このエディタでは、ヘッダの値を設定できます。単純な式 (たとえば、text/xml) または複雑な XQuery 式あるいは XSLT 式を使用できます。
    6. AquaLogic Service Bus 転送レイヤでは、すべてのヘッダの XML 表現を文字列値として定義するため、式の結果は、ヘッダの値が設定される前に文字列に変換されます。何も返さない式のヘッダの値は、空の文字列に設定されます。式を使用してヘッダを削除することはできません。

      警告 : このアクションで指定できるすべての転送ヘッダとメタデータが実行時に使用されるわけではありません。つまり、特定のヘッダとメタデータの値は、上書きされる場合や、AquaLogic Service Bus ランタイムで無視される場合があります。特定の転送についてどのヘッダとメタデータを設定できるか、および実行時にどのヘッダとメタデータのセットが使用されるかについては、「ランタイムでの転送ヘッダの設定の使用方法について」を参照してください。

    7. テーブルにヘッダを追加するには、[ヘッダを追加] をクリックします。
    8. [ヘッダを追加]


       

      注意 : 指定する転送ヘッダに加え、その他のヘッダが AquaLogic Service Bus バインディング レイヤによって追加されます。詳細については、「転送ヘッダに関する注意事項」を参照してください。

  6. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

変数とメッセージ コンテキストがサービス コールアウトでどのように使用されるかを示す例については、「サービス コールアウトのメッセージの作成方法」を参照してください。

サービス コールアウトのメッセージの作成方法

AquaLogic Service Bus がサービス コールアウト アクションを通じてサービスを呼び出す場合は、メッセージ コンテキストの変数の値を使用してメッセージのコンテンツが作成されます。発信メッセージのメッセージ コンテンツは、ターゲット サービスのタイプに応じて異なって処理されます。以下のトピックで説明されているように、メッセージ コンテンツの作成方法はターゲット サービスのタイプによって異なります。

SOAP ドキュメント スタイルのサービス

SOAP ドキュメント スタイルのサービスの場合の特徴は以下のとおりです。

SOAP ドキュメント スタイルのサービスへのコールアウト時のメッセージの作成方法を説明するために、次の図のようにコンフィグレーションされたサービス コールアウト アクションを例として示します。

図16-6 SOAP ドキュメント スタイルのサービスのサービス コールアウト アクションのコンフィグレーション

SOAP ドキュメント スタイルのサービスのサービス コールアウト アクションのコンフィグレーション


 

また、実行時に要求ドキュメント変数 myreq が次の XML にバインドされていることを前提とします。

コード リスト 16-1 要求変数 (myreq) のコンテンツ

<sayHello xmlns="http://www.openuri.org/">
    <intVal>100</intVal>
    <string>Hello AquaLogic</string>
</sayHello>

実行時に、SOAP 要求ヘッダ変数 reqheader は次の SOAP ヘッダにバインドされます。

コード リスト 16-2 SOAP 要求ヘッダ変数 (reqheader) のコンテンツ

<soap:Header xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/
xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
    <wsa:Action>...</wsa:Action>
    <wsa:To>...</wsa:To>
    <wsa:From>...</wsa:From>
    <wsa:ReplyTo>...</wsa:ReplyTo>
    <wsa:FaultTo>...</wsa:FaultTo>
  </soap:Header>

このシナリオ例では、外部サービスに送信されるメッセージの本体全体は、次のサンプル コードのようになります (myreq 変数と reqheader 変数のコンテンツは太字で示されています)。

コード リスト 16-3 サービス コールアウト アクションの結果としてサービスに送信されるメッセージ

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
        <wsa:Action>...</wsa:Action>
        <wsa:To>...</wsa:To>
        <wsa:From>...</wsa:From>
        <wsa:ReplyTo>...</wsa:ReplyTo>
        <wsa:FaultTo>...</wsa:FaultTo>
    </soap:Header>
    <soapenv:Body>
        <sayHello xmlns="http://www.openuri.org/">
            <intVal>100</intVal>
            <string>Hello AquaLogic</string>
        </sayHello>
    </soapenv:Body>
</soapenv:Envelope>

図 16-6 に示すサービス コールアウト アクションのコンフィグレーションに基づいて、サービスからの応答は myresp 変数に割り当てられます。外部サービスからの応答全体は、次のサンプル コードのようになります。

コード リスト 16-4 サービス コールアウト アクションの結果としてのサービスからの応答メッセージ

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.
org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <env:Header/>
    <env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <m:sayHelloResponse xmlns:m="http://www.openuri.org/">
            <result xsi:type="xsd:string">This message brought to you by Hello AquaLogic and the number 100
            </result>
        </m:sayHelloResponse>
    </env:Body>
</env:Envelope>

このシナリオでは、myresp 変数に、次のサンプル コードに示す値が割り当てられます。

コード リスト 16-5 サービス コールアウト アクションの結果としての応答変数 (myresp) のコンテンツ

<m:sayHelloResponse xmlns:m="http://www.openuri.org/">
    <result ns0:type="xsd:string" xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance">
This message brought to you by Hello AquaLogic and the number 100
    </result>
</m:sayHelloResponse>

XML サービス

XML サービスの場合の特徴は以下のとおりです。

XML サービスへのコールアウト時のメッセージの作成方法を説明するために、次の図のようにコンフィグレーションされたサービス コールアウト アクションを例として示します。

図 16-7 XML サービスのサービス コールアウト アクションのコンフィグレーション

XML サービスのサービス コールアウト アクションのコンフィグレーション


 

また、実行時に要求ドキュメント変数 myreq が次の XML にバインドされていることを前提とします。

コード リスト 16-6 myreq 変数のコンテンツ

<sayHello xmlns="http://www.openuri.org/">
    <intVal>100</intVal>
    <string>Hello AquaLogic</string>
</sayHello>

このシナリオの特徴は以下のとおりです。

コード リスト 16-7 myresp 変数のコンテンツ

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <env:Header/>
    <env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <m:sayHelloResponse xmlns:m="http://www.openuri.org/">
            <result xsi:type="xsd:string">This message brought to you by Hello AquaLogic and the number 100
            </result>
        </m:sayHelloResponse>
    </env:Body>
</env:Envelope>

SOAP RPC スタイルのサービス

SOAP RPC スタイルのサービスの場合の特徴は以下のとおりです。

SOAP RPC スタイルのサービスへのコールアウト時のメッセージの作成方法を説明するために、以下のコンフィグレーションを持つ例を示します。

このシナリオでは、サービスに対する発信メッセージの本体は、次のサンプル コードのようになります。

コード リスト 16-8 発信メッセージのコンテンツ

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <sayHello2 xmlns="http://www.openuri.org/">
            <intVal>100</intVal>
            <string >Hello AquaLogic</string>
        </sayHello2>
    </soapenv:Body>
</soapenv:Envelope>

呼び出しが行われたサービスが返す応答は、次のサンプル コードのようになります。

コード リスト 16-9 helloWorld サービスからの応答メッセージのコンテンツ

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <env:Header/>
    <env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <m:sayHello2Response xmlns:m="http://www.openuri.org/">
            <result xsi:type="n1:HelloWorldResult" xmlns:n1="java:">
                <message xsi:type="xsd:string">
                This message brought to you by Hello AquaLogic and the number 100
                </message>
            </result>
        </m:sayHello2Response>
    </env:Body>
</env:Envelope>

メッセージ コンテキスト変数 output1 には、次のサンプル コードに示す値が割り当てられます。

コード リスト 16-10 出力変数 (output1) のコンテンツ

<message ns0:type="xsd:string" xmlns:ns0="http://www.w3.org/2001/XMLSchema-intance">
This message brought to you by Hello AquaLogic and the number 100</message>

メッセージング サービス

メッセージング サービスの場合の特徴は以下のとおりです。

たとえば、要求メッセージのコンテキスト変数 myreq<hello>there</hello> という形式の XML ドキュメントにバインドされる場合、発信メッセージには厳密にこのペイロードが格納されます。応答メッセージのコンテキスト変数 (myresp) は、次のような参照要素にバインドされます。

<binary-content ref=" cid:1850733759955566502-2ca29e5c.1079b180f61.-7fd8"/>

エラー処理

エラー処理は、メッセージ フロー、パイプライン、ルート ノード、およびステージ レベルでコンフィグレーションできます。その方法については、「エラー メッセージと処理」を参照してください。サービス コールアウトの結果として外部サービスから受け取るエラーのタイプには、転送エラー、SOAP エラー、予期される応答に一致しない応答などが含まれます。

fault コンテキスト変数の設定は、返されるエラーのタイプごとに異なります。fault 変数のコンテンツに基づいて、ビジネス ロジックとエラー処理ロジックを構築できます。$fault の詳細については、「fault 変数」および「エラー コード」を参照してください。

転送エラー

外部サービスから転送エラーを受け取り、転送プロバイダから AquaLogic Service Bus にエラー応答ペイロードが返されない場合 (たとえば、HTTP 403 のエラー コードが返された場合)、サービス コールアウト アクションは例外をスローします。これにより、パイプラインでエラーが発生します。ユーザ コンフィグレーション エラー ハンドラの fault 変数は、次のサンプル コードと同様の形式のメッセージにバインドされます。

コード リスト 16-11 AquaLogic Service Bus の fault 変数のコンテンツ - 転送エラー、エラー応答ペイロードなし

<con:fault xmlns:con="http://www.bea.com/wli/sb/context">
  <con:errorCode>BEA-380000</con:errorCode>
  <con:reason>Not Found</con:reason>
   <con:details>
   .......
   </con:details>
    <con:location>
       <con:node>PipelinePairNode1</con:node>
       <con:pipeline>PipelinePairNode1_request</con:pipeline>
    <con:stage>stage1</con:stage>
    </con:location>
</con:fault>

転送エラーに関連付けられたペイロードがある場合 (たとえばビジネス サービスから HTTP 500 のエラー コードを受け取り、応答内に XML ペイロードがある場合)、カスタム エラー コード BEA-382502 のメッセージ コンテキスト エラーが生成されます。

サービスが HTTP または JMS 転送を使用している場合に、そのサービスからの応答の結果として BEA-382502 エラー応答コードがトリガされるには、次の条件が満たされる必要があります。

fault 内の ErrorResponseDetail 要素には、サービスから受信したエラー応答ペイロードが含まれます。次のリストに ErrorResponseDetail 要素の例を示します。

コード リスト 16-12 AquaLogic Service Bus の fault 変数のコンテンツ - 転送エラー、エラー応答ペイロードあり

<ctx:Fault xmlns:ctx="http://www.bea.com/wli/sb/context">
    <ctx:errorCode>BEA-382502<ctx:errorCode>
    <ctx:reason> Service callout has received an error response from the server</ctx:reason>
    <ctx:details>
        <alsb:ErrorResponseDetail xmlns:alsb="http://www.bea.com/...">
            <alsb:detail> <![CDATA[
                . ..
]]>
            </alsb:detail>
        </alsb:ReceivedFault>
    </ctx:details>
    <ctx:location>.. .</ctx:location>
</ctx:Fault>

注意 : サービス コールアウトで生成されるエラーの XML スキーマについては、「サービス コールアウトで生成されるエラー詳細の XML スキーマ」を参照してください。

SOAP エラー

外部サービスが SOAP エラーを返した場合、AquaLogic Service Bus ランタイムは、カスタム エラー コードとエラーの詳細を示す説明を含むコンテキスト変数 $fault を設定します。そのために、SOAP エラーの <SOAP-ENV:Fault> 要素の下にある 3 つの要素のコンテンツが抽出され、AquaLogic Service Bus の fault 要素の作成に使用されます。

サービスが次のエラーを返す場合のシナリオを例として示します。

コード リスト 16-13 サービス コールアウトから返される SOAP エラー

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Client</faultcode>
      <faultstring>Application Error</faultstring>
      <detail>
        <message>That's an Error!</message>
        <errorcode>1006</errorcode>
      </detail>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

<faultcode><faultstring><detail> の各要素が抽出され、<alsb:ReceivedFault> 要素でラッピングされます。コード リスト 16-13faultcode 要素には、QName (関連するすべてのネームスペース宣言が保持されます) が含まれます。

生成される <alsb:ReceivedFault> 要素およびカスタム エラー コードとエラー文字列は、fault コンテキスト変数のコンテンツの作成に使用されます。この例の場合は、次のサンプル コードと同様の形式になります。

コード リスト 16-14 AquaLogic Service Bus の fault 変数のコンテンツ - SOAP エラー

<ctx:Fault xmlns:ctx="http://www.bea.com/wli/sb/context">
    <ctx:errorCode>BEA-382500<ctx:errorCode>
    <ctx:reason> service callout received a soap Fault response</ctx:reason>
    <ctx:details>
        <alsb:ReceivedFault xmlns:alsb="http://www.bea.com/...">
            <alsb:faultcode
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">SOAP-ENV:Clien
            </alsb:faultcode>
            <alsb:faultstring>Application Error</alsb:faultstring>
            <alsb:detail>
                <message>T
hat's an Error!</message>
                <errorcode>1006</errorcode>
            </alsb:detail>
        </alsb:ReceivedFault>
    </ctx:details>
    <ctx:location> </ctx:location>
</ctx:Fault>

注意 : ユニークなエラー コード BEA-382500 は、サービス コールアウト アクションが SOAP エラーの応答を受け取る場合のために予約されています。

予期しない応答

プロキシ サービスのランタイムが予期していない応答メッセージがサービスから返された場合、メッセージ コンテキスト エラーが生成され、カスタム エラー コード BEA-382501 で初期化されます。エラーの詳細には応答の SOAP-Body 要素のコンテンツが含まれます。

サービス コールアウトで生成されるエラーの XML スキーマについては、コード リスト 16-15 を参照してください。

サービス コールアウトで生成されるエラー詳細の XML スキーマ

サービス コールアウトで生成されるエラー詳細の XML スキーマ定義を次のサンプル コードに示します。

コード リスト 16-15 サービス コールアウトで生成されるエラー詳細の XML スキーマ

<xs:complexType name="ReceivedFaultDetail">
        <xs:sequence>
            <xs:element name="faultcode" type="xs:QName"/>
            <xs:element name="faultstring" type="xs:string"/>
            <xs:element name="detail" minOccurs="0" >
               <xs:complexType>
                 <xs:sequence>
                        <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
                 </xs:sequence>
        <xs:anyAttribute namespace="##any" processContents="lax" />
               </xs:complexType>
            </xs:element>
        </xs:sequence>
</xs:complexType>

<xs:complexType name="UnrecognizedResponseDetail">
        <xs:sequence>
            <xs:element name="detail" minOccurs="0" type="xs:string" />
        </xs:sequence>
</xs:complexType>

<xs:complexType name="ErrorResponseDetail">
        <xs:sequence>
            <xs:element name="detail" minOccurs="0" type="xs:string" />
        </xs:sequence>
</xs:complexType>

サービス コールアウト アクションとルート ノードの比較

実行時のサービス コールアウト アクションとルート ノードの違い

実行時にルート ノードでコンフィグレーションされたアクションとサービス コールアウト アクションの動作の違いは、主に以下のとおりです。

関連トピック

エラー メッセージと処理

メッセージ コンテキスト

アクションの追加

 


スキップ

実行時にこのステージの実行がスキップされて、処理がメッセージ フローの次のステージに進むように指定するには、スキップ アクションを使用します。

このアクションにはパラメータがなく、要求パイプライン、応答パイプライン、エラー パイプラインで使用できます。メッセージ フローのスキップ アクションを作成するには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[スキップする] を選択します。[スキップする] アイコンが表示されます。
  2. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

 


転送ヘッダ

メッセージのヘッダの値を簡単に設定するには、転送ヘッダ アクションを使用します。

転送ヘッダ アクションを使用すると、発信要求 (ルート アクションまたはパブリッシュ アクションでプロキシ サービスによって送信されるメッセージ) と着信応答 (プロキシ サービスがクライアントに返信する応答メッセージ) のヘッダの値を簡単に設定できます。このアクションでは、どのメッセージ コンテキストの場所を変更するかをランタイムに対して指定します。

変更するヘッダ セットを指定したら、ヘッダの値をコンフィグレーションします。ヘッダの値は、名前と値のペアの順序指定のないテーブルとして設定します。ランタイムでは、対応する XML の生成時に、ネームスペースを宣言し、適切な順序でヘッダ要素を配置します。

転送ヘッダ アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[転送ヘッダ] を選択します。転送ヘッダ アクションが表示されます。
  2. 図 16-9 転送ヘッダ アクションのコンフィグレーション - 発信要求、着信応答

    転送ヘッダ アクションのコンフィグレーション - 発信要求、着信応答


     
  3. ドロップダウン メニューで、[発信要求] または [着信応答] を選択します。
  4. このフィールドは必須であり、発信要求 (ルート アクションまたはパブリッシュ アクションでプロキシ サービスによって送信されるメッセージ) と着信応答 (プロキシ サービスがクライアントに返信する応答メッセージ) のヘッダの値を設定するかどうかをランタイムに対して指定します。

    転送ヘッダ アクションをコンフィグレーションするときに [発信要求] または [着信応答] を選択することによって、どのメッセージ コンテキストの場所を変更するかをランタイムに対して指定します。これらのヘッダ要素は、メッセージ コンテキストの以下の場所にあります。

  5. (オプション) [パイプラインを介してすべてのヘッダを渡す] を選択します。
  6. このオプションを選択すると、転送ヘッダ アクションは、すべてのヘッダを着信メッセージと発信メッセージとの間で自動的にパススルーします。ソース ヘッダ セットのすべてのヘッダはターゲット ヘッダ セットにコピーされ、ターゲット ヘッダ セットの既存の値はすべて上書きされます。

    このオプションとヘッダ固有のパススルー オプションの使用については、「グローバル パススルー オプションとヘッダ固有のコピー オプションについて」を参照してください。

  7. 追加する各ヘッダについて、以下の手順を行います。
    1. [転送ヘッダ] テーブルの [ヘッダを追加] をクリックします。次の図のように、[転送ヘッダ] テーブルの最初の行に入力されます。
    2. 図 16-11 転送ヘッダ アクションの個別コンフィグレーション オプション

      転送ヘッダ アクションの個別コンフィグレーション オプション


       
    3. ターゲット サービスの転送固有のヘッダが入力済みのドロップダウン リストで選択するか、または所定のフィールドにヘッダ名を入力してヘッダを指定します。
    4. ドロップダウン リストには、事前定義されたすべてのターゲット転送のヘッダ名が入力されます (たとえば、HTTP 転送の場合は Content-Type、JMS 転送の場合は JMSCorrelationID など)。[その他] フィールドにヘッダ名を入力し、そのヘッダ名がこのサービスの転送の事前定義されたヘッダでない場合、そのヘッダは転送仕様の定義のとおりユーザ ヘッダになります。

    5. [アクション] セクションの所定のオプションで、ヘッダの値の設定方法を指定します。
    6. ヘッダを式に設定

      このオプションを選択すると、XQuery 式または XSLT 式を使用して、ヘッダの値を設定できます。単純な式 (たとえば、"text/xml") または複雑な XQuery 式あるいは XSLT 式を使用できます。

      AquaLogic Service Bus 転送レイヤでは、すべてのヘッダの XML 表現を文字列値として定義するため、式の結果は、ヘッダの値が設定される前に文字列に変換されます。何も返さない式のヘッダの値は、空の文字列に設定されます。式を使用してヘッダを削除することはできません。

      警告 : このアクションで指定できるすべてのヘッダの設定が実行時に使用されるわけではありません。特定の転送についてどのヘッダを設定できるか、および実行時にどのヘッダのセットが使用されるかについては、「ランタイムでの転送ヘッダの設定の使用方法について」を参照してください。

      ヘッダを削除

      要求または応答のメタデータからヘッダが削除されるように指定します。

      [着信要求からヘッダをコピー] (発信要求の転送ヘッダを設定する場合 - 図 16-10 を参照)
      または
      [発信応答からヘッダをコピー] (着信応答の転送ヘッダを設定する場合 - 図 16-10 を参照)

      このヘッダが着信メッセージの同じ名前を持つ対応するヘッダから発信メッセージに、またその逆に直接コピーされるように指定します。たとえば、発信要求の SOAPAction ヘッダを設定する場合は、[着信要求からヘッダをコピー] を選択すると、ランタイムが $inboundSOAPAction 要求ヘッダから値をコピーします。着信応答ヘッダの場合、コピーするヘッダのソースは、$outbound の応答ヘッダです。

      ソース内に存在しないヘッダについてヘッダをコピー オプションが選択された場合、このオプションは無視され、このヘッダのターゲットではアクションが実行されません。つまり、このヘッダをコピー オプションでは、ソースに存在するヘッダだけがターゲットにコピーされます。

      このオプションとグローバルな [パイプラインを介してすべてのヘッダを渡す] オプションの使用については、「グローバル パススルー オプションとヘッダ固有のコピー オプションについて」を参照してください。

    7. テーブルにヘッダを追加するには、[ヘッダを追加] をクリックします。
    8. [ヘッダを追加]


       

      このテーブルを展開すると、別の転送ヘッダのコンフィグレーションに使用できる新しい一連のオプションを含む追加の行が表示されます。

      [ヘッダを追加] メニュー項目


       

      上の図は、2 つのヘッダを含む [転送ヘッダ] テーブルを示しています。アクションはヘッダごとに指定されます。このテーブルに必要な数のヘッダを追加したり、テーブルのそのヘッダ行に関連付けられた削除オプション 転送ヘッダの個別オプション を使用してヘッダをテーブルから削除したりできます。ランタイムでは、対応する XML の生成時に、ネームスペースを宣言し、適切な順序でヘッダ要素を配置するため、テーブルのヘッダの順序を指定する必要はありません。

  8. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

グローバル パススルー オプションとヘッダ固有のコピー オプションについて

前の節で説明したように、転送ヘッダ アクションのコンフィグレーション時には以下のオプションを使用できます。

警告 : 転送ヘッダは転送の種類に固有であるため、パススルー (またはコピー) オプションは、転送の種類が同じサービス間でヘッダをコピーする場合に限って使用することをお勧めします。転送の種類が異なるサービス間でヘッダを渡す (またはコピーする) と、渡すヘッダがターゲット転送で受け入れられない場合、エラーが発生することがあります。同じ理由で、ヘッダを設定のオプションを使用してヘッダ名を指定するときは注意が必要です。

[パイプラインを介してすべてのヘッダを渡す] を選択すると、実行時に転送ヘッダ アクションがすべてのヘッダを着信メッセージと発信メッセージとの間でパススルーするように指定されます。ソース ヘッダ セットのすべてのヘッダはターゲット ヘッダ セットにコピーされ、ターゲット ヘッダ セットの既存の値はすべて上書きされます。

ヘッダをコピー オプションを選択すると、実行時に転送ヘッダ アクションが、このオプションが関連付けられている特定のヘッダを着信メッセージと発信メッセージとの間でコピーするように指定されます。

これらのオプションは、自分のシナリオに最適な方法で使用します。どちらのオプションを使用しても、ソース ヘッダ セットのヘッダがターゲット ヘッダ セットにコピーされ、ターゲット セットの既存の値はすべて上書きされます。[パイプラインを介してすべてのヘッダを渡す] オプションは、ヘッダ固有のすべてのヘッダをコピー オプションの前に実行されます。つまり、特定の転送ヘッダ アクションのコンフィグレーションについて [パイプラインを介してすべてのヘッダを渡す] を選択した場合、特定のヘッダのヘッダをコピー オプションを選択する必要はありません。

ただし、[パイプラインを介してすべてのヘッダを渡す] を選択してすべてのヘッダをコピーした後で、特定のヘッダについて [ヘッダを削除] を選択して、個々のヘッダが削除されるようにアクションをコンフィグレーションすることはできます。

ランタイムでの転送ヘッダの設定の使用方法について

前のトピックでは、転送ヘッダ アクションの発信要求 (ルート アクションまたはパブリッシュ アクションでプロキシ サービスによって送信されるメッセージ) と着信応答 (プロキシ サービスがクライアントに返信する応答メッセージ) の転送ヘッダの値のコンフィグレーション方法について説明しました。通常、ヘッダの値は以下のように処理できます。

転送ヘッダ アクションを使用すると、$inbound または $outbound のヘッダを設定、削除、またはパススルーすることができます。これらのヘッダを設定または削除した後に、$inbound または $outbound をログに書き込むと、変更の影響を確認できます。ただし、メッセージが送信されるときに AquaLogic Service Bus バインディング レイヤによって $inbound または $outbound の一部のヘッダが変更または削除され、そのため基礎になる転送でこれらのヘッダの一部が無視されて、その転送固有の値が使用されることがあります。重要な違いは、バインディング レイヤによってヘッダに行われる変更は $inbound および $outbound に対して直接行われますが、転送による変更はメッセージの送信形式のみに影響するという点です。たとえば、発信の Content-Length ヘッダの値を指定することはできますが、そのヘッダはメッセージ送信時にバインディング レイヤによって $outbound から削除されます。そのため、変更は応答パスで確認できます (たとえば、$outbound をログに書き込むと、変更された値を確認できます)。$outboundUser-Agent ヘッダを設定した場合、HTTP 転送ではその設定が無視され、HTTP 転送固有の値が使用されます。ただし、$outbound の値は変更されません。

次の表は、実行時に無視または上書きされる転送ヘッダと、特定の転送ヘッダについて存在するその他の制限を示しています。

表 16-5 転送ヘッダ アクションで指定する転送ヘッダの値の制限

転送

制限の説明

制限による影響を受ける転送ヘッダ

発信要求

着信応答

HTTP(S)

AquaLogic Service Bus ランタイムは、メッセージの送信準備中にバインディング レイヤでこれらのヘッダを上書きする場合がある。これらのヘッダが変更された場合、それに応じて $inbound および $outbound が更新される。

  • Content-Length

  • Content-Type

  • Content-Length

  • Content-Type


基礎になる転送では、メッセージ送信時に、これらのヘッダを無視して別の値を使用する場合がある。転送によって行われた変更は $inbound または $outbound に反映されない。

  • Accept

  • Content-Length

  • Connection

  • Host

  • User-Agent

  • Content-Length

  • Date

  • Transfer-Encoding

JMS

要求が一方向サービスに関連する場合にのみ設定できる。要求/応答サービスに送信する場合、これらのヘッダは実行時に上書きされる1

  • JMSCorrelationID

  • JMSCorrelationID


メッセージの生存時間をミリ秒単位で設定する必要がある。受信メッセージの結果の値は、クライアントが指定する生存時間の値と、送信時またはパブリッシュ時の GMT の合計になる2

  • JMSExpiration

  • JMSExpiration


AquaLogic Service Bus ランタイムはこれらのヘッダを設定する。つまり、設計時にこれらのヘッダについて行った指定はすべて実行時に上書きされる。


  • JMSMessageID

  • JMSRedelivered

  • JMSTimestamp

  • JMSXDeliveryCount

  • JMSXUserID

  • JMS_IBM_PutDate3

  • JMS_IBM_PutTime 3

  • JMS_IBM_PutApplType 3

  • JMS_IBM_Encoding 3

  • JMS_IBM_Character_Set 3

  • JMSMessageID

  • JMSRedelivered

  • JMSTimestamp

  • JMSXDeliveryCount

  • JMSXUserID

  • JMS_IBM_PutDate 3

  • JMS_IBM_PutTime 3

  • JMS_IBM_PutApplType 3

  • JMS_IBM_Encoding 3

  • JMS_IBM_Character_Set 3


IBM MQ ではクライアント アプリケーションから特定のプロパティを設定できないので、IBM MQ 送り先に関連するこれらのヘッダを設定すると、実行時例外が発生する。

  • JMSXDeliveryCount

  • JMSXUserID

  • JMSXAppID

  • JMSXDeliveryCount

  • JMSXUserID

  • JMSXAppID


これらのヘッダは、[パイプラインを介してすべてのヘッダを渡す] オプションも指定されていると削除できない。

  • JMSDeliveryMode

  • JMSExpiration

  • JMSMessageID

  • JMSRedelivered

  • JMSTimestamp

  • JMSXDeliveryCount

  • JMSDeliveryMode

  • JMSExpiration

  • JMSMessageID

  • JMSRedelivered

  • JMSTimestamp

  • JMSXDeliveryCount

  • JMSCorelationID - 着信メッセージに相関 ID が設定されている場合。たとえば、登録済みの JMS ビジネス サービスからの着信応答の場合など。

FTP

制限なし。つまり、ユーザはファイル転送および FTP 転送のヘッダ4 を設定または削除することができ、ユーザによる指定は AquaLogic Service Bus ランタイムで優先される。



File



Email

AquaLogic Service Bus ランタイムはこれらのヘッダを設定する。つまり、設計時にこれらのヘッダについて行った指定はすべて実行時に上書きされる。

  • Content-Type


  • Content-Type



1. つまり、着信応答メッセージに相関 ID が設定されている場合 (たとえば、AquaLogic Service Bus に登録されている JMS ビジネス サービスからの着信応答の場合)、このヘッダは、ランタイムでは無視されるか、または上書きされます。


2. たとえば、JMSExpiration ヘッダを 1000 に設定し、送信時に GMT が 1,000,000 (System.currentTimeMillis() の結果) である場合、JMS メッセージの JMSExpiration プロパティの結果の値は 1,000,1000 になります。


3. JMS_IBM というプレフィックス付きのヘッダ名は、IBM MQ サーバがホストする送り先に関連して使用されます。


4. ビジネス サービスの場合、ヘッダはファイル名です。その値は出力ファイル名に付加されます。プロキシ サービスの場合、ファイル名は、ポーリング対象ファイルの名前です。


 

注意 : inbound コンテキスト変数と outbound コンテキスト変数を設定する場合や、AquaLogic Service Bus Test Console を使用してプロキシ サービスまたはビジネス サービスをテストする場合は、転送ヘッダとメタデータの設定のときと同じ制限が適用されます。詳細については、以下のトピックを参照してください。

 


検証

XML スキーマ要素または WSDL リソースに対して、XPath 式で選択した要素を検証するには、検証アクションを使用します。検証アクションをコンフィグレーションするには、以下の手順を実行します。

  1. [アクションの追加] をクリックし、[検証する] を選択します。
  2. 検証アクションが表示されます。このアクションには以下の機能があります。

    削除アイコン


     
  3. [XPath] をクリックします。[XPath 式エディタ] ページが表示されます。詳細については、「XPath 式エディタの使用」を参照してください。
  4. XPath 式を編集したら、[変数] フィールドに変数の名前を入力します。この変数には、検証する要素が格納されます。
  5. [リソース] をクリックし、[WSDL] または [スキーマ] を選択します。選択したリソースの種類に応じて、[WSDL ブラウザ] または [XML スキーマ ブラウザ] が表示されます。
  6. WSDL または XML スキーマを選択し、WSDL または XML スキーマの型または要素を選択して、[送信] をクリックします。
  7. この検証の結果 (ブール結果) を保存する場合は、[検証結果を変数に保存する] を選択し、結果を保存する変数の名前を入力します。
  8. また、WSDL 要素や XML スキーマ要素に対する検証が失敗したときにエラーを発生させる場合は、[検証の失敗時にエラーを発生させる] を選択します。

  9. このアクションのコンフィグレーションが完了したら、他のアクションのコンフィグレーションを続行するか、または「ステージ コンフィグレーションの編集」の説明に従ってステージ コンフィグレーションの保存を行います。

注意 : 検証アクションはグローバル要素しか検証できません。AquaLogic Service Bus はローカル要素に対する検証に対応していません。

 

ナビゲーションのスキップ  ページの先頭 前 次