フィルタおよび割当てのためのヘッダー・アクセス方法

フィルタを定義するため、または割当てソースや割当てターゲットを定義するためにメディエータから式ビルダーを起動すると、WSDLファイルが解析されます。その際に、図20-34に示すように、現在のルーティング・ルール操作のSOAPヘッダーが自動的に検出され、このSOAPヘッダーが変数として、inフォルダまたはoutフォルダにheader./ns_elementName/のように表示されます。ここで、nsはネームスペース接頭辞、elementNameはヘッダー・スキーマのルート要素名です。

次のシナリオで詳細を説明します。

シナリオ1: ネームスペース接頭辞wsseおよびns1がすでに定義されている場合

ネームスペース接頭辞wsseおよびns1がWSDLファイルまたは.mplanファイルにすでに定義されているとします。この場合、XPath式は次のように記述できます。

$in.header.wsse_Security/wsse:Security/ns1:Foo/Priority

シナリオ2: WSDLファイルにネームスペースが事前定義されていないスキーマの場合

WSDLファイルにネームスペースが事前定義されていないスキーマを使用するとします。この場合、式ビルダーでは、接頭辞のかわりに{full_namespace}を入力できる機能が提供されます。さらに、式ビルダーによって一意の接頭辞が生成され、接頭辞の定義が.mplanファイルに追加されます。

たとえば、式ビルダーに次の例に示す式を入力するとします。

$in.header.{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-sec
ext-1.0.xsd}_Security/
{"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xs
d"}:
Security/{"http://www.globalcompany.com/ns/OrderBooking"}:Foo/Priority

.mplanファイルには、次の例に示すコンテンツが含まれています。

xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
secext-1.0.xsd"
xmlns:ns2="http://www.globalcompany.com/ns/OrderBooking"
...
expression="$in.header.ns1_Security/ns1:Security/ns2:Foo/Priority"

図20-34 「式ビルダー」ダイアログ - 自動ヘッダー検出

図20-34の説明が続きます
「図20-34 「式ビルダー」ダイアログ - 自動ヘッダー検出」の説明

デフォルトでは、SOAPヘッダーはメディエータを介して渡されません。passThroughHeaderエンドポイント・プロパティを、対応するメディエータ・ルーティング・サービスに追加する必要があります。

<property name="passThroughHeader">true</property>

たとえば、このプロパティを追加するには、composite.xmlファイルを次の例に示すように変更できます。

<component name="Mediator1"> 
     <implementation.mediator src="Mediator1.mplan"/>
     <property name="passThroughHeader">true</property>
</component>

ヘッダーを渡すには、ソースとターゲットのQName(名前とネームスペース)が同じである必要があります。ソースとターゲットのQNameが異なる場合は、トランスフォーメーションまたはパートレベルの割当てのいずれかを実行する必要があります。

(トランスフォーメーションまたはassignを使用しない)passthroughメディエータの場合、ソースとターゲットのパートQNameが同じでない場合は、メディエータがメッセージ・ペイロードをターゲット・サービスに渡す際にエラーが発生していない点に注意する必要があります。ただし、この処理はターゲット・サービスでエラーになる場合があります。これは、メッセージ・ペイロードはターゲット・サービスのメッセージ構造に従って再構築されていないためです。

ノート:

  • このユーザー・インタフェースはSOAP 1.1およびSOAP 1.2の両方をサポートします。

  • 自動ヘッダー検出のためには、メディエータ・サービス・コンポーネントの作成時に具体的なWSDLファイルを使用する必要があります。

  • 割当てはフィルタの後に実行されます。このため、カスタム・ヘッダーで値を割り当てている場合、特定の割当てはフィルタに対して表示されません。