返回单个结果,但Web服务有多种类型?在Java?

时间:2015-08-18 11:57:19

标签: java cxf jax-ws aegis

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

Object GetResults(){}

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

  

注意:我使用Java和CXF,Aegis,带注释。

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

Employee getEmployee(string name) {}

abstract class Employee {}

class SalariedEmployee extends Employee {}

WCF .NET 中,有一个名为 KnownTypes 的功能可以处理这些情况。
Java CXF Aegis ,带注释有类似内容吗?

1 个答案:

答案 0 :(得分:0)

JAXB中有一个名为@XmlSeeAlso的注释。这可以用于使用后代类型来装饰Employee基类。不幸的是,Aegis数据绑定不利用此注释。但是,CXF中的默认JAXB数据绑定确实遵循此注释。这解决了上面的SalariedEmployee场景。与此相当的是.NET是KnownType属性。

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