第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 メッセージスタイルを使用して送信されることを指定します。