2011-09-30 268 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

你能否指向引用鏈接中的特定標題,因爲我無法找到你在那裏提到的內容 –