Menu Close

第6章 SOAP 1.1 メッセージの使用

概要

Apache CXF は、SOAP ヘッダーを使用しない SOAP 1.1 バインディングを生成するツールを提供します。しかし、テキストまたは XML エディターを使用して SOAP ヘッダーをバインディングに追加できます。

6.1. SOAP 1.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 ディストリビューションをダウンロードする必要があります。

このコマンドには、次のオプションがあります。

オプション解釈

-i port-type-name

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

wsdlurl

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

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

オプション解釈

-b binding-name

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

-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

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

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

重要

wsdl2soapdocument/encoded SOAP バインディングの生成をサポートしません。

システムに、注文を受け取り、注文を処理するための 1 つのオペレーションを提供するインターフェイスがある場合、例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 メッセージスタイルを使用して送信されることを指定します。