18
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R1130 INSTANCEは,リクエストを別のエンドポイントに転送 (redirect) する場合,HTTP状
態コード"307 Temporary Redirect" を使用しなければならない (MUST)。
R1131 CONSUMER は,レスポンスとしてHTTP状態コード"307 Temporary Redirect" を受け取
った場合,リクエストを自動的に転送 (redirect) してもよい (MAY)。
RFC2616は,ユーザエージェントが自動的にリクエストを転送しないほうがよいとしている。しかし,
この要件はブラウザを想定したものであり,自動的な処理(多くのWebサービスもこれに当たる。)を想
定したものではない。よって,このプロファイルでは,利用者(consumer)が転送を自動的に行うことを
許してはいるが,要求してはいない。
3.4.6 HTTPのクライアントエラー状態コード
HTTPは4xxの状態コードをクライアントのエラーによる失敗を示すために使っている。これらのうち
のいずれかの結果を起こす状況はいろいろあるが,このプロファイルでは,HTTPリクエストのメディア
型が正しくなかった場合と,期待されるメディア型("POST")が指定されなかった場合とを強調している。
R1125 INSTANCE は,リクエストの形式に問題があることを示すレスポンスのHTTP状態コー
ドとして4xxを使用しなければならない (MUST)。
R1113 INSTANCE は,HTTPリクエストメッセージの形式が正しくない場合,HTTP状態コー
ドとして "400 Bad Request" を使うことが望ましい (SHOULD)。
R1114 INSTANCE は,HTTPリクエストメッセージのメソッドが "POST" でない場合,HTTP
状態コードとして "405 Method not Allowed" を使うことが望ましい (SHOULD)。
R1115 INSTANCEは,HTTPリクエストメッセージの Content-Type ヘッダフィールド値がそ
のWSDL記述で許されていない場合,HTTP状態コードとして "415 Unsupported Media
Type" を返すことが望ましい (SHOULD)。
上記の要件が,インスタンスに対して,リクエストにレスポンスを返すことを強制していないことに注
意する。場合によっては,例えばサービス妨害攻撃(Denial of Service attacks)の場合など,インスタンス
がリクエストを無視することを選択することもある。
また,SOAP 1.1の6.2(http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#Toc478383529)は,SOAPフ
ォルトを返す場合は必ずHTTPコードとして500 "Internal Server Error" を使用することを要求している。
このプロファイルはその要件を変更しない。HTTPエラー状態コードとして4xxが使用される場合,レス
ポンスメッセージはSOAPフォルトを含まないことが望ましい。
3.4.7 HTTPのサーバエラー状態コード
HTTPは5xxの状態コードをサーバのエラーによる失敗を示すために使っている。
R1126 INSTANCE は,レスポンスのエンベロープがフォルトである場合,HTTP状態コードと
して "500 Internal Server Error" を返さなければならない (MUST)。
3.4.8 HTTPクッキー
HTTP状態管理メカニズム(HTTP State Management Mechanism)は,“クッキー(Cookies)”とも呼ばれ,
Webブラウザとサーバとの間で状態をもったセッションを生成することを可能にしている。ハイパテキス
――――― [JIS X 7361 pdf 21] ―――――
19
X 7361 : 2010 (ISO/IEC 29361 : 2008)
トのブラウズを前提に設計されたため,クッキーのWebサービスでの動作の定義はあいまい(曖昧)であ
り,しかも,クッキーはエンベロープの外側にあるため,SOAP 1.1又はWSDL 1.1のいずれの規格にも取
り込まれていない。しかし,複数のサーバの負荷分散,クッキーを使う既存のサーバの統合など,クッキ
ーを使うことが必要な状況もある。そこで,このプロファイルではクッキーを全面否定するのではなく,
その用途を限定するにとどめている。
R1120 INSTANCE は,HTTP状態メカニズム (HTTP state mechanism)(クッキー)を使って
もよい (MAY)。
R1122 クッキーを使用する INSTANCE は,RFC2965に適合することが望ましい (SHOULD)。
R1121 INSTANCE は,正常動作のために利用者(consumer)のクッキーのサポートを必す(須)
としないほうがよい (SHOULD NOT)。
R1123 クッキーの値は,CONSUMER にとって不透明(opaque)なものとみなされなければな
らない (MUST)。
このプロファイルでは,クッキーはインスタンスの正常動作に必す(須)とはしないことを推奨してい
る。クッキーはヒントであり,最適化に使われるもので,Webサービスの実行に実質的に影響を与えない
ことが望ましい。しかし,既存のサービスの統合などの例外的な用途でクッキーが必要になるかもしれな
いので,クッキーを要求することでインスタンスが不適合になるわけではない。よって,クッキーはイン
スタンスにとって意味があるかもしれないが,インスタンスと利用者(consumer)との間でのデータ通信
の抜け道(out-of-bound data channel)として使わないことが望ましい。よって,利用者側でクッキーの内
容を解釈することは許されていない。クッキーは不透明(すなわち,利用者にとって意味のないもの)と
して扱われなければならない。
4 サービス記述
このプロファイルでは,サービスの記述にWSDL(Web Services Description Language)を使用する。WSDL
では,メッセージを操作するエンドポイントの集合としてサービスが記述される。
このプロファイルのこの箇条では,次の規格を引用し,その中での拡張点を定義する。
・ Extensible Markup Language (XML) 1.0 (Second Edition)
(http://www.w3.org/TR/2000/REC-xml-20001006)
・ Namespaces in XML 1.0(JIS X 4158:2005 XML名前空間)
(http://www.w3.org/TR/1999/REC-xml-names-19990114/)
・ XML Schema Part 1:Structures (http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/)
拡張点:
E0017−スキーマの注釈(annotation)−XML Schema は注釈を許しており,データ構
造についての追加の情報を記述するために使ってもよい。
・ XML Schema Part 2: Datatypes (http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/)
・ Web Services Description Language (WSDL) 1.1
(http://www.w3.org/TR/2001/NOTE-wsdl-20010315)
拡張点:
――――― [JIS X 7361 pdf 22] ―――――
20
X 7361 : 2010 (ISO/IEC 29361 : 2008)
E0013−WSDL拡張−WSDLは特定の位置に拡張要素及び拡張属性を入れることを許
す。そのような拡張の使用には別途調整(out-of-band negotiation)が必要である。
E0014−妥当性検証モード−WSDL及びXML Schema 文書を読み込むパーサーがDTD
の妥当性検証を行うかどうか。
E0015−外部資源の取り込み−WSDL及びXML Schema文書を読み込むパーサーが外
部実体及びDTDを取り込むかどうか。
E0016−相対URI−WSDLは,次の相対URIの使い方について適切に規定していない。
soapbind:body/@namespace,soapbind:address/@location,wsdl:import/@location,
xsd:schema/@targetNamespace,及びxsd:import/@schemaLocation。その使用については,
更に調整が必要である。詳細については,XML Baseを参照。
4.1 必す(須)記述
Web サービスのインスタンスは,その動作を定めたインタフェース仕様が何らかの方法で利用可能とな
っていることが要求されている。
R0001 INSTANCE のWSDL 1.1記述若しくはそのUDDIバインディングテンプレート,又はそ
の両方は,認可された利用者 (authorized consumer) の要求に応じて提供されなければな
らない (MUST)。
これは,認定された利用者が適合サービスインスタンスのサービス記述を要求した場合に,サービスイ
ンスタンスプロバイダは,WSDL文書若しくはUDDIバインディングテンプレート,又はその両方を,そ
の利用者が入手できるようにしなければならないことを意味する。サービスインスタンスはサーバから
WSDL文書にランタイムアクセスできるようにしてもよいが,適合すると見なされることを目的にそうす
る必要はない。同様に,サービスインスタンスプロバイダはUDDIレジストリにインスタンスプロバイダ
を登録してもよいが,適合するとみなされるためにそうする必要はない。こうしたあらゆるシナリオにお
いてWSDLによるインタフェース仕様が存在しなければならないが,このインタフェース仕様は状況に応
じた様々な手段を通して利用可能であればよい。
4.2 文書構造
このプロファイルのこの細分箇条では,次の規格(又はその箇条)を引用する。
・ WSDL 1.1の2.1 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315#document-s)
WSDL 1.1は,Webサービスを記述するためのXMLに基づいた構造を定義する。このプロファイルでは
この構造の使用を必す(須)としており,その使用においては次の制約を課す。
4.2.1 WSDL スキーマ定義
WSDL 1.1の附属書4で規定されているスキーマは,規格の本文の規定との間に不整合がある。このプ
ロファイルは,既知の間違いに対する修正を取り入れた新しいスキーマ文書を引用する。
R2028 WSDLの名前空間(このプロファイルでは "wsdl" の接頭辞を用いる。)を使用する
DESCRIPTION は,"http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd"にあるXML
Schema に対して妥当 (valid) でなければならない (MUST)。
――――― [JIS X 7361 pdf 23] ―――――
21
X 7361 : 2010 (ISO/IEC 29361 : 2008)
R2029 WSDL SOAPバインディングの名前空間(このプロファイルでは "soapbind" の接頭辞を
用いる。)を使用する DESCRIPTION は,
"http://ws-i.org/profiles/basic/1.1/wsdlsoap-2004-08-24.xsd"にあるXML Schema に対し
て妥当 (valid) でなければならない (MUST)。
このプロファイルではWSDL記述がスキーマに対して妥当であることを要求しているが,利用者が
WSDL文書を妥当性検証することを要求しているわけではない。それを保証するのはWSDL文書の作成者
の責任である。
4.2.2 WSDL及びスキーマのインポート
WSDL 1.1の幾つかの例では,XML Schema 定義を取り込むために用いるWSDLのimport文が間違って
いる。このプロファイルでは インポートメカニズムの使用を明確化し,それぞれに整合性をもたせ,守備
範囲を限定している。取り込まれたスキーマ文書は,取り込む側のWSDL文書に対するXMLの版数とエ
ンコーディングとに対する要件に整合するよう,制限されている。
R2001 DESCRIPTIONは,他のWSDL記述を取り込むためにWSDLのimport記述だけを使用
しなければならない (MUST)。
R2803 DESCRIPTION の中のwsdl:import要素の名前空間属性は,相対URIであってはなら
ない (MUST NOT)。
R2002 XML Schemaのスキーマ定義を取り込むために,DESCRIPTION はXML Schemaの
import 記述を使用しなければならない (MUST)。
R2003 DESCRIPTIONは,XML Schemaのimport記述をtypes要素の中のxsd:schema要
素の内部だけで使用しなければならない (MUST)。
R2004 DESCRIPTION の中のxsd:import要素のschemaLocation属性は,ルート要素が名前空
間 "http://www.w3.org/2001/XMLSchema" に属する "schema" ではない文書に解決されて
はならない (MUST NOT)。
R2009 DESCRIPTIONから直接的又は間接的に取り込まれるXML Schemaは,Unicodeのバイ
ト順マーク (BOM) を含んでもよい (MAY)。
R2010 DESCRIPTIONから直接的又は間接的に取り込まれるXML Schemaは,UTF-8又は
UTF-16 のエンコーディングを使用しなければならない (MUST)。
R2011 DESCRIPTIONから直接的又は間接的に取り込まれるXML Schema は,Extensible
Markup Language (XML)の1.0版W3C勧告を使用しなければならない (MUST)。
次に例を示す。
間違っている例:
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/definitions"
xmlns:xsd1="http://example.com/stockquote/schemas"
...
xmlns="http://schemas.xmlsoap.org/wsdl/">
――――― [JIS X 7361 pdf 24] ―――――
22
X 7361 : 2010 (ISO/IEC 29361 : 2008)
<import namespace="http://example.com/stockquote/schemas"
location="http://example.com/stockquote/stockquote.xsd"/>
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
...
</definitions>
正しい例:
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/definitions"
...
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace="http://example.com/stockquote/definitions"
location="http://example.com/stockquote/stockquote.wsdl"/>
<message name="GetLastTradePriceInput">
<part name="body" element="..."/>
</message>
...
</definitions>
正しい例:
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote/"
xmlns:xsd1="http://example.com/stockquote/schemas"
...
xmlns="http://schemas.xmlsoap.org/wsdl/">
<import namespace="http://example.com/stockquote/definitions"
location="http://example.com/stockquote/stockquote.wsdl"/>
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
...
</definitions>
――――― [JIS X 7361 pdf 25] ―――――
次のページ PDF 26
JIS X 7361:2010の引用国際規格 ISO 一覧
- ISO/IEC 29361:2008(IDT)
JIS X 7361:2010の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.100 : 開放型システム間相互接続(OSI) > 35.100.05 : マルチレイヤアプリケーション