使用SpringWebService模板的原始xml响应

使用SpringWebService模板的原始xml响应,spring,Spring,我正在编写一个客户端,使用webserviceTemplate(SpringWS)调用SOAP Web服务。我正在使用JAXB将wsdl转换为POJO。我将请求作为POJO发送到webservice,但是我希望响应是xml格式的(原始xml而不是未格式化的POJO格式) <bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/> <bean id="ma

我正在编写一个客户端,使用webserviceTemplate(SpringWS)调用SOAP Web服务。我正在使用JAXB将wsdl转换为POJO。我将请求作为POJO发送到webservice,但是我希望响应是xml格式的(原始xml而不是未格式化的POJO格式)

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>
marshalSendAndReceive(requestPayload)将给我未经处理的pojo对象作为输出,但我需要原始xml作为webservice调用的响应

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>
还有一个查询,如果我将响应作为原始xml,是否仍需要将marshaller bean定义为:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>

(当我定义此封送拆收器时,我得到的错误是无法将类型“com.abc.xyz.GetAbc”封送为元素,因为它缺少@XmlRootElement注释]

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>

任何帮助。

对您来说可能太晚了,但是要将POJO封送回XML,您可以使用

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>
最终结果marshallerResult=new StringResult();
marshaller.Marshall(输入,marshallerResult);
其中,
marshaller
是您在
wsTemplate
中使用的

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>

StringResult
来自
org.springframework.xml.transform

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>
为了从WSDL生成POJO,我使用maven插件

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>

org.apache.cxf
cxf-codegen插件
${cxf codegen plugin.version}
wsdl2java
手动生成源
${basedir}/src/main/resources/wsdl/service.wsdl
-冗长的
-b
${basedir}/src/main/resources/wsdl/bindings.xml
-客户
-xjc Xts
wsdl2java
org.codehaus.woodstox
stax2 api
3.1.1
org.apache.cxf
cxf xjc ts
2.2.12
org.jvnet.jaxb2_commons
jaxb2基础知识jaxb xjc
2.1.13
其中
binding.xml
文件

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.abc.xyz" />
</bean>

Upvoted,但是:我之所以读这篇文章,是因为我想存储传入的XML,以解决将来可能与外部源发生的争议。因此,在解组之前,我需要准确的字节,以防编码/顺序有任何差异。