我正在使用框架xFire在我的Web应用程序中发布web服务。在这个服务中,我在List< GlobaleType>等操作中使用抽象返回类型。操作具体返回值是ArrayList< SpecialType>。
具体类SpecialType扩展了抽象类GlobaleType。在生成的WSDL文档中,只给出了GlobaleType,附加定义为abstract =“true”。生成的客户端(在apache轴的帮助下)只创建一个抽象类GlobaleType,它不能用于实例化。
有人知道为什么wsdl合同错了吗?
答案 0 :(得分:1)
如果我理解正确,您的网络方法签名是:
public List<GlobaleType> doSomething(args)
然后正确生成你的wsdl。只要apache轴知道SpecialType扩展了GlobalType,那么最终类型就可以通过webservice发送,并且多态将从Web服务转移到客户端。
您使用的是JAX-WS Web服务吗?然后确保在基类型上使用@XmlSeeAlso注释。