JIS X 7361:2010 Webサービス相互運用性―WS-I ベーシックプロファイル1.1 | ページ 8

                                                                                             33
X 7361 : 2010 (ISO/IEC 29361 : 2008)
4.5.2 許容されるオペレーション
WSDL1.1におけるSolicit-Responseオペレーション及びNotificationオペレーションは,十分に規定され
ておらず,さらに,WSDL 1.1はそれらに対するバインディングも定義していない。
R2303 DESCRIPTION は,wsdl:portType要素の定義にSolicit-Responseオペレーション及び
Notificationオペレーションを使用してはならない (MUST NOT)。
4.5.3 区別できるオペレーション
一つのwsdl:portType要素の中でのオペレーション名の多重定義は,このプロファイルでは禁止して
いる。
R2304 DESCRIPTION の中の一つの wsdl:portType要素の定義を取り出したとき,その中に
定義される operation要素の name属性は,それぞれ別の値をもたなければならない
(MUST)。
この要件は,一つのwsdl:portType要素の中のwsdl:operation要素に対してだけ適用されること
に注意。wsdl:portType要素は他のwsdl:portType要素に属するwsdl:operation要素と同じオペ
レーション名を使ってもよい。
4.5.4 parameterOrder属性の構築
WSDL 1.1は,wsdl: operation要素(wsdl:portType要素の子)のparameterOrder属性をど
う構築するのがよいか,明らかではない。
R2305 DESCRIPTION の中のwsdl:portType要素の子要素wsdl:operation要素に
parameterOrder属性が存在する場合,このparameterOrder属性は,output要素
で参照されるmessage要素で定義される wsdl:part要素の中から,最大一つの
wsdl:part要素を取り除いたものとして構築されなければならない (MUST)。
parameterOrder属性の値にあるwsdl:part要素のリストからoutput要素で参照されるmessage要素
に属するwsdl:part要素が一つ省略された場合,その省略されたwsdl:part要素が返却値(return value)
である。返却値の型に制約はない。wsdl:part要素が省略されない場合,返却値はない。
4.5.5 type属性及びelement属性の排他性
WSDL 1.1は,wsdl:message要素のwsdl:part要素を定義するのにtype属性及びelement属性の
両方を指定できないことを明記していない。
R2306 DESCRIPTION の中のwsdl:message要素は,同じwsdl:part要素に対してtype属
性及びelement属性の両方を指定してはならない (MUST NOT)。

4.6 バインディング

  このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ WSDL 1.1の2.5 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315#bindings)

――――― [JIS X 7361 pdf 36] ―――――

34
X 7361 : 2010 (ISO/IEC 29361 : 2008)
WSDL 1.1ではwsdl:binding要素が,特定のwsdl:portType要素で定義されたオペレーション及
びメッセージに対する具体的なプロトコル及びデータ形式を提供している。このプロファイルでは適合す
るバインディングの仕様に次の制約を課す。
4.6.1 SOAPバインディングの使用
このプロファイルは,バインディングの選択肢を,十分に定義され,最も一般的に利用されているSOAP
バインディングに限定している。
R2401 DESCRIPTION の中のwsdl:binding要素は,WSDL 1.1の3で定義されたWSDLの
SOAPバインディングを使用しなければならない (MUST)。
ここでは,適合するwsdl:binding要素の構築についての要件を課していることに注意。これは,記
述(description)全体に対する要件を課しているわけではない。特に,WSDL文書が,適合しない
wsdl:binding要素をもつことを禁止しているわけではない。また,バインディングはメッセージのシリ
アライズ方法を変更するWSDL拡張要素を存在させてもよい。

4.7 SOAPバインディング

  このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ WSDL 1.1の3.0 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315#services)
WSDL 1.1はSOAP 1.1のエンドポイントに対するバインディングを定義する。このプロファイルでは
WSDL 1.1で定義されているSOAPバインディングの使用を必す(須)としており,その使用に関して次
の制約を課す。
4.7.1 transport属性の指定
transport属性について,WSDL 1.1の本文とスキーマとの間の矛盾がある。WSDL 1.1ではそれを必
す(須)としており,スキーマはそれを省略可能としている。
R2701 DESCRIPTION の中の wsdl:binding要素は,その soapbind:binding 子要素が
transport属性を指定するよう構築されなければならない (MUST)。
4.7.2 HTTPトランスポート
このプロファイルでは,トランスポートのプロトコルをHTTPに制限している。
R2702 DESCRIPTION の中のwsdl:binding要素は,SOAPのHTTPプロトコルバインディ
ングを指定しなければならない (MUST)。具体的には,そのsoapbind:binding子要
素のtransport属性の値は,"http://schemas.xmlsoap.org/soap/http" でなければならない
(MUST)。
この要件は,HTTPSの使用を制限しているわけではないことに注意を要する(R5000参照)。
4.7.3 style属性の整合性
styleが "document" か "rpc" かはwsdl:operation要素のレベルで指定されるので,個々の
wsdl:operation要素に相異なるstyleをもつwsdl:binding要素を許してしまう。これは,相互運

