Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SOAP メッセージのバリエーション

この章では、SOAP メッセージの主なバリエーションと、Caché Web サービスおよび Web クライアントでのそれらの指定方法を説明します。

Caché Web サービスまたは Web クライアントでは、いくつかのキーワードと 1 つのパラメータによって各 Web メソッドで使用されるメッセージ・バリエーションを指定します。Web サービスを手動で作成した場合は、通常はこれらの項目の既定値が適した値となります。一方、Web サービスまたは Web クライアントを SOAP ウィザードを使用して作成した場合は、WSDL による要求に従って値が設定されます。ただし、状況によっては、特定のメッセージ・バリエーションを選択することが必要になることがあります。

この章は、以下のセクションで構成されます。

概要

SOAP メッセージのモードは以下のいずれかとなり、WSDL によって形式的に決定されます。

  • Document/literal — これは、Caché Web サービスの既定のメッセージ・モードであり、最も広く使用されるモードです。

    このメッセージ・モードでは、ドキュメントスタイルのバインディングとリテラル・エンコード形式を使用します。バインディングとエンコード形式については、サブセクションで簡単に説明します。

  • RPC/encoded — これは、2 番目に広く使用されるモードです。

  • RPC/literal — このモードは、IBM によって広く使用されます。

  • Document/encoded — このモードが使用されることは非常にまれなため、お勧めしません。また、このモードは、WS-I Basic Profile 1.0 に準拠していません。

非公式には、document/literal メッセージには追加のバリエーションが考えられます。それらは、wrapped (Caché での既定値) または unwrapped のいずれかです。ラップされたメッセージでは、メッセージにサブパートを含む単一のパートがあります。これは、複数の引数を取るメソッドの場合に該当します。ラップされたメッセージでは、引数はこのメッセージ内のサブパートになります。ラップされていないメッセージでは、メッセージに複数のパート (引数ごとに 1 つ) があります。

RPC メッセージには、複数のパートが存在する場合があります。

バインディング・スタイル

各 Web メソッドは、Webメソッドの出入力に対するバインディング・スタイルを持ちます。バインディング・スタイルは、ドキュメントまたは RPC のいずれかです。バインディング・スタイルは、WSDL バインディングを SOAP メッセージに変換する方法を決定します。また、SOAP メッセージの本文の形式も制御します。

エンコード形式

各 Web メソッドは、エンコード形式も持ちます。エンコード形式は、リテラルまたはエンコード (SOAP エンコード) のいずれかです。SOAP 1.1 と SOAP 1.2 では、エンコードの詳細が少し異なります。リテラル形式と SOAP エンコード形式の違いの詳細は、"オブジェクトの XML への投影" のドキュメントを参照してください。

メッセージ・バリエーションの決定方法

Caché Web サービスまたは Web クライアントでは、サービス・クラスやクライアント・クラスの詳細によって、各 Web メソッドで使用されるメッセージ・モードが制御されます。これらの詳細は以下のとおりです。

  • SoapBindingStyle クラス・キーワードおよび SoapBindingStyle メソッド・キーワード。メソッド・キーワードが優先されます。

  • SoapBodyUse クラス・キーワードおよび SoapBodyUse メソッド・キーワード。メソッド・キーワードが優先されます。

  • ARGUMENTSTYLE クラス・パラメータ。

以下のテーブルは、Caché Web メソッド用のメッセージ・モードの決定方法をまとめたものです。

メッセージ・モード SoapBindingStyle SoapBodyUse ARGUMENTSTYLE
wrapped document/literal document (既定) literal (既定) wrapped (既定)
unwrapped document/literal document literal メッセージ
rpc/encoded rpc encoded 無視
rpc/literal rpc literal 無視
document/encoded document encoded 無視

SOAP ウィザードを使用して Web サービス・クラスまたは Web クライアント・クラスを生成する場合、ウィザードでは、開始元の WSDL に応じてそれらのキーワードおよびパラメータの値が設定されます。

Important:

手動で作成した Web サービスでは、通常はこれらの既定値が最適な値となります。

SOAP ウィザードを使用して WSDL から Web クライアントまたは Web サービスを作成すると、Caché は、その WSDL に応じて、これらのキーワードを設定します。この値を変更すると、Web クライアントまたは Web サービスは機能しなくなる場合があります。

メッセージ・バリエーションの例

ここでは、参考情報として、各モードのメッセージの例を紹介します (ただし、document/encoded は非推奨のため除きます)。

また、付録 “生成された WSDL の詳細” の “<message>” のセクションも参照してください。

Wrapped Document/Literal

これは、最も一般的なメッセージ・スタイルであり、Caché Web サービスの既定のメッセージ・スタイルです。

<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' 
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                   xmlns:s='http://www.w3.org/2001/XMLSchema'>
  <SOAP-ENV:Body>
    <MyMethod xmlns="http://www.demoservice.org">
        <A>stringA</A>
        <B>stringB</B>
        <C>stringC</C>
    </MyMethod>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Message/Unwrapped Document/Literal

これは、前のスタイルを少し変化させたものです。

<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                   xmlns:s='http://www.w3.org/2001/XMLSchema'>
  <SOAP-ENV:Body>
      <A xmlns="http://www.demoservice.org">stringA</A>
      <B xmlns="http://www.demoservice.org">stringB</B>
      <C xmlns="http://www.demoservice.org">stringC</C>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

RPC/Encoded

これは、2 番目に広く使用されるスタイルです。以下に SOAP 1.1 の rpc/encoded メッセージを示します。

<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                   xmlns:s='http://www.w3.org/2001/XMLSchema'
                   xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
                   xmlns:tns='http://www.demoservice.org'
                   xmlns:types='http://www.demoservice.org'>
  <SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
    <types:MyMethod>
      <A>stringA</A>
      <B>stringB</B>
      <C>stringC</C>
    </types:MyMethod>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP 1.2 では、エンコードの規則が異なるため、以下のようにメッセージが異なります。

<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://www.w3.org/2003/05/soap-envelope'
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                   xmlns:s='http://www.w3.org/2001/XMLSchema'
                   xmlns:SOAP-ENC='http://www.w3.org/2003/05/soap-encoding'
                   xmlns:tns='http://www.demoservice.org'
                   xmlns:types='http://www.demoservice.org'>
  <SOAP-ENV:Body>
    <types:MyMethod SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
      <A>stringA</A>
      <B>stringB</B>
      <C>stringC</C>
    </types:MyMethod>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

RPC/Literal

rpc/literal メッセージの例を次に示します。

<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                   xmlns:s='http://www.w3.org/2001/XMLSchema'
                   xmlns:tns='http://www.demoservice.org'>
  <SOAP-ENV:Body>
    <tns:MyMethod>
      <tns:A>stringA</tns:A>
      <tns:B>stringB</tns:B>
      <tns:C>stringC</tns:C>
    </tns:MyMethod>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
FeedbackOpens in a new tab