ユーザーガイド > Webベースのデータソースの構成 > WSDLベアおよびラッパーパラメーターのスタイルについて
 
WSDLベアおよびラッパーパラメーターのスタイルについて
WSDLベアおよびラップ適用パラメーターのスタイルは、レスポンスで返されるデータの消費を制御します。通常、レスポンス値が小さいことが予想されるパラメーターはWSDLヘッダーに追加できます。ただし、パラメーターのレスポンスで大量のデータが返されると予想される場合は、パラメーターまたはパラメーターのセットをWSDLの本文に配置することをお勧めします。
TDVは、XMLベースのWebサービスのオープンソース標準に準拠しています。Oracleは、標準について詳しく説明した有用なリファレンスコンテンツを提供しています。このセクションでは、WSDLでベアパラメーターとラップ適用パラメーターを使用するためにTDVがこれらの標準をどのように解釈するかを要約します。
スタイル
説明
ラップ適用
BODYの場所を使用する複数のパラメーター用。
ラッパー要素はSOAP BODYの子であり、パラメーター要素はラッパー要素の子です。
ベア
BODYの場所を使用するパラメーターが1つのみの場合、その要素はSOAP BODYの唯一の子です。
同じ方向の他のすべてのパラメーターは、別の場所(HEADERなど)にマップする必要があります。
ラップ適用
ラップ適用パラメータースタイルは、リクエストメッセージですべての入力パラメーターが単一の要素にラップされ、レスポンスメッセージですべての出力パラメーターが単一の要素にラップされることを意味します。スタイルをRPCに設定する場合は、ラップ適用パラメータースタイルを使用する必要があります。ラップ適用スタイルを使用すると、メッセージのルート要素が操作の名前を表すこと、およびルート要素の子を操作のシグネチャのパラメーターに直接マッピングする必要があることがWebサービスプロバイダーに通知されます。
ラップ適用では、すべてのサブパラメーターが最初のレベルに存在し、クライアントによってそれらは別の上位要素に自動的にマッピングされます。
ラップされたリクエストには、inおよびin/out非ヘッダーパラメーターごとにプロパティが含まれています。メソッドのプロパティは、out非ヘッダーパラメーターおよびin/out非ヘッダーパラメーターのそれぞれの値を返します。リクエスト内のプロパティの順序は、メソッドシグネチャ内のパラメーターの順序と同じです。レスポンス内のプロパティの順序は、戻り値に対応するプロパティの後に、メソッドシグネチャのパラメーターと同じ順序でパラメーターのプロパティが続きます。
ほとんどのWebサービスエンジンは、ラッパースタイルによる位置パラメーターバインディングを使用します。サービスシグネチャが変わった場合は、クライアントも変更する必要があります。ラップスタイルでは、パラメーターに対応する要素をオプションとしてスキーマで定義できる場合でも、すべてのパラメーターがXMLメッセージに存在する必要があります。
ラップされたリクエストについて:
リクエストにはメソッドと同じ名前を付ける必要があり、ラッパーレスポンスBeanクラスには、メソッドと同じ名前に「Response」サフィックスを付ける必要があります。
WSDLにメッセージ部分を1つだけ含めることができます。これにより、メッセージ(パラメーターを持つメソッド要素)が単一のスキーマを含む1つのXMLドキュメントで表されることになります。
パラメーターに対応する要素をオプションとしてスキーマで定義できる場合でも、XMLメッセージにパラメーターが存在する必要があります。
ベア
ベアのパラメータースタイルは、各パラメーターがメッセージルートの子要素としてメッセージ本文に配置されることを意味します。ベアを使用すると、内部にサブパラメーターを含む上位の要素パラメーターのみが存在します。この1つのベアパラメーターが直接送信されます。
特定のSOAPメッセージが有効かどうかは、準拠するWSDLによって決まります。ベアスタイルを使用するWebサービスは、複数のパラメーターを持つことができます。単一のパラメーターが渡されるのは、Webサービスの実際の呼び出しのみです。
XMLベースのWebサービス用のJava APIでは、ベアマッピングのパラメーターが次のすべての基準を満たす必要があります。
最大で1つのinまたはin/out非ヘッダーパラメーターが必要です。
戻り値の型がvoid以外である場合は、in/outまたはout非ヘッダーパラメーターが含まれていない必要があります。
戻り値の型がvoidの場合、最大で1つのin/outまたはout非ヘッダーパラメーターが必要です。
バインディングは常に名前ベースであるため、新しいオプション要素を追加してもクライアントには影響しません。Webサービスのスキーマによって定義されたコントラクトが必要になるのを回避するために、必要に応じてラッパールート要素のすべての子要素を定義できます。オプション要素は、nillableにする必要があります。