――――― [JIS X 7361 pdf 37] ―――――

                                                                                             35
X 7361 : 2010 (ISO/IEC 29361 : 2008)
用上の問題となる。
R2705 DESCRIPTION の中のwsdl:binding要素は,rpc-literalバインディング又は
document-literalバインディングのいずれかでなければならない (MUST)。
4.7.4 エンコーディング及びuse属性
このプロファイルではSOAPエンコーディングを含むエンコーディングの使用を禁止している。
R2706 DESCRIPTION の中の wsdl:binding要素は,すべての soapbind:body要素,
soapbind:fault要素,soapbind:header要素及び soapbind:headerfault要素
に対して,use属性の値を "literal" としなければならない (MUST)。
4.7.5 portType要素への複数のバインディング
このプロファイルでは同じportTypeに対する複数のバインディングを明示的に許容する。
R2709 DESCRIPTION の中のwsdl:portType要素は,同一又は別のWSDL文書の中に,そ
れを参照するwsdl:binding要素を0個以上もってよい (MAY)。
4.7.6 オペレーションシグネチャ
定義: オペレーションシグネチャ
このプロファイルは "オペレーションシグネチャ"(operation signature)を,WSDLバイン
ディングのオペレーションで記述されたSOAP入力メッセージのSOAP本体の子要素の完全
修飾名であると定義する。
rpc-literalバインディングの場合,オペレーション名はパートのアクセッサに対するラッパ
ーとして使用される。document-literalバインディングの場合はオペレーション名をもつラッ
パーが存在しないので,メッセージのシグネチャがこの要件を満足するよう,正しく設計さ
れなければならない。
複数のオペレーションをサポートするエンドポイントは,受信する入力メッセージを元に,どのオペレ
ーションが起動されたかをあいまい(曖昧)性なしに識別する必要がある。これは,一つのエンドポイン
トに対して wsdl:binding要素に指定されたすべてのオペレーションが,一意の伝送路シグネチャ(wire
signature)をもつ場合にだけ可能である。
R2710 DESCRIPTION の中の一つのwsdl:binding要素に属するオペレーションは,それぞ
れ相異なるオペレーションシグネチャをもたなければならない (MUST)。
4.7.7 一つのエンドポイントに対する複数のポート
同一のネットワークエンドポイントにある,二つの異なるwsdl:port要素にあ(宛)てられた入力メ
ッセージが伝送路上で区別できない場合,それによって起動されるwsdl:port要素を決定できなくなる
可能性がある。これは相互運用上の問題になるかもしれない。しかし,(例えば,SOAPのバージョンの違
い,アプリケーションのバージョンの違い,異なるプロファイルへの適合など)一つ以上のport要素を一
つのエンドポイントに置いたほうがよい場合もあり得る。ゆえに,このプロファイルではそれを許してい
る。

――――― [JIS X 7361 pdf 38] ―――――

36
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R2711 DESCRIPTION は,soapbind:address要素のlocation属性の値が同じwsdl:port
要素を複数もたないほうがよい (SHOULD NOT)。
4.7.8 document-literalバインディングの子要素
WSDL 1.1は,document-literalバインディングにおいてsoap:Body要素の子要素が何であるかについて,
完全に明確ではない。
R2712 document-literal バインディングは,soap:Body要素の子要素が対応する
wsdl:message要素の一つの part で参照される大域要素宣言のインスタンスである
ENVELOPEとしてシリアライズされなければならない (MUST)。
4.7.9 one-wayオペレーション
one-wayオペレーションを行う場合,どのようにHTTPを使うのかについて幾つかの解釈がある。
R2714 one-wayオペレーションの場合,INSTANCE は エンベロープを含むHTTPレスポンスを
返してはならない (MUST NOT)。具体的には,レスポンスのHTTP entity-bodyは空でな
ければならない (MUST)。
R2750 CONSUMER は,one-wayオペレーションのHTTPレスポンスメッセージで伝送された
エンベロープを無視しなければならない (MUST)。
R2727 one-wayオペレーションの場合,CONSUMER はHTTPの正常終了レスポンスの状態コ
ード(すなわち,2xx)が,メッセージが正当であるとか,受信側がそれを処理すること
の印であると解釈してはならない (MUST NOT)。
one-wayオペレーションはSOAPレスポンスを生成しない。よって,このプロファイルは,one-wayオペ
レーションのレスポンスとしてSOAPエンベロープを送ることを禁止している。これは,one-wayオペレ
ーションの伝送が,処理レベルのレスポンス又はエラーになってはならないことを意味する。この状況で
は,例えばフォルトを含んだHTTPレスポンス "500 Internal Server Error" を返すことができない。
one-wayオペレーションにおけるHTTPレスポンスは,メッセージの伝送の成功又は失敗を示す。HTTP
プロトコルでサポートされているレスポンスコードの意味から,このプロファイルは,"200" 及び "202"
が,one-wayオペレーションにおけるメッセージが受信されたことを示すものと送信者が期待するレスポ
ンス状態コードであると規定している。伝送が成功したことは,SOAP処理層及びアプリケーションロジ
ックがエンベロープを正しいと確認したとか,それを処理することが確定したとかを示すものではない。
4.7.10 soapbind要素の名前空間
どの名前空間がsoap:Envelope要素の多様な子供の要素と関連付けられているかについて混乱があ
り,相互運用を困難にしている。このプロファイルではこれについて規定している。
R2716 DESCRIPTIONの中のdocument-literalバインディングは,それが含むsoapbind:body
要素,soapbind:header要素,soapbind:headerfault要素及びsoapbind:fault
要素にnamespace属性を指定してはならない (MUST NOT)。
R2717 DESCRIPTION の中のrpc-literalバインディングは,それが含むsoapbind:body要素
にnamespace属性が指定されなければならず (MUST),その値は絶対URIでなければ
ならない (MUST)。

