代码之家  ›  专栏  ›  技术社区  ›  brabster

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

  •  2
  • brabster  · 技术社区  · 15 年前

    我发现无法从我的JAX-WSWeb服务返回集合。

    我很欣赏Java集合API可能不支持所有的客户端,所以我切换到返回数组,但我似乎也不能这样做。

    我的Web服务设置如下:

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

    而返回类只是一个pojo。我创建了另一个方法,它返回一个实例,这是可行的。当我使用集合/数组时,这似乎是一个问题。

    部署服务时,使用该服务时会收到以下异常:

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

    我是否需要以某种方式注释ReturnClass类以使JAX-WS知道它? 还是我做错了什么?

    1 回复  |  直到 15 年前
        1
  •  1
  •   waxwing    15 年前

    我不确定这是否是正确的方法,但在一个情况下,我想返回一个集合,我将集合包装在另一个类中:

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

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