微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService客户端调用一直报java.lang.RuntimeException: Cannot create a secure XMLInputFactory错误

问题回顾:

我使用的是CXF(apache-cxf-2.7.12)框架开发WebService,WebService服务器端发布成功,通过浏览器也可以顺利生成wsdl文档,但是通过wsdl2java把服务器端java代码引入到客户端以后,写Test类调用服务器端的接口,一直抛java.lang.RuntimeException: Cannot create a secure XMLInputFactory异常,麻痹的纠结了半天,客户端详细报错如下:

2014-10-11 14:03:39 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging

警告: Interceptor for {http://impl.ws.cxf.org/}HelloWordWs has thrown exception,unwinding Now
java.lang.RuntimeException: Cannot create a secure XMLInputFactory
at org.apache.cxf.staxutils.StaxUtils.createXMLInputFactory(StaxUtils.java:314)
at org.apache.cxf.staxutils.StaxUtils.getXMLInputFactory(StaxUtils.java:264)
at org.apache.cxf.staxutils.StaxUtils.createXMLStreamReader(StaxUtils.java:1443)
at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:123)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:355)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:319)
at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:65)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.Abstracthttpconnection.handleRequest(Abstracthttpconnection.java:494)
at org.eclipse.jetty.server.Abstracthttpconnection.content(Abstracthttpconnection.java:982)
at org.eclipse.jetty.server.Abstracthttpconnection$RequestHandler.content(Abstracthttpconnection.java:1043)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.Asynchttpconnection.handle(Asynchttpconnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)

at java.lang.Thread.run(Thread.java:619)

解决方法

原来是缺少了stax2-api-3.1.4.jar和woodstox-core-asl-4.4.0.jar这两个jar包。如果只添加woodstox-core-asl-4.4.0.jar包,服务端可以发布成功,但是通过浏览器生成wsdl文档会报500错误,这两个jar在服务器端缺一不可,客户端不需要任何jar包

CXF的基本jar包如下:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