――――― [JIS X 7361 pdf 39] ―――――

                                                                                             37
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R2726 DESCRIPTION の中のrpc-literalバインディングは,それが含むsoapbind:header要
素,soapbind:headerfault要素及びsoapbind:fault要素にnamespace属性を
指定してはならない (MUST NOT)。
document-literalのSOAPバインディングでは,soap:Body要素のシリアライズされた子要素は,その
要素を定義したスキーマのtargetNamespaceから名前空間を得る。soapbind:body要素のnamespace属
性の指定はその要素の名前空間を上書きするかもしれない。それはこのプロファイルでは許されていない。
それとは反対に,rpc-literalのSOAPバインディングでは,soap:Body要素のシリアライズされた子要
素はラッパー要素であり,その名前空間はsoapbind:body要素のnamespace属性の値であり,その局
所名(local name)はオペレーションの名前であるか,又はオペレーションの名前の最後に "Response" を
付けたものである。namespace属性は,soap:Body要素の子要素を名前空間修飾することを保証するた
め,省略可能ではなく必す(須)である。
4.7.11 portType要素及びbinding要素の整合性
WSDLの記述(description)は,wsdl:portType要素と wsdl:binding要素との両方のレベルで整
合していなければならない。
R2718 DESCRIPTION の中のwsdl:binding要素は,それが参照する先のwsdl:portType要素と同
一のwsdl:operation要素の集合をもたなければならない (MUST)。〔明確化〕
4.7.12 headerfault要素の記述
soapbind:headerfault要素について,WSDLの規格本文とスキーマとの間の矛盾がある。
R2719 DESCRIPTION の中の wsdl:binding要素は,既知のヘッダフォルトが存在しない場
合,soapbind:headerfault要素を指定しなくてもよい (MAY)。
WSDL 1.1のスキーマは,オペレーションのwsdl:input要素及びwsdl:output要素に
soapbind:headerfault要素を指定することを必す(須)としているが,WSDL 1.1の規格本文では省
略可能になっている。本文が正しい。
4.7.13 フォルトの列挙
Webサービスの記述は,サービスの定義時に知られているすべてのフォルトを含むのが望ましい。また,
Webサービスが定義されたときには認識されていなかった,新しいフォルトの生成も許容する必要がある。
R2740 DESCRIPTION の中のwsdl:binding要素は,既知の各フォルトを記述する
soapbind:fault要素を含むのが望ましい (SHOULD)。
R2741 DESCRIPTION の中の wsdl:binding要素は,既知の各ヘッダフォルトを記述する
soapbind:headerfault要素を含むのが望ましい (SHOULD)。
R2742 ENVELOPE は,対応するWSDL記述内のsoapbind:fault要素によって記述されて
いないdetail要素とともにフォルトを含んでもよい (MAY)。
R2743 ENVELOPE はSOAPヘッダブロックに,対応するWSDL記述の中の
soapbind:headerfault要素に記述されていないヘッダ処理関連のフォルトの詳細記
述を含んでもよい (MAY)。

――――― [JIS X 7361 pdf 40] ―――――

次のページ PDF 41

JIS X 7361:2010の引用国際規格 ISO 一覧

  • ISO/IEC 29361:2008(IDT)

JIS X 7361:2010の国際規格 ICS 分類一覧