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 を使用します。ツールには以下の引数が必要です。

オプション解釈

-i port-type-name

バインディングが生成される portType 要素を指定します。

-soap12

生成されたバインディングが SOAP 1.2 を使用することを指定します。

wsdlurl

portType 要素定義が含まれる WSDL ファイルのパスと名前。

ツールには、次のオプション引数があります。

オプション解釈

-b binding-name

生成された SOAP バインディングの名前を指定します。

-soap12

生成されたバインディングが SOAP 1.2 を使用することを指定します。

-d output-directory

生成された WSDL ファイルを配置するディレクトリーを指定します。

-o output-file

生成された WSDL ファイルの名前を指定します。

-n soap-body-namespace

スタイルが RPC の場合、SOAP ボディー namespace を指定します。

-style (document/rpc)

SOAP バインディングで使用するエンコーディングスタイル (document または RPC) を指定します。デフォルトは document です。

-use (literal/encoded)

SOAP バインディングで使用するバインディングの使用 (エンコードまたはリテラル) を指定します。デフォルトは literal です。

-v

ツールのバージョン番号を表示します。

-verbose

コード生成プロセスでコメントを表示します。

-quiet

コード生成プロセスでコメントを非表示にします。

-i port-type-name および wsdlurl 引数が必要です。-style rpc 引数を指定すると、-n soap-body-namspace 引数も必要になります。その他の引数はすべて任意であり、任意の順序でリストできます。

重要

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