2011-09-30 267 views
3

假设您有以下操作:抛出异常

void AddCustomer(Customer) 

(即Customer对象作为输入,并没有输出)

遵WS-I BP 1.1你是不是允许为单向操作定义故障消息[1]。但是,您可能想要抛出异常,例如,客户是重复的。你会如何实现这一目标?将操作定义为具有空响应的请求/响应,表示操作成功?在我看来,这并不漂亮......也许你知道另一种方式?我的意思是:一个Java/.NET程序中你仍然希望能够还抛出异常的无效的方法...

例子:

<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

回答

0

据的wsdl 1规格没有此无解。

0

您不必在操作中定义输出消息。在这种情况下,操作可以只有输入和故障信息。这样

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

但这并不能改变一个事实,这将是request-response操作。这是在这种情况下可以实现的最好的。

wsdl规范不允许单向操作的任何soap响应(即使偶尔也是如此)。

+0

如果您想遵守WS-I BP 1.1,那么在没有输出元素的情况下不能有错误元素。请参阅我参考的链接[1]。 – nize

+0

你能否指向引用链接中的特定标题,因为我无法找到你在那里提到的内容 –