使用SpringWebService模板的原始xml响应
我正在编写一个客户端,使用webserviceTemplate(SpringWS)调用SOAP Web服务。我正在使用JAXB将wsdl转换为POJO。我将请求作为POJO发送到webservice,但是我希望响应是xml格式的(原始xml而不是未格式化的POJO格式)使用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
<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,以解决将来可能与外部源发生的争议。因此,在解组之前,我需要准确的字节,以防编码/顺序有任何差异。