WS-Addressing ヘッダ要素の追加と使用
このトピックでは、WS-Addressing ヘッダ要素の追加方法および使用方法を説明します。
この標準の詳細は、"SOAP 標準" を参照してください。
"フォルト発生時の WS-Addressing ヘッダ要素の追加" も参照してください。
概要
SOAP 1.1 と SOAP 1.2 の WS-Addressing 規格で定められているように、WS-Addressing ヘッダ要素を SOAP メッセージに追加することができます。これには、以下のいずれかを実行します。
-
Web サービスまたはクライアントの WSADDRESSING パラメータを "AUTO" に指定します。このオプションにより、WS-Addressing ヘッダ要素の既定のセットが追加されます。これについては、次のサブセクションで説明します。
-
次のサブセクションで説明するように、WSADDRESSING を "OFF" (既定値) に指定し、WS-Addressing ヘッダ要素を手動で追加します。
-
WS-Addressing ヘッダ要素を含むように Web サービスまたはクライアントのポリシーを作成します。そのためには、Web サービスまたはクライアントを参照する構成クラスを作成およびコンパイルし、このポリシー内で WS-Addressing を有効にします。"Web サービスの保護" を参照してください。
このようなポリシーを添付すると、InterSystems IRIS® データ・プラットフォームでは、同じ既定の WS-Addressing ヘッダ要素のセットが既定で使用されるようになります。WS-Addressing ヘッダ要素を手動で作成して追加することも可能です。
このようなポリシーを添付すると、WSADDRESSING の値は無視されます。
WSDL への影響
Web サービスの場合、WSADDRESSING パラメータは、生成された WSDL に影響しません。同様に、Web クライアントに対してこれを指定した場合、WSDL を変更する必要はありません。
WS-Addressing を参照するポリシー文は、WSDL に影響します。ポリシー文を追加する場合、Web クライアントの再生成が必要です。InterSystems IRIS Web クライアントでは、クライアント・クラスを再生成する代わりに、WS-Addressing ポリシー文をクライアントに添付するだけですみます。
既定の WS-Addressing ヘッダ要素
このセクションでは、既定の WS-Addressing ヘッダ要素の例について説明します。
要求メッセージにおける既定の WS-Addressing ヘッダ要素
このセクションで前に説明したとおりに WS-Addressing を有効にすると、Web クライアントの要求メッセージには次の WS-Addressing ヘッダ要素が含まれます。
-
To : 宛先アドレス
-
Action : SoapAction
-
MessageID : 一意の UUID
-
ReplyTo : 匿名
以下はその例です。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='https://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='https://www.w3.org/2001/XMLSchema-instance'
xmlns:s='https://www.w3.org/2001/XMLSchema'
xmlns:wsa='https://www.w3.org/2005/08/addressing'>
<SOAP-ENV:Header>
<wsa:Action>https://www.myapp.org/GSOAP.DivideAddressingWS.Divide</wsa:Action>
<wsa:MessageID>urn:uuid:91576FE2-4533-43CB-BFA1-51D2B631453A</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address xsi:type="s:string">https://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:To>https://devsys:8080/csp/mysamples/GSOP.DivideAddressingWS.cls</wsa:To>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<Divide xmlns="https://www.myapp.org">
<arg1 xsi:type="s:decimal">1</arg1>
<arg2 xsi:type="s:decimal">7</arg2>
</Divide>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
応答メッセージにおける既定の WS-Addressing ヘッダ要素
このセクションで前に説明したとおりに WS-Addressing を有効にすると、要求メッセージに WS-Addressing ヘッダ要素が含まれているときに、Web サービスの応答メッセージには次の WS-Addressing ヘッダ要素が含まれます。
-
To : 匿名
-
Action : SoapAction_"Response"
-
MessageID : 一意の UUID
-
RelatesTo : 要求の MessageID
以下はその例です。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='https://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='https://www.w3.org/2001/XMLSchema-instance'
xmlns:s='https://www.w3.org/2001/XMLSchema'
xmlns:wsa='https://www.w3.org/2005/08/addressing'>
<SOAP-ENV:Header>
<wsa:Action>https://www.myapp.org/GSOAP.DivideAddressingWS.DivideResponse</wsa:Action>
<wsa:MessageID>urn:uuid:577B5D65-D7E3-4EF7-9BF1-E8422F5CD739</wsa:MessageID>
<wsa:RelatesTo>urn:uuid:91576FE2-4533-43CB-BFA1-51D2B631453A</wsa:RelatesTo>
<wsa:To>https://www.w3.org/2005/08/addressing/anonymous</wsa:To>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<DivideResponse xmlns="https://www.myapp.org">
<DivideResult>.1428571428571428571</DivideResult>
</DivideResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
手動での WS-Addressing ヘッダ要素の追加
既定の WS-Addressing ヘッダ要素を使用する代わりに、独自の要素を手動で作成して追加することができます。そのためには、以下の操作を実行します。
-
%SOAP.Addressing.PropertiesOpens in a new tab のインスタンスを作成し、必要に応じてプロパティを指定します。詳細は、クラスリファレンスを参照してください。
-
Web サービスまたはクライアントの AddressingOut プロパティを %SOAP.Addressing.PropertiesOpens in a new tab のこのインスタンスと等しくなるように設定します。
AddressingOut プロパティを設定すると、Web サービスまたは Web クライアントでは、添付されたポリシーで指定されている WS-Addressing 要素ではなく、このプロパティの WS-Addressing ヘッダ要素が使用されます。
WS-Addressing ヘッダ要素の処理
InterSystems IRIS Web サービスまたは Web クライアントで WS-Addressing ヘッダ要素を含むメッセージを受信すると、サービスまたはクライアントの AddressingIn プロパティは、%SOAP.Addressing.PropertiesOpens in a new tab のインスタンスと等しくなるように更新されます。Web サービスまたは Web クライアントは、その AddressingIn プロパティの詳細を検証できるようになります。
%SOAP.Addressing.PropertiesOpens in a new tab の詳細は、クラス・リファレンスを参照してください。