バージョン番号は、Webサービス・リクエストで必須ネームスペースとして指定されます。
次の文で、Webサービス・インタフェースのバージョンがそれらとのやり取りにどのように影響するかを説明します。
- クライアントがリクエストでバージョンを送信した場合、サーバーはそのレスポンスでAPIバージョンを送信します。
- クライアントのバージョン(サービスへのアクセスにより生成されたJavaメソッドのセットなど)は、Webサービスのバージョンと互換である必要があります。
クライアントは、バージョンがそのスタブ内のバージョンと互換性のないサービスにアクセスした場合に、SOAPフォルトを受信します。具体的には、次のケースが考えられます。
- クライアント・スタブでバージョンAが指定され、WebサービスでバージョンBが使用され、バージョンBがバージョンAと下位互換である場合、リクエストはメッセージなしで正常に処理されます。
- クライアント・スタブでバージョンが指定されず、Webサービスにバージョンが存在する場合は、次の解析エラーとして解釈されます: ネームスペース<namespace_name>の<operation_name>のバージョンを解析できません
- クライアント・スタブでバージョンAが指定され、WebサービスでバージョンBが使用され、バージョンBがバージョンAと下位互換でない場合は(つまり、メジャー・バージョンの変更を表す)、Dgraphサーバーは、使用されるバージョンが無効であることを示すエラーを発行します。そのため、Endeca Serverは、サーバーで使用可能なWebサービスWSDLで指定されたバージョンAが見つからないことを示すエラーを発行します。
重要: すべてのケースで、クライアントと現在のWebサービス・バージョンとの非互換性を解決するには、新しいクライアント・スタブを生成し、それらをフロントエンド・アプリケーションで使用します。
リクエストでのバージョン番号の指定の例
これらの例では、様々なWebサービスへのリクエストでバージョン番号を指定する方法を示します。バージョンの指定の原理は同じですが、構文はWebサービスのタイプによって若干異なります。
次の例では、ネームスペース(1.0)でメジャー・バージョンとマイナー・バージョンの値を指定したリクエストを構成Webサービスに送信します。
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.endeca.com/MDEX/config/services/types/2/0"
xmlns:ns1="http://www.endeca.com/MDEX/config/XQuery/2009/09">
<soapenv:Header/>
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>
次の例では、リクエストを対話Webサービスに送信します。
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.endeca.com/MDEX/conversation/2/0">
<soapenv:Header/>
<soapenv:Body>
<ns:Request>
...
</ns:Request>
</soapenv:Body>
</soapenv:Envelope>
レスポンスにもバージョン番号が含まれます。