Hitachi

Cosminexus V11 アプリケーションサーバ SOAPアプリケーション開発の手引


付録C.3 WS-I Basic Profile 1.0aに対応するための注意事項

SOAP通信基盤によってWS-I Basic Profile 1.0aに対応したSOAPアプリケーションを運用する場合の注意事項について説明します。

〈この項の構成〉

(1) メッセージ送信時のHTTPバージョンについて

SOAP通信基盤を利用してSOAPクライアントを運用する場合,SOAPメッセージはHTTP/1.0を使用して送信されます。

(2) WSDL定義とメッセージとの整合性の確認順序について

SOAP通信基盤では,SOAPメッセージを受信した場合,WSDL定義とメッセージとの整合性を次に示す順に確認してください。矛盾がある場合には,対応するfaultcodeを持つフォルトを返します。また,メッセージがXML的に不正だった場合などに,この順番に関係なくSOAP通信基盤独自のfaultcode"Server"を持つフォルトを返す場合があります。

  1. SOAPエンベロープの名前空間が正しいかどうか

    正しくなければVersionMismatchを返します。

  2. サービスが処理しなければならないヘッダを処理しているかどうか

    処理していなければMustUnderstandを返します。

  3. それ以外の矛盾がある場合

    SOAP通信基盤独自のServerを返します。

(3) faultcodeについて

サービス実装内でfaultcodeが必要になった場合は,独自の名前空間を用意して独自のfaultcodeを生成するか,SOAP1.1のfaultcodeを使用してください。そのとき,ドット表記で詳細コードを追加することは避けてください。

(例)

×:SomeFaultCode.moreDetailCode

○:SomeFaultCode

独自のfaultcodeを用意しても,ドット表記で詳細コードを追加すると,WS-I Basic Profileに対応しない可能性があります。

SOAPメッセージヘッダ中に,自サービスがあて先として指定されているにもかかわらず,対処できないmustUnderstand属性が"1"であるヘッダがある場合,MustUnderstandのfaultcodeを持つフォルトを作成してください。MustUnderstand以外のfaultcodeを持つフォルトを作成すると,WS-I Basic Profileに対応しない可能性があります。

(4) RPCでリテラルエンコーディングを使用する場合のbody要素のnamespace属性について

リテラルエンコーディングに対応したWSDL定義を生成する場合は,body要素にはnamespace属性を付加してください。また,その属性値には名前空間を表す絶対URIを指定してください。Body要素にnamespace属性がなかったり属性値が絶対URIでなかったりする場合,WS-I Basic Profileに対応しない可能性があります。

(5) ユーザ定義配列の型名について

SOAP通信基盤では,開発支援コマンドを使用してユーザ定義クラスの配列を含むソースからWSDL定義を生成する場合,ユーザ定義型名にSequenceOfというプレフィクスを付加した型名を用意します。形名は変更できますが,名称の選択には注意してください。プレフィクスをArrayOfなどに変更すると,WS-I Basic Profileに対応しない可能性があります。