WS-I バリデーターを使用して、WSDL 定義を Basic Profile と突き合わせて検査することができます。
WS-I Basic Profile について詳しくは、WS-I 提供の資料、特に WS-I Basic Profile に関する資料を参照してください。
WS-I バリデーターを使用して、Basic Profile に照らし合わせて WSDL 定義を検査することができます。WS-I Basic Profile Version 1.1を参照してください。
以下のいずれかの方法で、バリデーターを実行することができます。
プロファイルの準拠レベルを設定して、バリデーターの動作を制御できます。
- を選択します。
- 「サービス・ポリシー (Service Policies)」をクリックし、「プロファイルの準拠 (Profile Compliance)」を展開します。
- 以下のプロファイルのいずれかを選択します。
- WS-I AP への準拠レベル (WS-I Attachments Profile 1.0)
- WS-I SSBP への準拠レベル (WS-I Simple SOAP Binding Profile 1.0)
- 準拠レベルを選択します。
- バリデーターの実行時に、エラーをリカバリー不能として扱い、警告は通知のみにするには、「準拠の提案 (Suggest compliance)」を選択します。
これはデフォルト設定です。
- バリデーターの実行時に、エラーと警告をリカバリー不能として扱うには、「準拠必須 (Require compliance)」を選択します。
- バリデーターを実行しない場合は、「準拠を無視 (Ignore compliance)」を選択します。
AP の選択は SSBP フィールドに対して自動的に適用されるので、AP 選択を「無視」に設定しないかぎり、「無視」を明示的に選択することはできません。
以下の用語は、WSDL 定義の 3 種類の広義のカテゴリーを指します。
- document-literal は、style="document" と use="literal" の組み合わせを意味します。
- rpc-literal は、style="rpc" と use="literal" の組み合わせを意味します。
- rpc-encoded は、style="rpc" と use="encoded" の組み合わせを意味します。
前述の用語を使用する際の、典型的な妥当性検査に関する問題を以下に示します。
- WSDL が rpc-encoded になっています。
- use="encoded" を指定された WSDL は、WS-I 準拠ではないので、操作上の問題につながる可能性があります。なぜなら、ベンダー製品が異なれば、SOAP の見込みペイロードに関する想定も異なるからです。
WS-I: (BP2406) soapbind:body、soapbind:fault、soapbind:header、および soapbind:headerfault の使用属性は、「literal」の値を持っていません。
- この WSDL は document-literal ですが、1 つ以上の WSDL パーツ定義が XML スキーマ・タイプを参照しています。
- document-literal WSDL では、SOAP 本体のペイロードは、該当する WSDL パーツによって参照される XML スキーマ・エレメントです。
エレメントではなくタイプを指定すると、SOAP ペイロードはあいまいになる (ペイロード名が未定義になる) 可能性があり、インターオペラビリティーの問題が生じる可能性があります。
WS-I: (BP2012) document-literal バインディング中で、エレメント属性を持たないメッセージ・パーツ・エレメントを参照する soapbind:body エレメントが使用されています。
- この WSDL は rpc-literal または rpc-encoded ですが、1 つ以上の WSDL パーツ定義が XML スキーマ・エレメントを参照しています。
- rpc スタイルの WSDL では、SOAP 本体のペイロードは WSDL 操作名になり、その子は、その操作で指定される WSDL パーツになります。
タイプではなくエレメントを指定すると、SOAP メッセージのペイロードはあいまいになる (ペイロード名が、WSDL パーツ名または XML スキーマ・エレメント名になる) 可能性があり、インターオペラビリティーの問題が生じる可能性があります。
WS-I: (BP2013) rpc-literal バインディング中で、タイプ属性を持たないメッセージ・パーツ・エレメントを参照する soapbind:body エレメントが使用されています。
- この WSDL には、XML スキーマ・タイプを参照する SOAP ヘッダー、headerfault または fault の定義が入っています。
- rpc スタイルの WSDL では、SOAP 本体は、上記の説明どおりに XML スキーマ・タイプを介して正しく定義されています。
ただし、SOAP ヘッダーおよび障害は、本体と同じやり方で rpc 関数呼び出しに対応していません。
特に、ヘッダーまたは障害に対する「パラメーター」の概念がありません。あいまいになる可能性を排除するには、常に XML スキーマ・エレメントという観点に立ってヘッダーまたは障害を定義する必要があります。 実際、WSDL では、ヘッダーおよび障害の定義は常に document-literal です。
WS-I: (BP2113) soapbind:header、soapbind:headerfault、または soapbind:fault エレメントは、"element" 属性のみを使用して定義されたのではない wsd:part エレメントを参照しています。
- この WSDL は rpc-literal または rpc-encoded ですが、操作用のネーム・スペースが指定されていません。
- rpc スタイルの WSDL では、SOAP メッセージのペイロードは、WSDL バインディングの一環として指定されるネーム・スペースで修飾された WSDL 操作名になります。
ネーム・スペースを指定しないと、SOAP メッセージのペイロードはあいまいになる (ペイロード名が、ネーム・スペース内に存在しなくなるか、または、WSDL 定義のターゲット・ネーム・スペースなどの別のネーム・スペースがデフォルトの場合に使用される) 可能性があり、インターオペラビリティーの問題が生じる可能性があります。
WS-I: (BP2020) rpc-literal バインディング中で、ネーム・スペース属性を持っていないか、または絶対値ではないネーム・スペース属性値を持った soapbind:body エレメントが使用されています。
- WSDL に SOAP/JMS バインディングが含まれています。
- WSDL で SOAP/JMS トランスポート URI を使用する記述方法は、WS-I に準拠していません。
厳密な WS-I 検証が有効になっていると、エラーが表示されます。 厳密な WS-I 検証を無効にするには、
をクリックして、
「WS-I BP 1.1: SOAP/JMS をトランスポート URI として許可」を選択します。
デフォルトでは、厳密な WS-I 検証は無効になっています。
以下のアクションを実行すると、Web サービスのインターオペラビリティーが向上します。
- 可能な限り、文書スタイルの WSDL を使用します。
- rpc スタイルの WSDL が必要な場合は、リテラル・エンコードを使用します。
- rpc-encoded WSDL を使用する必要がある場合は、必ず WSDL 操作定義を有効なネーム・スペース属性で修飾します。