第7章 SOAP 1.2 メッセージの使用
概要
Apache CXF は、SOAP ヘッダーを使用しない SOAP 1.2 バインディングを生成するためのツールを提供します。任意のテキストまたは XML エディターを使用して、バインディングに SOAP ヘッダーを追加できます。
7.1. WSDL ドキュメントへの SOAP 1.2 バインディングの追加
wsdl2soap の使用
wsdl2soap を使用するには、Apache CXF ディストリビューションをダウンロードする必要があります。
wsdl2soap
を使用して SOAP 1.2 バインディングを生成するには、コマンド wsdl2soap
-iport-type-name-bbinding-name-soap12-doutput-directory-ooutput-file-nsoap-body-namespace-style (document/rpc)-use (literal/encoded)-v-verbose-quietwsdlurl を使用します。ツールには以下の引数が必要です。
オプション | 解釈 |
---|---|
|
バインディングが生成される |
| 生成されたバインディングが SOAP 1.2 を使用することを指定します。 |
wsdlurl |
|
このツールには、次の任意の引数があります。
オプション | 解釈 |
---|---|
| 生成される SOAP バインディングの名前を指定します。 |
| 生成されたバインディングが SOAP 1.2 を使用することを指定します。 |
| 生成される WSDL ファイルを配置するディレクトリーを指定します。 |
| 生成される WSDL ファイルの名前を指定します。 |
| スタイルが RPC の場合は、SOAP ボディーの名前空間を指定します。 |
| SOAP バインディングで使用するエンコードスタイル (ドキュメントまたは RPC) を指定します。デフォルトはドキュメントです。 |
| SOAP バインディングで使用するバインディングの使用 (エンコードまたはリテラル) を指定します。デフォルトはリテラルです。 |
| ツールのバージョン番号を表示します。 |
| コード生成プロセス中にコメントを表示します。 |
| コード生成プロセス中のコメントを非表示にします。 |
-i
port-type-name および wsdlurl 引数が必要です。-style rpc
引数を指定すると、-n
soap-body-namspace 引数も必要になります。他のすべての引数は任意であり、任意の順序でリストできます。
wsdl2soap
は、document/encoded
SOAP 1.2 バインディングの生成をサポートしません。
例
システムに、注文を受け取り、注文を処理するための単一の操作を提供するインターフェイスがある場合、例7.1「注文システムインターフェイス」 に示されているものと同様の WSDL フラグメントで定義されます。
例7.1 注文システムインターフェイス
<?xml version="1.0" encoding="UTF-8"?> <definitions name="widgetOrderForm.wsdl" targetNamespace="http://widgetVendor.com/widgetOrderForm" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://widgetVendor.com/widgetOrderForm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://widgetVendor.com/types/widgetTypes" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <message name="widgetOrder"> <part name="numOrdered" type="xsd:int"/> </message> <message name="widgetOrderBill"> <part name="price" type="xsd:float"/> </message> <message name="badSize"> <part name="numInventory" type="xsd:int"/> </message> <portType name="orderWidgets"> <operation name="placeWidgetOrder"> <input message="tns:widgetOrder" name="order"/> <output message="tns:widgetOrderBill" name="bill"/> <fault message="tns:badSize" name="sizeFault"/> </operation> </portType> ... </definitions>
orderWidgets 用に生成された SOAP バインディングは 例7.2「orderWidgets の SOAP 1.2 バインディング」 に記載されています。
例7.2 orderWidgets の SOAP 1.2 バインディング
<binding name="orderWidgetsBinding" type="tns:orderWidgets"> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="placeWidgetOrder"> <soap12:operation soapAction="" style="document"/> <input name="order"> <soap12:body use="literal"/> </input> <output name="bill"> <wsoap12:body use="literal"/> </output> <fault name="sizeFault"> <soap12:body use="literal"/> </fault> </operation> </binding>
このバインディングは、メッセージが document/literal
メッセージスタイルを使用して送信されることを指定します。