2010-08-10 63 views
2

我發現我無法從JAX-WS Web服務返回集合。無法從JAX-WS Web服務返回集合或數組

我明白,所有的客戶端可能不支持Java Collections API,所以我切換到返回數組,但我似乎無法做到這一點。

我建立了我的web服務如下:

@WebService 
public class MyClass { 
    public ReturnClass[] getArrayOfStuff() { 
    // extremely complex business logic... or not 
    return new ReturnClass[] {new ReturnClass(), new ReturnClass()}; 
    } 
} 

而且ReturnClass只是一個POJO。我創建了另一個返回單個實例的方法,並且工作正常。當我使用集合/數組時,它似乎是一個問題。

當我部署服務,我得到下面的異常,當我使用它:

javax.xml.bind.MarshalException - with linked exception: [javax.xml.bind.JAXBException: [LReturnClass; is not known to this context]

我需要以某種方式註釋ReturnClass類,使JAX-WS意識到這一點? 還是我做了其他錯誤?

回答

1

我不確定wheter這是做了正確的方式,但在這裏我想返回一個集合一個情況下,我裹在另一個類中的集合:

@WebService 
public class MyClass { 
    public CollectionOfStuff getArrayOfStuff() { 
     return new CollectionOfStuff(new ReturnClass(), new ReturnClass()); 
    } 
} 

然後:

public class CollectionOfStuff { 
    // Stuff here 
    private List<ReturnClass> = new ArrayList<ReturnClass>(); 
    public CollectionOfStuff(ReturnClass... args) { 
     // ... 
    } 
} 

聲明:我沒有在我面前的實際代碼,所以我想我的例子缺乏一些註釋或類似的東西,但這是它的要點。

+0

+1這正是我剛剛嘗試過的。它有效,但我也不相信這是'正確'的方式。 – Brabster 2010-08-10 12:17:02