zoukankan      html  css  js  c++  java
  • 在cxf中使用配置避免增加字段导致客户端必须更新的问题

    在使用cxf实现webservice时,经常碰到的问题就是如果在服务端,修改了一个接口的签名实现,如增加一个字段,或者删除一个字段。在这种情况下,在默认的配置中,就会报以下的错误信息: Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"type"). Expected elements are <{}createTime>,<{}cou nt>,<{}auditStep>,<{}remark>,<{}shopsString>,<{}state>,<{}creator>,<{}id>,<{}startTime>,<{}shops>,<{}isPrivate>,<{}exchangeUnit>,<{} description>,<{}exchangeCount>,<{}name>,<{}limitTime>,<{}businessId>,<{}updateTime>,<{}categoryId>,<{}image>,<{}isHot>,<{}isDeleted> ,<{}price>,<{}showOrder>,<{}usage> 这种错误是客户端使用的传输对象与服务端接收的参数的字段不匹配导致的。但如果,每次修改服务端的实现,都需要更新客户端,就会出现一些问题,如在某些情况下,客户端的更新是不可能的事(如不在自己掌握之内,或者服务不能随便更新,或者其它原因)。

    如果避免这种问题,可以禁用cxf中的字段信息验证,如果禁用掉此验证,就不再会对相应的字段信息进行验证,同时没有的字段也会自动的忽略。在配置文件spring_cxf_client.xml中增加以下配置项:

    <jaxws:client id="bmc4WebServiceImpl" serviceClass="com.joysim.esm.external.service.Bmc4WebService" address="http://localhost/bmc/ws/bmc4WebService" >
            <jaxws:properties>
                <entry key="set-jaxb-validation-event-handler" value="false"/>
            </jaxws:properties>
        </jaxws:client>

    这样,即会禁用掉所有cxf的数据验证,在大多数情况下,这可以满足我们的要求, 除非你有其它和cxf集成的数据验证要求。

  • 相关阅读:
    runc create container 流程分析
    cri-o pod 创建源码分析
    hyperstart 容器创建流程分析
    MIT jos 6.828 Fall 2014 训练记录(lab 4)
    python 邮件发送 脚本
    jvm: 理解gc日志
    jvm:垃圾收集器
    GC 垃圾收集
    jvm结构
    Java transient关键字使用小记
  • 原文地址:https://www.cnblogs.com/jimor/p/3418183.html
Copyright © 2011-2022 走看看