Невозможно вернуть коллекции или массивы из веб-службы JAX-WS - PullRequest
2 голосов
/ 10 августа 2010

Я обнаружил, что не могу вернуть коллекции из моей веб-службы JAX-WS.

Я ценю, что API Java Collections может поддерживаться не всеми клиентами, поэтому я переключился на возврат массива, но, похоже, я тоже не могу этого сделать.

Я настроил свой веб-сервис следующим образом:

@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 Ответ

1 голос
/ 10 августа 2010

Я не уверен, правильно ли это сделано, но в одном случае, когда я хотел вернуть коллекцию, я поместил коллекцию в другой класс:

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

Отказ от ответственности: у меня нет действительного кода передо мной, поэтому я предполагаю, что в моем примере отсутствуют некоторые аннотации или тому подобное, но в этом суть.

...