如何使用Eclipse / AXIS2 POJO服务返回任意XML文档

时间:2011-10-24 14:50:38

标签: xml wsdl axis2 document bottom-up

如何使用Eclipse / AXIS2 POJO服务返回任意XML文档?

有关完整的背景详情,请参阅此问题: Java Web Service returns string with &gt; and &lt; instead of > and <

要部署Web服务,我有一个动态Web项目,其中包含一个定义我的服务接口的类。我关心的方法返回一个String类型。要创建和部署Web服务,我右键单击该类(包含在动态Web项目中)并选择create web service,这里我指出我想要一个“自下而上的Java bean Web服务”,并且服务实现来自于在我的动态Web项目中的类。这将启动我的服务并创建一个具有端口和端点定义的WSDL。

wsdl的types部分是根据将成为服务的代码自动生成的。 intrest的函数有一个org.w3c.DOM.Document,它包含我想要返回的XML。此文档将转换为字符串并返回,因为Document对象未序列化且没有公共构造函数。是否有另一种类型可以用作我的函数的返回类型,它将通过服务调用保存XML结构?

1 个答案:

答案 0 :(得分:2)

我认为不能通过您正在使用的技术和流程来完成。

理想情况下,您可以只返回org.w3c.dom.Document(或该框架中的类似DOM对象),它将在WSDL中提供“any”类型,但不幸的是,它似乎没有那样工作。 AXIS2是强类型的,需要数据绑定技术(例如ADB,XmlBeans,JiBX,可能是JAXB)来处理请求和响应数据。它似乎通过AXIOM services支持<xsd:any><xsd:anyType>元素,但这与您使用的实现方式不同。

参见这个有趣的讨论"Unknown type can not serialize" Exception。此外,这是一个相关的SO问题,AXiS2 - Problem in returning the String value. < and > are getting converted to &lt; and &gt;