CXF如何实现向后兼容

fxhnkf 2013-09-23
当在CXF服务端pojo中添加一个新属性后,客户端如果没有重新构建,则调用服务端时会报出错误。异常如下
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"", local:"areaId").

这个问题在低版本cxf中并不存在(具体版本号忘记了),但是在2.2版本中是存在的。

想跟大家请教一下,有何好的办法可以解决这个问题。网上找到过一个解决方案,原理是写一个自定义的ValidationEventHandler,在出现错误时,判断错误信息的开头,是不是以“unexpected element”开头的,如果是,忽略。

这个方案感觉不是很牢靠,最明显的一点,在多语言环境下,错误信息是不确定的(可能是中文"意外的元素")。

还希望大家多多指点。
waterborn 2013-09-24
修改 jaxb-impl.jar 中的实现, 忽略该错误。
fxhnkf 2013-09-26
难道就没有不修改标准实现的做法,比如cxf是否提供配置项,可以实现打开或者关闭校验
fxhnkf 2013-09-27
终于找到了一个相对比较好一点的处理方法,设置cxf的一个配置项
set-jaxb-validation-event-handler为false就可以了,
<cxf:properties>   
    <entry key="set-jaxb-validation-event-handler" value="false"/> </cxf:properties>


具体内容,大家可以看这篇文章
http://www.iflym.com/index.php/code/201307310001.html
xiongyanzhi 2015-01-22
为什么找到这个cxf.xml不能编辑……而且在cxf-bean.xml里添加会报错,没有这个属性啊
Global site tag (gtag.js) - Google Analytics