无法从JAX-WS Web Service返回集合或数组

时间:2010-08-10 11:31:39

标签: arrays collections jax-ws

我发现我无法从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意识到它? 或者我做错了什么?

1 个答案:

答案 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) {
       // ...
   }
}

免责声明:我没有在我面前的实际代码,所以我猜我的例子缺少一些注释或类似,但这是它的要点。