java - Spring 网络服务 : easy way to un-marshall a bean to XML client side?

标签 java jaxb marshalling spring-ws jaxb2

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

最佳答案

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

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

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

使用 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 .

关于java - Spring 网络服务 : easy way to un-marshall a bean to XML client side?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3150732/

相关文章:

java - 如何获得与 JAXB 类中定义的相同的 XML 元素顺序

java - JPanel 未在 JFrame 上绘制

java - 使用 JAXB 解码 xml 文件

java - mongoDB测试返回值

java - 使用 Xstream 进行 XML 转换时的性能注意事项

c# - IntPtr 到字节数组并返回

c++ - 非托管 char * 数组到托管 C++ 中的托管 System::String

java - JAXB 编码(marshal)命名空间前缀

java - 在 Web 浏览器中无法看到 Java Maven Tomcat-plugin Web 应用程序

java - 选择均匀随机的位点来阻止剩余的阵列位点