避免javax.xml.bind.UnmarshalException兼容一个更新的webservice

CXF的jaxb客户端调用webservice的情况下,默认情况下服务端更新了wsdl如xml增加了一个属性,假如不再根据wsdl重新生成client就会报错 javax.xml.bind.UnmarshalException: unexpected element ,但新增的这个元素对原有的业务又是无用的多余的。

那对于客户端来说就可以不升级client,解决办法是将set-jaxb-validation-event-handler 设置为false

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

Class clazz = MyService.class;
List<Interceptor> interceptors = new ArrayList<Interceptor>();
factory.setAddress("http://localhost:8080/MyService?wsdl");
factory.setServiceClass(clazz);
if(factory.getProperties()==null){
Map<String, Object> properties = new HashMap<String,Object>();
factory.setProperties(properties);
}
factory.getProperties().put("set-jaxb-validation-event-handler", "false");
client = (MyService)factory.create();

参考资料

http://cxf.547215.n5.nabble.com/How-to-deal-with-an-updated-WSDL-td552046.html

http://stackoverflow.com/questions/2195034/server-side-xml-validation-with-cxf-webservice

原创文章,转载请注明: 转载自海波无痕

本文链接地址: 避免javax.xml.bind.UnmarshalException兼容一个更新的webservice

文章的脚注信息由WordPress的wp-posturl插件自动生成

此条目发表在javaee, server分类目录,贴了, , , 标签。将固定链接加入收藏夹。

避免javax.xml.bind.UnmarshalException兼容一个更新的webservice》有 1 条评论

  1. 流氓兔说:

    感谢分享,完美的解决了我的问题。

    [回复]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论链接可以 移除 nofollow.