cxf客户端调用服务报Cannot create a secure XMLInputFactory 错误
网上普遍的解决方法是:
服务器端缺少了两个jar包 stax2-api-3.1.x.jar 和 woodstox-core-asl-4.2.x.jar,客户端不需要任何jar包。
实际情况:
1、服务器已经有上述两个jar包,并不能解决。
2、单独建立一个工程测试client,没有这个错误,在已有工程中调用就报这个错误。
其他说法:
主要原因是 客户端 与服务端的 接口包名不一致 造成的 这个问题
但没有具体解决方法,无法实验
最终解决:
参考http://www.th7.cn/Program/java/201604/839945.shtml
在调用方法前加上下面三句即可调用成功:
import java.util.Properties;
Properties props = System.getProperties(); props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1"); props.setProperty("UseSunHttpHandler", "true");
分享一下,希望对大家有所帮助;
补充:----------------------------
后来发现这个警告...包冲突,删除前面的包应该就可以了,加上上面那个三行也行;
Could not create a secure Stax XMLInputFactory. Found class com.ctc.wstx.stax.WstxInputFactory. Suggest Woodstox 4.2.0 or newer.
补充:----------------------------
或者将woodstox-core-asl-4.4.0.jar这个jar包前面加上前缀abc什么的,让他jar包排名提前,conger优先加载接口,也不用添加上述三行代码(代码意思应该也是让它优先加载)
当CXF客户端调用服务时遇到'Cannot create a secure XMLInputFactory'错误,常规解决办法是添加stax2-api和woodstox-core-asl jar包,但这并未奏效。实际问题可能由接口包名不一致引起。通过设置系统属性'org.apache.cxf.stax.allowInsecureParser'为'1'和'UseSunHttpHandler'为'true',可以解决此问题。此外,包冲突也可能导致警告,删除冲突包或调整jar包顺序也可避免该问题。
949

被折叠的 条评论
为什么被折叠?



