我正在使用 Spring WST 并使用 WCF SOAP 1.1 Web 服务。我使用 Apache 的 CXF Maven 插件从 WSDL 生成 Web 服务客户端。当我检查生成的类时,它看起来已经使用了 JAXB,并且此时一切都符合预期。
但是,当我向 Web 服务(通过 Spring WST)发送请求时,响应对象使用 Xerces ElementNSImpl 来表示响应。
这是正在发生的事情的一个例子;
- Apache CXF 生成对象名称 PersonResponseObject、PersonRequestObject
- 我填充 PersonRequestObject 并在 Spring WST 的帮助下提交
- WCF 服务按预期返回内容(我可以将 SOAP 响应打印到控制台),但是在解组期间,PersonResponseObject 被注入 Xerces 类型的 ElementNSImpl 类型。
在我看来,我需要在解组过程中明确强制使用 JAXB,但是我不确定这是否是我需要告诉 Spring Tenplate 或其他地方的事情。
任何熟悉这个问题并有任何建议的人?返回的 XML 示例
<?xml version="1.0" encoding="utf-8"?>
<PersonResponseObject xmlns="http://tempuri.org/">
<PersonResponseObjectResult>
<xs:schema xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema" id="NewDataSet">
<xs:element msdata:IsDataSet="true" msdata:UseCurrentLocale="true" name="NewDataSet">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="ActivityName" type="xs:string" />
<xs:element minOccurs="0" name="ActivityDesc" type="xs:string" />
<xs:element minOccurs="0" name="Activityid" type="xs:int" />
<xs:element minOccurs="0" name="code" type="xs:string" />
<xs:element minOccurs="0" name="Status" type="xs:string" />
<xs:element minOccurs="0" name="PlanDate" type="xs:string" />
<xs:element minOccurs="0" name="Duedate" type="xs:string" />
<xs:element minOccurs="0" name="IsRequired" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="ReqStatus" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<NewDataSet xmlns="">