Хобрук: Ваш путь к мастерству в программировании

Интерфейсы как возвращаемые типы с JAX-WS + JAXB

Я думаю, что мне просто не хватает чего-то простого, но вот над чем я работаю...

@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 в методе, но это имело тот же эффект, что и пункт (1), и, похоже, предназначено для сериализации свойств.
  3. Используйте @ResponseWrapper в методе, но я понимаю, что CXF делает это автоматически (голый или завернутый), но я могу ошибаться. Хотя это позволяло создавать WSDL, маршалинг во время выполнения всегда возвращал объект по умолчанию. Возможно, я неправильно понимаю, как должна работать эта аннотация.

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

13.03.2012

  • Что произойдет, если вы добавите @Produces({MediaType.APPLICATION_XML})? Я думаю, что CXF по умолчанию имеет значение */*, так что может иметь значение, что клиент отправляет в заголовке accepts. 20.03.2012
  • @unhillbilly: я думаю, вы путаете JAX-RS с JAX-WS. В JAX-WS это всегда XML. Поправьте меня, если я ошибаюсь, я новичок. 20.03.2012
  • Вы на месте. Неважно :) 21.03.2012

Ответы:


1

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

20.03.2012
Новые материалы

Пример O (n²)
Две суммы: найти все пары, сумма которых равна целевому значению const arr = [1,4,5,7,9,3,1,2,-4,-6] Целевое значение = 9 Использование Brute Force для этого случая будет выполняться с..

Правильное тестирование машинного обучения: обнаружение ошибок в данных.
Эта статья была первоначально размещена на нашем сайте компании . Платформа для разработчиков Lakera позволяет командам машинного обучения создавать отказоустойчивые модели компьютерного..

Обучение SAP FICO в NOIDA.
Лучший провайдер SAP Training с целевым размещением SAP-коучинга в Нойде. Наш курс SAP концентрируется от коучинга базового уровня до продвинутого уровня и охватывает как функциональные, так и..

Sinkhorn Knopp: поиск оптимального транспорта для выравнивания данных
В области выравнивания данных и оптимального транспорта алгоритм Синкхорна-Кноппа стал мощным инструментом для решения задач оптимизации транспорта. С приложениями, варьирующимися от сопоставления..

Мой начальный путь к микросервисам с Spring Boot
Почему мы используем микросервисы? Микросервисы — это шаблон проектирования программного обеспечения, который включает создание большого приложения в виде набора небольших независимых..

Уменьшите количество шаблонов при запуске тестов Kotlin
Используя изящный трюк Kotlin, вы можете сделать свои тесты чистыми и простыми для понимания и обслуживания. Тестирование должно быть легким. Если ваши тесты слишком сложны и сложны в..

Понимание React.js: гармоничная симфония компонентов и модульность в стиле LEGO
Понимание React.js: гармоничная симфония компонентов и модульность в стиле LEGO Представляем искусство и науку, лежащую в основе строительных блоков React.js, React Components, которые помогают..