Возврат одного результата, но нескольких типов из веб-службы? На яве?

Мне нужно вернуть несколько значений из веб-службы как...

Object GetResults(){}

Объект может быть нескольких разных типов. Как добавить эти известные типы в контракт веб-службы? Есть ли аннотация, которой я могу украсить свой интерфейс?

ПРИМЕЧАНИЕ: я использую Java с CXF, Aegis, с аннотациями.

Другой вариант той же проблемы - возврат абстрактного класса, но при этом необходимо отправить конкретный тип.

Employee getEmployee(string name) {}

abstract class Employee {}

class SalariedEmployee extends Employee {}

В WCF и .NET есть функция KnownTypes, которая обрабатывает эти сценарии.
Есть ли что-то похожее в Java с CXF, Aegis, с аннотациями?

1 ответ

В JAXB есть аннотация под названием @XmlSeeAlso. Это может быть использовано для украшения вашего базового класса Employee типами-потомками. К сожалению, привязка данных Aegis не использует эту аннотацию. Однако привязка данных JAXB по умолчанию в CXF учитывает эту аннотацию. Это решает сценарий SalariedEmployee выше. Эквивалентом этого является.NET - атрибут KnownType.

К сожалению, первый вариант использования, в котором мы возвращаем Object и должен гарантировать, что все типы, которые действительны для возврата из веб-службы, представлены в WSDL, не представляется возможным при первой разработке кода. В.NET вы можете использовать атрибут ServiceKnownType для предоставления этих типов. К сожалению, это просто не представляется возможным в Java с первой разработкой кода.

Другие вопросы по тегам