Бросить исключение из односторонней операции - PullRequest
3 голосов
/ 30 сентября 2011

Предположим, что у вас есть следующая операция:

void AddCustomer(Customer)

(т. Е. Объект Customer в качестве ввода и без вывода)

В соответствии с WS-I BP 1.1 вы не можете определитьсообщения об ошибках для односторонних операций [1].Однако вы можете создать исключение, например, если клиент является дубликатом.Как бы вы достигли этого?Определить операцию как запрос / ответ с пустым ответом, сигнализирующим, что операция прошла успешно?На мой взгляд, не такая уж и красивая ... Может, ты знаешь другой путь?Я имею в виду: в программе java / .net вы все еще хотите иметь возможность создавать исключения также для void-методов ...

Пример:

<operation name="AddCustomer">
    <input message="tns:AddCustomerRequest"/>
    <output message="tns:AddCustomerResponse"/>
    <fault name="DuplicateCustomer" message="tns:DuplicateFault"/>
</operation>

где AddCustomerResponse будет пустымпоследовательность.

[1] http://www.w3.org/TR/wsdl#_porttypes

Ответы [ 2 ]

0 голосов
/ 25 августа 2016

Вам не нужно определять выходное сообщение в операции.В этом случае операция может иметь только вход и сообщение об ошибке.вот так

<operation name="AddCustomer">
    <input message="tns:AddCustomerRequest"/>
    <fault name="DuplicateCustomer" message="tns:DuplicateFault"/>
</operation>

Но это не меняет того факта, что это будет request-response операция.Это лучшее, что может быть достигнуто в этом сценарии.

Спецификация wsdl не допускает никакого мыльного ответа для односторонней операции (даже если она случайная).

0 голосов
/ 05 октября 2011

Согласно спецификации wsdl 1 для этого нет решения.

...