0

我需要从 Web 服务返回多个值...

Object GetResults(){}

对象可以是几种不同的类型。如何将这些已知类型添加到 Web 服务合同?有没有可以用来装饰我的界面的注释?

注意:我正在使用带有 CXF、Aegis 和注释的 Java。

同一问题的另一个变体是返回一个抽象类,但需要发送一个具体类型。

Employee getEmployee(string name) {}

abstract class Employee {}

class SalariedEmployee extends Employee {}

WCF.NET中,有一个称为KnownTypes的功能可以处理这些场景。Java
中是否有类似的东西与CXFAegis和 Annotations ?

4

1 回答 1

0

JAXB 中有一个名为@XmlSeeAlso 的注释。这可用于用后代类型装饰您的 Employee 基类。不幸的是,Aegis 数据绑定没有利用这个注释。但是,CXF 中的默认 JAXB 数据绑定确实尊重此注释。这解决了上面的 SalriedEmployee 场景。与此等效的是 .NET 是 KnownType 属性。

不幸的是,我们返回一个对象并需要确保从 Web 服务返回的所有有效类型都在 WSDL 中表示的第一个用例在代码优先开发中似乎是不可能的。在 .NET 中,您可以使用 ServiceKnownType 属性来公开这些类型。不幸的是,这在 Java 中似乎不可能进行代码优先开发。

于 2015-08-23T08:38:49.937 回答