假设您有以下操作:
void AddCustomer(Customer)
(即Customer对象作为输入而没有输出)
遵守WS-I BP 1.1,不允许为单向操作定义故障消息[1]。但是,您可能希望抛出异常,例如,客户是重复的。你会如何实现这一目标?将操作定义为请求/响应,并显示操作成功的空响应?在我看来并不是那么漂亮......也许你知道另一种方式?我的意思是:在java / .net程序中,你仍然希望能够为void-methods ...
抛出异常示例:
<operation name="AddCustomer">
<input message="tns:AddCustomerRequest"/>
<output message="tns:AddCustomerResponse"/>
<fault name="DuplicateCustomer" message="tns:DuplicateFault"/>
</operation>
其中AddCustomerResponse将是一个空序列。
答案 0 :(得分:0)
根据wsdl 1规范,没有解决方案。
答案 1 :(得分:0)
您不必在操作中定义输出消息。在这种情况下,操作可以只有输入和故障消息。像这样
<operation name="AddCustomer">
<input message="tns:AddCustomerRequest"/>
<fault name="DuplicateCustomer" message="tns:DuplicateFault"/>
</operation>
但这并没有改变request-response
操作的事实。这是在这种情况下可以实现的最佳效果。
wsdl规范不允许对单向操作进行任何肥皂响应(即使是偶尔的)。