7.2. SOAP 1.2 メッセージへのヘッダーの追加
概要 リンクのコピーリンクがクリップボードにコピーされました!
SOAP メッセージヘッダーは、soap12:header
要素を SOAP 1.2 メッセージに追加することで定義されます。soap12:header
要素は、バインディングの input
、output
、および fault
要素の任意の子です。SOAP ヘッダーは親メッセージの一部になります。SOAP ヘッダーは、メッセージとメッセージ部分を指定することによって定義されます。各 SOAP ヘッダーには 1 つのメッセージ部分しか含めることができませんが、必要な数のヘッダーを挿入できます。
構文 リンクのコピーリンクがクリップボードにコピーされました!
SOAP ヘッダーを定義するための構文を 例7.3「SOAP ヘッダー構文」 に示します。
例7.3 SOAP ヘッダー構文
soap12:header
要素の属性は、表7.1「soap12:header
属性」 で説明されています。
属性 | 説明 |
---|---|
ヘッダーに挿入されている部分が取得されるメッセージの修飾名を指定する必須属性。 | |
SOAP ヘッダーに挿入されるメッセージ部分の名前を指定する必須属性。 | |
メッセージ部分をエンコード規則を使用してエンコードするかどうかを指定します。 | |
メッセージの作成に使用されるエンコード規則を指定します。 | |
|
本文とヘッダーの間でメッセージを分割 リンクのコピーリンクがクリップボードにコピーされました!
SOAP ヘッダーに挿入されるメッセージ部分は、コントラクトからの任意の有効なメッセージ部分にすることができます。これは、SOAP 本体として使用されている親メッセージの一部である場合もあります。同じメッセージで情報を 2 回送信する可能性は低いため、SOAP 1.2 バインディングは、SOAP 本文に挿入されるメッセージ部分を指定する手段を提供します。
soap12:body
要素には、部分名のスペース区切りリストを取る任意の属性 parts
があります。parts
が定義されると、リストされたメッセージ部分のみが SOAP 1.2 メッセージのボディーに挿入されます。その後、残りの部分をメッセージのヘッダーに挿入できます。
親メッセージの一部を使用して SOAP ヘッダーを定義すると、Apache CXF が自動的に SOAP ヘッダーを入力します。
例 リンクのコピーリンクがクリップボードにコピーされました!
例7.4「SOAP ヘッダーを使用した SOAP 1.2 バインディング」 は、例7.1「注文システムインターフェイス」 に示されている orderWidgets
サービスの変更バージョンを示しています。このバージョンは変更され、各注文のリクエストおよび応答のヘッダーに xsd:base64binary
値が配置されるようになります。ヘッダーは、widgetKey
メッセージの keyVal
部分として定義されます。この場合、ヘッダーは入力メッセージまたは出力メッセージの一部ではないため、ヘッダーを作成するためのアプリケーションロジックを追加する必要があります。
例7.4 SOAP ヘッダーを使用した SOAP 1.2 バインディング
例7.4「SOAP ヘッダーを使用した SOAP 1.2 バインディング」 を変更して、例7.5「SOAP ヘッダーを使用した orderWidgets の SOAP 1.2 バインディング」 に示すように、ヘッダー値が入力メッセージと出力メッセージの一部になるようにします。この場合、keyVal
は入出力メッセージの一部です。soap12:body
要素では、parts
属性によって、keyVal
がボディーに挿入されてはならないことが指定されます。ただし、ヘッダーに挿入されます。
例7.5 SOAP ヘッダーを使用した orderWidgets の SOAP 1.2 バインディング