Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編

[目次][用語][索引][前へ][次へ]

2.6.1 Webサービスを利用したサービス部品の適用範囲

Webサービスを利用したサービス部品の適用範囲を次に示します。

ポイント
このマニュアルで説明するWSDLおよびXMLスキーマでは,特定のプリフィックスと名前空間URIを対応づけて記述しています。プリフィックスと名前空間URIの対応を次の表に示します。

 

表2-10 プリフィックスと名前空間URIの対応

プリフィックス 名前空間URI
wsdl http://schemas.xmlsoap.org/wsdl/
xsd http://www.w3.org/2001/XMLSchema
soap http://schemas.xmlsoap.org/wsdl/soap/
soap12 http://schemas.xmlsoap.org/wsdl/soap12/
wsi http://ws-i.org/profiles/basic/1.1/xsd
<この項の構成>
(1) 前提となる仕様
(2) SOAPメッセージの形式
(3) WSDLの定義時の注意(SOAP1.1モード)
(4) WSDLの定義時と使用時の注意(SOAP1.1/1.2併用モード)
(5) WSDL1.1仕様のサポート範囲
(6) ライフサイクル

(1) 前提となる仕様

Webサービスを利用したサービス部品の前提仕様について,SOAP1.1モードの場合およびSOAP1.1/1.2併用モードの場合に分けて説明します。

(2) SOAPメッセージの形式

SOAPメッセージは,SOAPヘッダとSOAPボディで構成されます。SOAPヘッダにはメッセージの付加的な情報(識別情報など)が含まれ,SOAPボディにはメッセージ本体が含まれています。

Webサービスを利用したサービス部品では,SOAPメッセージの形式として次の条件を満たしている必要があります。

なお,08-53よりも前のバージョンのサービスプラットフォームでは,soap:header要素を定義したWSDLを基にSOAPアダプタを作成できますが,soap:header要素は無視されます。

(3) WSDLの定義時の注意(SOAP1.1モード)

SOAP1.1モードを使用する場合のWSDLの記述形式,およびWSDL定義時の注意事項について説明します。WSDL1.1仕様のサポート範囲については,「2.6.1(5) WSDL1.1仕様のサポート範囲」を参照してください。

(a) wsdl:types要素

wsdl:types要素は,SOAPメッセージで使用する型に関する情報を定義する要素です。wsdl:types要素は,次に示す規則に従って記述してください。

(b) xsd:schema要素

xsd:schema要素は,XMLスキーマを記述する要素です。xsd:schema要素は,wsdl:types 要素の子要素として記述してください。XMLスキーマを記述するときの規則については,「2.6.5 XMLスキーマの適用範囲」を参照してください。

(c) wsdl:import要素

wsdl:import要素は,WSDLをインポートする場合に定義する要素です。wsdl:definitions要素の子要素として記述してください。wsdl:import要素は,次に示す規則に従って記述してください。

(d) soap:binding要素

soap:binding要素は,SOAPバインディングを定義する要素です。soap:binding要素は,次に示す規則に従って記述してください。

(e) wsdl:operation要素

wsdl:operation要素は,次に示す規則に従って記述してください。

(f) soap:operation要素

soap:operation要素は,SOAPバインディングでのオペレーションの情報を定義する要素です。soap:operation要素は,次に示す規則に従って記述してください。

(g) soap:body要素

soap:body要素は,SOAPメッセージのsoap:body要素以下のメッセージを定義する要素です。soap:body要素は,次に示す規則に従って記述してください。

なお,style属性が「document」の場合,parts属性を記述することはできますが,無視されます。

(h) wsdl:fault要素

wsdl:fault要素はフォルトを定義する要素です。wsdl:fault要素は,次に示す規則に従って記述してください。

(i) soap:fault要素

soap:fault要素は,SOAPメッセージのsoap:fault要素に含まれるdetail子要素以下のメッセージを定義する要素です。soap:fault要素は,次に示す規則に従って記述してください。

フォルトを使用する場合の条件
サービス部品から返されたSOAP Faultでは,次の条件をすべて満たす場合にフォルト名がfaultCodeに設定され,フォルトとして扱われます。
  • サービス部品側にSOAP通信基盤(Web Services)を使用していること。
  • WSDLフォルト名(wsdl:fault要素のname属性値)と,schema(wsdl:types内)に定義された例外型complexTypeを指すelement名が,名前空間を含めて一致していること。
これらの条件を満たしていないWSDLを利用する場合で,サービス部品から返されたSOAP Faultをフォルトとして扱いたいときは,SOAP Fault動作定義ファイルを定義してユーザ定義例外となるように設定します。
注※
element名とは,「wsdl:faultが参照するwsdl:part要素が,element属性を用いて指定する要素」のことです。WSDLを次の順にたどって特定できる要素を指します。
1.wsdl:fault
2.wsdl:message(この要素をたどらない場合もあります)
3.wsdl:part
4.xsd:element
なお,サービスプラットフォームの開発支援コマンドであるJava2WSDLコマンドを使用して,オペレーションのstyle属性が「rpc」のWSDLファイルを生成した場合,element属性ではなく,type属性で参照するWSDLファイルが生成されます。
そのため,生成されたWSDLファイルをそのまま使用しないで,修正および再生成してから使用します。WSDLファイルの修正および再生成の方法については,「4.3.2 サービス部品電文を作成する(Webサービスの場合)」の注意事項を参照してください。
サービスプラットフォームでフォルトを使用する場合,documentスタイルのWSDLを使用することを推奨します。
(j) soap:header要素

soap:header要素は,SOAPメッセージのsoap:header要素以下のメッセージを定義する要素です。soap:header要素は,次に示す規則に従って記述してください。

