一,解决步骤
1.添加jar包
stax2-api-3.1.4.jar
woodstox-core-asl-4.4.1.jar2.编写监听器
package com.dcits.portal.system.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* <p>Title: </p>
* <p>Description: weblogic容器部署CXF服务优先加载指定jar包</p>
* <p>Copyright:Copyright(c)2013</p>
* <p>Company:神州数码(深圳)有限公司</p>
* @date 2017-10-30
* @author zhangpeng
*/
public class CXFWeblogicListener implements ServletContextListener{
public CXFWeblogicListener() {
System.setProperty("org.apache.cxf.stax.allowInsecureParser", "1");
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
}
}
3.配置监听器
在web.xml下配置监听器
<!-- weblogic容器部署CXF服务监听器 -->
<listener>
<listener-class>com.dcits.portal.system.listener.CXFWeblogicListener</listener-class>
</listener>
二,思路分析
背景:公司有一个新需求需要实现两个系统之间互相跳转,我采用了通过webservice调用接口的方式进行身份验证,但是我调对方系统提供的接口可以,对方调我提供的接口总是报“Cannot create a secure XMLInputFactory”。
1.缺少jar包
上网搜索,说缺少两个jar包,我用的cxf是2.7版本的,故导入stax2-api-3.1.4.jar和woodstox-core-asl-4.4.1.jar,
但是还是会报“Cannot create a secure XMLInputFactory”异常。
2.添加监听器
按照网上介绍导入两个jar没有用,也试着修改weblogic.xml配置文件,优先加载指定的cxf jar包还是没用,这时我陷入了死胡同。于是认真的看了控制台报错日志: