Menu Close
第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.1 バインディングを生成するには、コマンド 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 ボディー namespace を指定します。 |
| SOAP バインディングで使用するエンコーディングスタイル (document または RPC) を指定します。デフォルトは document です。 |
| SOAP バインディングで使用するバインディングの使用 (エンコードまたはリテラル) を指定します。デフォルトは literal です。 |
| ツールのバージョン番号を表示します。 |
| コード生成プロセスでコメントを表示します。 |
| コード生成プロセスでコメントを非表示にします。 |
-i
port-type-name および wsdlurl 引数が必要です。-style rpc
引数を指定すると、-n
soap-body-namspace 引数も必要になります。その他の引数はすべて任意であり、任意の順序でリストできます。
wsdl2soap
は document/encoded
SOAP 1.2 バインディングの生成をサポートしません。
例
システムに、注文を受け取り、注文を処理するための 1 つのオペレーションを提供するインターフェイスがある場合、例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
メッセージスタイルを使用して送信されることを指定します。