2009-09-30 49 views
2

我很確定你可以這樣做,但除了回答標題中的問題外,你是否也可以解釋一下這樣做的優點,缺點,警告(如果有的話)?我知道你不能從WebMethod返回一個List,Set,Collection,Map或者任何接口(這是愚蠢的,IMO,但我不知道應該怎麼設計理由,我可能會拒絕判斷)。你可以從JAX-WS @WebMethod返回一個數組嗎?

感謝您的任何建議。

- LES

回答

3

您可以返回數組,我發現它們非常有用。

集合是一個問題的主要原因是某些語言(如C)不理解集合的概念,因此爲了保持可移植性,您需要確保傳遞可以在大多數語言。

此外,我從不喜歡傳遞集合,因爲,來自webservice的應該是相當靜態的。如果你想添加到它,然後將數組轉換爲集合,然後傳回一個數組到webservice進行更改。

1

詹姆斯是正確的,你可以返回數組。您也可以返回集合類型。 wsdl會將該類型定義爲一個列表。但是,大多數客戶端會將類型轉換爲數組(至少這是我發現C#用JAX-WS服務所做的)。

我使用了第三方(Apache Axis2)來生成Web服務,並且遇到了一個奇怪的問題,那就是wsdl沒有被正確讀取,並且該數組無法被消費者正確反序列化。有必要創建一個裝飾器對象,它只包含數組對象,並從web方法返回。

我認爲這只是Axis2與.NET Web服務中間件不能很好地協作,但需要注意的地方。

+0

is this List a generic List?或原始列表? (當然是Java) 否則,你如何向客戶傳達他或她可以將List中的每個元素轉換爲String,Long,MyBean等? – les2 2009-09-30 16:57:54

+1

@ LES2:您應該使用泛型,否則內容將全部轉換爲客戶端上的對象。您需要將它們重新轉換爲客戶端上正確的類型,這應該由Web服務使用者生成。 – bogertron 2009-09-30 17:00:44

相關問題