Как преобразовать файл WSDL, созданный для SOAP 1.1, для поддержки SOAP 1.2 - PullRequest
2 голосов
/ 24 июня 2011

Несколько лет назад я создал сервис SOAP 1.1 на основе предоставленного мне WSDL. Это было довольно просто: я выполнил Axis WSDL2Java и использовал сгенерированные классы в качестве базы.

Теперь мне сказали перенести этот сервис, чтобы люди могли получить к нему доступ через SOAP 1.2.

Что я должен изменить в своем файле WSDL, чтобы мой новый сгенерированный сервис (все еще использующий WSDL2Java Axis) поддерживает SOAP 1.2?

Важно понимать, что я поставщик услуг: мне не нужны решения, которые работают только для клиентов.

Большое спасибо!

1 Ответ

4 голосов
/ 24 июня 2011

Конструктивно вам потребуется добавить поддержку SOAP 1.2 в ваш документ WSDL. Ваша «абстрактная» часть 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>

Обратите внимание, что эти два определения могут сосуществовать, и ваша служба может оставаться обратно совместимой с SOAP1.1. Клиенты должны будут сделать выбор: использовать SOAP1.1 или SOAP1.2.

На практике вы можете попытаться сгенерировать WSDL из имеющегося у вас кода, указывая Axis для генерации привязок для SOAP1.2. Я не пользователь AXIS, поэтому RTM java2wsdl для способа сделать это.

...