(k) wsdl:service要素

wsdl:service 要素は,SOAP サービスを定義する要素です。1個のwsdl:service要素にwsdl:port要素は必ず1個記述してください。2個以上は記述できません。

(l) 添付ファイルを使用するためのWSDL定義

添付ファイルを使用するためのWSDLの定義は記述できません。

(4) WSDLの定義時と使用時の注意(SOAP1.1/1.2併用モード)

SOAP1.1/1.2併用モードを使用する場合,マニュアル「アプリケーションサーバ Webサービス開発ガイド」の「4.3.1 WSDLファイルを作成する」を参考にしてWSDLを記述してください。

ただし,マニュアル「アプリケーションサーバ Webサービス開発ガイド」の「4.3.1 WSDLファイルを作成する」に記載されている内容と,サービスプラットフォームの動作が異なる点があります。SOAP1.1/1.2併用モードを使用する場合のWSDL定義時の注意事項を示します。

(a) 使用できるWSDL定義のスタイル

WSDL定義のスタイルは,document/literalで定義してください。

(b) wsdl:port要素

wsdl:port要素のname属性が重複している場合エラーが発生します。すべてのWSDLでname属性を一意にしてください。

(c) wsdl:types要素

wsdl:types要素の子要素としてスキーマを定義する場合,コメントの記述はxsd:annotationを利用して記述してください。

また,サービスアダプタでWSDLから作成される電文フォーマットの名前空間宣言に,JAXBの名前空間「http://java.sun.com/xml/ns/jaxb」が付加されます。

(d) wsdl:operation要素

wsdl:operation要素のname属性は255バイト以下で記述してください。

(e) サービス部品側にSOAP通信基盤を使用している場合の定義

サービス部品側にSOAP通信基盤を利用している場合は,wsdl:fault要素のname属性とwsdl:part要素の参照するxsd:element要素のname属性と一致させてください。

(f) 添付ファイルを使用するためのWSDL定義

WS-I Attachments Profile - Version 1.0で規定されたwsi:swaRef形式で記述できます。マニュアル「アプリケーションサーバ Webサービス開発ガイド」の「28.3.1 添付ファイル使用時のWSDLの記述(wsi:swaRef形式)」に記載されている内容に従ってください。ただし,xsd:import要素のschemaLocation属性にファイルを指定する場合,「http://ws-i.org/profiles/basic/1.1/swaref.xsd」で公開されているスキーマファイルと同じ内容のファイルを指定してください。

(g) WSDLの検証

(5) WSDL1.1仕様のサポート範囲

SOAP1.1モードを使用する場合のWSDL1.1仕様のサポート範囲を次の表に示します。

SOAP1.1/1.2併用モードを使用する場合のWSDL1.1仕様のサポート範囲については,マニュアル「アプリケーションサーバ Webサービス開発ガイド」の「20.1 WSDL 1.1仕様のサポート範囲」を参照してください。

表2-12 WSDL1.1仕様のサポート範囲

分類 サポート 備考
大分類 小分類
サービス定義:WSDLドキュメント構造 Document Naming and Linking 名前空間のスコープについて規定しています。
Authoring Style(部品のimport要素による取り込み) ほかのファイルのimport要素による取り込みについて規定しています。
Language Extensibility and Binding × wsdl:required属性のデプロイについて規定しています。
Documentation 要素内のコメントについて規定しています。
サービス定義:wsdl:types 扱うデータ型について規定しています。
サービス定義:wsdl:message メッセージの論理定義を規定しています。
サービス定義:ポートタイプ One-way Operation × メッセージの一方向操作について規定しています。
Request-response Operation メッセージの要求/応答操作について規定しています。
Solicit-response Operation × メッセージの送信要求/応答操作について規定しています。
Notification Operation × メッセージの通知操作について規定しています。
Names of Elements within an Operation inputおよびoutput要素のname属性を示します。オーバーロードはできません。WSDL内では名称を一意にする必要があります。
Parameter Order within an Operation 操作内のパラメタの順序について規定しています。parameterOrder属性によって,パラメタのリストを指定できます。
サービス定義:wsdl:binding メッセージ形式とプロトコルの詳細の定義を規定しています。
サービス定義:wsdl:port サービスの物理的定義について規定しています。
サービス定義:wsdl:service サービスの位置について規定しています。1つのWSDLに複数のSOAPサービスを対応させることはできません。
SOAPバインディング soap:binding SOAP形式のバインディングを規定しています。
soap:operation SOAPメッセージ内のSOAPオペレーションへの情報について規定しています。
soap:body SOAPメッセージ内のSOAPボディのメッセージ部分の表示方法について規定しています。parts属性を記述できますが,無視されます。
soap:fault SOAPメッセージ内のSOAPフォルトの内容について規定しています。
soap:header SOAPメッセージ内のSOAPヘッダ要素内の内容について規定しています。
soap:headerfault ×
soap:address port要素のアドレスについて規定しています。
MIMEバインディング mime:content × MIMEタイプを規定しています。
mime:multipartRelated × MIMEパートの任意のセットを集約しています。
mime:part × 個々のMIMEパートを規定しています。
mime:mimeXml × 特定のスキーマを持っているXMLペイロードを規定しています。SOAPには準拠していません。

(凡例)
○:サポートしています。
×:サポートしていません。

(6) ライフサイクル

サービスプラットフォームの実行環境とサービス部品の間では,セッションを維持するように設定(DeployScopeに「Session」,「Application」を設定)しても,ステートフルな呼び出しはできません。サービスアダプタでは,常に「Request」での呼び出しです。