我发现我无法从JAX-WS Web服务返回集合。
我很欣赏所有客户端可能都不支持Java Collections API,所以我切换到返回一个数组,但我似乎也无法做到这一点。
我按如下方式设置了我的网络服务:
@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意识到它? 或者我做错了什么?
答案 0 :(得分:1)
我不确定这是否是正确的方法,但在一个案例中,我想要返回一个集合,我将该集合包装在另一个类中:
@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) {
// ...
}
}
免责声明:我没有在我面前的实际代码,所以我猜我的例子缺少一些注释或类似,但这是它的要点。