解决 调用报错: “Cannot create a secure XMLInputFactory”

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://stackoverflow.com/questions/16046314/com-ctc-wstx-exc-wstxunexpectedcharexception-unexpected-character

https://blog.csdn.net/yy_love_my/article/details/43305021

https://bbs.csdn.net/topics/390491260


解决办法

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,谢谢!



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值