环境:
Weblogic版本:10.3.6
CXF :3.1.8
问题描述:
项目在Tomcat中启动运行正常,调用服务正常,在Weblogic中项目启动运行正常,调用服务时,报错:java.lang.RuntimeException: Cannot create a secure XMLInputFactory
经百度、Google后收集问题解决方案,最终项目中有效的解决方案为:
在调用方法前加上下面三句即可调用成功:
import java.util.Properties;
Properties props = System.getProperties();
props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1");
props.setProperty("UseSunHttpHandler", "true");
链接:https://my.oschina.net/u/2474381/blog/662144
其他对本次报错无效的相关方案有:
1、缺少了两个jar包 stax2-api-3.1.x.jar 和 woodstox-core-asl-4.2.x.jar。
2、将woodstox-core-asl-4.4.0.jar这个Jar改名增加前缀变为awoodstox-core-asl-4.4.0.jar,使其优先加载。
链接:http://blog.csdn.net/fengcheqidong/article/details/40423517
3、原因是 客户端 与服务端的 接口包名不一致 造成的。
4、修改在Weblogic配置文件:安装目录\wlserver_10.3\server\lib\consoleapp\META-INF下weblogic-application.xml文件。
5、在引用stax2-api-3.1.1.jar的情况下排除stax-api-1.0.1.jar的依赖。
(Maven中排除依赖要在<dependencies>中,而不是 <dependencyManagement>中)
链接:http://blog.csdn.net/yy_love_my/article/details/43305021
6、在cxf webservice项目路径下(WebContent\WEB-INF\weblogic.xml)增加这个XML文件。
<?xml version="1.0" encoding="UTF-8" ?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<index-directory-enabled>true</index-directory-enabled>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
链接:http://blog.csdn.net/editcue/article/details/15505433
7、另附 stackoverflow上一个相同问题链接
链接:https://stackoverflow.com/questions/20114945/cxf-web-service-client-cannot-create-a-secure-xmlinputfactory