Weblogic部署CXF WebService报错解决办法
问题描述:有个CXF WebService项目部署到Tomcat能正常运行,客户端也能正常调用。部署到Weblogic,同样也能成功访问wsdl,但是客户端请求时报错cannot create a secure XmlInputFactory。
原因:缺少woodstox-core-asl-4.4.1.jar和stax2-api-3.1.4.jar包。引入以后还报错说明这个jar包可能没有被有效加载,也许跟其他jar包有冲突。
网上有几种解决方案整理如下:1.Tomcat加载jar是有顺序的,同一个路径下按名称排序后自上而下依次加载,于是把woodstox-core-asl-4.4.1.jar重命名为awoodstox-core-asl-4.4.1.jar,a开头让它排第一个首先加载。
2. 在项目路径下WebContent\WEB-INF\weblogic.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>
原因是weblogic里面自带的jax-ws包把项目里的cxf包冲掉了。所以,上面的XML配置是为了使项目的jar包优先于weblogic的jar包。3.初始化系统设置
public class SealManageListener implements ServletContextListener {
private static final Logger logger = Logger.getLogger(SealManageListener.class);
@Override
public void contextDestroyed(ServletContextEvent arg0) {
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
// TODO Auto-generated method stub
props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1");
logger.debug("系统初始化设置.....");
Properties props = System.getProperties();
props.setProperty("UseSunHttpHandler", "true");
}
}
原因:https://blog.csdn.net/swear_fling/article/details/45232875
以上方法都试过了,还是报错。
参考下面三篇文章解决了我的问题。
感谢:
https://blog.csdn.net/yy_love_my/article/details/43305021
解决办法:
1. 导入woodstox-core-asl-4.4.1.jar和stax2-api-3.1.4.jar包
2.在项目路径下WebContent\WEB-INF\weblogic.xml中增加内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90">
<context-root>/</context-root>
<container-descriptor>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
<prefer-application-packages>
<package-name>com.ctc.wstx.*</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>
3.删除项目中的冲突的wstx-asl-3.2.1.jar包
欢迎转载,转载请注明出处:
https://blog.csdn.net/u014644574/article/details/80024882,谢谢!