Spring Web服务:将bean解组为XML客户端的简单方法?

时间:2010-06-30 15:26:00

标签: java jaxb marshalling spring-ws jaxb2

我正在利用spring来完成我的bean对象的所有编组/解组(通过jaxb2Marshaller / WebServiceTemplate)。出于调试目的,我希望能够吐出请求/响应XML。有谁知道这是否可能?感谢。

1 个答案:

答案 0 :(得分:1)

备选方案A:使用TCP监视器

TCP / IP监视器可以很好地完成工作!

如果您正在使用Eclipse,则TCP / IP监视器视图是一个非常好的解决方案。

使用TCP监视器,您将客户端的请求发送到监视器,监视器打印请求并将其转发到服务器。响应从服务器发送回监视器。打印到显示器的显示屏后,显示器会将请求发送回客户端。

备选方案B:使用拦截器

要发布所有有错误的消息,您应该使用Spring WS的验证支持。

配置以在客户端启用验证:

<bean id="webServiceTemplate" class=
         "org.springframework.ws.client.core.WebServiceTemplate">
    <property name="marshaller" ref="marshaller" />
    <property name="unmarshaller" ref="marshaller" />
    <property name="defaultUri"
        value="http://localhost:8081/ws-demo/account-balance-service" />
    <property name="interceptors">
        <list>
            <ref bean="payloadValidatingInterceptor" />
        </list>
    </property>
</bean>

<bean id="payloadValidatingInterceptor"
          class="org.springframework.ws.client.support
         .interceptor.PayloadValidatingInterceptor">
    <property name="schema"
        value="file:WebContent/WEB-INF/schemas/account-balance-service.xsd" />
    <property name="validateRequest" value="true" />
    <property name="validateResponse" value="true" />
</bean>

您还可以添加自己的拦截器,可以使用有效负载执行任何操作。 我已经写了更多关于在客户端here和服务器端here进行验证的内容。