WebService接口调用时,出现java.lang.RuntimeException: org.apache.cxf.interceptor.Fault异常,求破解 50

java.lang.RuntimeException:org.apache.cxf.interceptor.Fault:异常org.apache.cxf.intercep... java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: 异常
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:102)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:315)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
com.shpy.ebpm.filter.LoginTimeOutFilter.doFilter(LoginTimeOutFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause
展开
 我来答
玥儿儿儿儿儿儿
2018-04-11 · TA获得超过1.3万个赞
知道小有建树答主
回答量:151
采纳率:100%
帮助的人:24.2万
展开全部

关于这个错误,在开发调试过程中可以先通过辅助工具来观察它原始的 xml 内容是什么样的,这段 xml内容中包括一个 fault相关联的 xml 标签,里面记录着异常消息的原始文本,不管是哪个 web service API 它们要处理的 XML 内容是完全相同的标准。

但是如果这个异常是在你这个客户端本身抛出的而不是从远程服务端返回的那就复杂些,需要看其它的日志。像很多开源的软件都有一套日志,比如假设它使用了 log4j 啥的,我们就可以配置一个 log4j.properties 并把 org.apache.cxf 的 logger category 启用 all 或 debug 级别的日志输出,这也是一个观察 CXF 中间如何处理一个例外情况的分析方法。实在不行就找  CXF 的源码或反编译这个异常 Stack Trace 中提到的那几个类猜测一下可能的原因。

WebService几个常见的异常分类:

1、如果出现这个错误:java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException,原因是没有导入 axis2-saaj.jar包

2、如果出现这个错误:java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException,原因是没有导入 axis2-saaj.jar包

3、如果出现这个错误:org.apache.commons.logging.LogFactory,原因是没有导入commons-logging.jar包

4、如果出现这个错误:Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Error invoking (……) Nested exception is java.lang.reflect.InvocationTargetException: null,原因是代码上传到服务器时不完全导致的。

jamxval
2014-09-18 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1378万
展开全部
exception 的内容是什么嘛?不会是这么简单的 "异常" 两个字吧,而且你看到的是中文的异常哦。

关于这个错误,我觉得你在开发调试过程中可以先通过辅助工具来观察它原始的 xml 内容是什么样的,这段 xml 内容中包括一个 fault 相关联的 xml 标签,里面记录着异常消息的原始文本,不管是哪个 web service API 它们要处理的 XML 内容是完全相同的标准。

而如果这个异常是在你这个客户端本身抛出的而不是从远程服务端返回的那就复杂些,需要看其它的日志。像很多开源的软件都有一套日志,比如假设它使用了 log4j 啥的,我们就可以配置一个 log4j.properties 并把 org.apache.cxf 的 logger category 启用 all 或 debug 级别的日志输出,这也是一个观察 CXF 中间如何处理一个例外情况的分析方法。实在不行就找 CXF 的源码或反编译这个异常 Stack Trace 中提到的那几个类猜测一下可能的原因。
追问
是啊,就是只说了个异常让人很蛋疼
追答
那你能推断这个异常是客户端抛出的还是从服务端返回来的么?如果是服务端返回的只有“异常”两个字,我们就没办法了,只能让界面上显示“未知系统错误”。

如果是客户端出现的错误就是我们的程序的责任我们需要分析出原因并在界面上告知用户这是他们输入了错误的数据还是因为系统出现什么未知错误。

分析客户端抛出的异常的方法前面已经讲过了,如果 CXF 也用到了 log4j 我们可以增加或修改 log4j.properties 配置让它开启 org.apache.cxf 的 logger 在 debug 级别上把所有消息打印出来我们按时间顺序来分析可能是哪个数据出现了问题。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式