我需要从Web服务返回多个值为...
Object GetResults(){}
对象可以是几种不同的类型。如何将这些已知类型添加到Web服务合同中?是否有我可以用?装饰我的界面的注释?
注意:我使用Java和CXF,Aegis,带注释。
同一问题的另一个变体是返回一个抽象类,但需要发送一个具体的类型。
Employee getEmployee(string name) {}
abstract class Employee {}
class SalariedEmployee extends Employee {}
在 WCF 和 .NET 中,有一个名为 KnownTypes 的功能可以处理这些情况。
Java 与 CXF , Aegis ,带注释有类似内容吗?
答案 0 :(得分:0)
JAXB中有一个名为@XmlSeeAlso的注释。这可以用于使用后代类型来装饰Employee基类。不幸的是,Aegis数据绑定不利用此注释。但是,CXF中的默认JAXB数据绑定确实遵循此注释。这解决了上面的SalariedEmployee场景。与此相当的是.NET是KnownType属性。
不幸的是,我们返回一个Object的第一个用例需要确保在WSDL中表示从Web服务返回的所有有效类型在代码优先开发时似乎是不可能的。在.NET中,您可以使用ServiceKnownType属性来公开这些类型。不幸的是,在代码优先开发的Java中,这似乎是不可能的。