WS-I Basic Profile Version 1.0aは,Webサービスの相互接続性を向上させるために,SOAP仕様およびWSDL仕様を明確にすることを目的としてWeb Services Interoperability Organization(WS-I)が制定したガイドラインです。このガイドラインには,WSDL定義を記述するときの記述のあいまいさを軽減したり,SOAPアプリケーションの振る舞いを統一したりする要件が含まれています。このガイドラインに対応すると,同じく対応したほかのシステムとの相互接続性を高めることができます。
SOAPアプリケーション開発支援機能およびSOAP通信基盤では,このガイドラインに沿ったSOAPアプリケーションおよびSOAPアプリケーションを利用するクライアントアプリケーションを開発,運用できます。しかし,そのためにはSOAPアプリケーションおよびクライアントアプリケーション開発時にもガイドラインを意識する必要があります。
新しくSOAPアプリケーションを開発する場合,SOAPアプリケーション開発支援機能使用時にWS-I Basic Profileに対応させるために必要となる設定は特にありません。ガイドラインを意識してSOAPアプリケーションを開発してください。
バージョン05-05以前で生成したWSDL定義はWS-I Basic Profileに対応しておりませんが,次の手順で対応できます。
SOAP通信基盤によってWS-I Basic Profile 1.0aに対応したSOAPアプリケーションを運用する場合の注意事項について説明します。
SOAP通信基盤を利用してSOAPクライアントを運用する場合,SOAPメッセージはHTTP/1.0を使用して送信されます。
SOAP通信基盤では,SOAPメッセージを受信した場合,WSDL定義とメッセージとの整合性を次に示す順に確認してください。矛盾がある場合には,対応するfaultcodeを持つフォルトを返します。また,メッセージがXML的に不正だった場合などに,この順番に関係なくSOAP通信基盤独自のfaultcode"Server"を持つフォルトを返す場合があります。
サービス実装内でfaultcodeが必要になった場合は,独自の名前空間を用意して独自のfaultcodeを生成するか,SOAP1.1のfaultcodeを使用してください。そのとき,ドット表記で詳細コードを追加することは避けてください。
独自のfaultcodeを用意しても,ドット表記で詳細コードを追加すると,WS-I Basic Profileに対応しない可能性があります。
SOAPメッセージヘッダ中に,自サービスがあて先として指定されているにもかかわらず,対処できないmustUnderstand属性が"1"であるヘッダがある場合,MustUnderstandのfaultcodeを持つフォルトを作成してください。MustUnderstand以外のfaultcodeを持つフォルトを作成すると,WS-I Basic Profileに対応しない可能性があります。
リテラルエンコーディングに対応したWSDL定義を生成する場合は,body要素にはnamespace属性を付加してください。また,その属性値には名前空間を表す絶対URIを指定してください。Body要素にnamespace属性がなかったり属性値が絶対URIでなかったりする場合,WS-I Basic Profileに対応しない可能性があります。
SOAP通信基盤では,開発支援コマンドを使用してユーザ定義クラスの配列を含むソースからWSDL定義を生成する場合,ユーザ定義型名にSequenceOfというプレフィクスを付加した型名を用意します。形名は変更できますが,名称の選択には注意してください。プレフィクスをArrayOfなどに変更すると,WS-I Basic Profileに対応しない可能性があります。