Интерфейсы как типы возврата с JAX-WS + JAXB - PullRequest
1 голос
/ 14 марта 2012

Мне кажется, я просто упускаю что-то простое здесь, но вот то, из чего я работаю ...

@WebService
public interface MyService {
     public AnInterface doStuff();
}

Вот кое-что из того, что я попробовал.Все с CXF 2.5.2 + Spring в Weblogic 10.3.4 ...

  1. Используйте @XmlSeeAlso в интерфейсе MyService и AnInterface, чтобы указать JAXB на класс AnInterfaceImpl.Это все еще привело к тому, что печально известный JAXB не может обработать исключение интерфейсов.
  2. Использовал @XmlElementReference для метода, но это имело тот же эффект, что и item (1), и, по-видимому, для сериализации свойств
  3. Используйте метод @ResponseWrapper, но, насколько я понимаю, CXF делает это автоматически (Bare vs Wrapped), но я могу ошибаться.Хотя это позволило создать WSDL, маршалинг во время выполнения всегда возвращал объект по умолчанию.Возможно, я неправильно понимаю, как эта аннотация должна работать.

Я предполагаю, что есть какой-то способ легко аннотировать, что AnInterface должен быть выставлен через
AnInterfaceImpl из класса MyService довольнолегко, но я пропускаю какой-то важный и простой шаг.

1 Ответ

1 голос
/ 20 марта 2012

Хитрость заключается в использовании @XmlJavaTypeAdapter на целевых интерфейсах, как описано здесь .Мне не очевидно, почему это работает, когда другие методы, кажется, терпят неудачу.

...