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