2011-11-03 56 views
0

在服務器端,我創建一個名爲Fragment的對象。讓我們只是說它是一些字符串的數據容器。如何使用jax-ws創建和處理複雜的對象?

一個接受一個字符串並返回另一個字符串的簡單WebMethod非常簡單易用。但是,如果我嘗試從服務器發送一個對象到客戶端,它會變得複雜。我發佈WebService並使用wsimport創建我的客戶端存根類。

我想將一組碎片返回給客戶端。 wsimport創建一個HashSet類,該類是調用各自服務器方法的方法的返回類型。

我無法將此HashSet強制轉換爲標準的java util HashSet如何處理這些複雜的對象?

編輯: 這是由Web服務公開的方法的簽名:

@WebMethod 
public HashSet<Fragment> topicIntersect(File tm1, String loc1, File tm2, 
     String loc2) 

這是生成了什麼的wsimport

/** 
* 
* @param arg3 
* @param arg2 
* @param arg1 
* @param arg0 
* @return 
*  returns webservice.HashSet 
*/ 
@WebMethod 
@WebResult(partName = "return") 
public HashSet topicIntersect(
    @WebParam(name = "arg0", partName = "arg0") 
    String arg0, 
    @WebParam(name = "arg1", partName = "arg1") 
    String arg1, 
    @WebParam(name = "arg2", partName = "arg2") 
    String arg2, 
    @WebParam(name = "arg3", partName = "arg3") 
    String arg3); 

webservice.HashSet是也產生了空類沒有方法...

+0

請提供您的網絡服務的方法的簽名(包括進口)。 – AndrewBourgeois

回答

1

我不確定JAX-WS是否直接支持HashSet。但是,列表肯定會奏效。另外,如果您使用代碼優先方法,則不需要生成客戶端存根。你應該能夠使用你的服務實現的相同接口。

+0

它不支持HashSet和List ...這就是爲什麼創建存根類(webservice.hashset)。 「代碼優先的方法」是什麼意思? – Stephan

+0

「代碼優先」意味着您首先在Java中實現服務,然後從中生成WSDL。顯然,您然後使用該WSDL來生成客戶端存根。這種方法(從生成的WSDL生成客戶端代碼)有時用於Axis2(用於POJO服務的ADB客戶端存根),但它不適用於JAX-WS。 –

+0

你有什麼建議,我可以閱讀這些東西了嗎?一個小教程或一個小實施例子? – Stephan