2

数年前、私は与えられたWSDLに基づいてSOAP1.1サービスを構築しました。これはかなり基本的なことでした。AxisのWSDL2Javaを実行し、生成されたクラスをベースとして使用しました。

今、私はこのサービスを移行して、人々がSOAP1.2を使用してアクセスできるようにするように言われました。

新しく生成されたサービス(まだAxisのWSDL2Javaを使用)がSOAP 1.2をサポートするように、WSDLファイルで何を変更する必要がありますか?

私はサービスプロバイダーであることを理解することが重要です。クライアントに対してのみ機能するソリューションは必要ありません。

どうもありがとう!

4

1 に答える 1

5

構造的には、WSDLドキュメントにSOAP1.2のサポートを追加する必要があります。'abstract' WSDL部分は、タイプ、メッセージ、およびportTypesを定義します。(ここでは、WSDL1.1ドキュメントを更新して、既存のサービスにSOAP1.2サポートを追加することを想定しています)

SOAP1.2をサポートするには、SOAP1.2準拠のバインディングとサービス定義を追加する必要があります。例として、次のポート定義があります。

<wsdl:portType name="ServerSoap">
    <wsdl:operation name="SomeOperation"> ...

操作のためにSOAP1.2バインディングセクションを追加する必要があります。

<wsdl:binding name="ServerSoap12" type="tns:ServerSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="SomeOperation">
        <soap12:operation soapAction="..." style="document" /> ...

そしてサービス:

<wsdl:service name="Server">
        <!-- SOAP1.1 Service -->
        <wsdl:port name="ServerSoap" binding="tns:ServerSoap">
        <soap:address location="http://localhost:8080/Server" />
    </wsdl:port>

        <!-- SOAP1.2 Service -->
    <wsdl:port name="ServerSoap12" binding="tns:ServerSoap12">
        <soap12:address location="http://localhost:8080/Server" />
    </wsdl:port>
</wsdl:service>

2つの定義は共存でき、サービスはSOAP1.1との下位互換性を維持できることに注意してください。クライアントは、SOAP1.1またはSOAP1.2のどちらを使用するかを選択する必要があります。

実際には、使用しているコードからWSDLを生成して、AxisがSOAP1.2のバインディングを生成するように指示することができます。私はAXISユーザーではないので、それを行う方法についてはRTMjava2wsdlを使用してください。

于 2011-06-24T12:33:21.907 に答える