搭建了一个SpringMVC + Mybatis +Tiles +Ehcache + JBPM + Apache CXF +Shiro + Rest ful 框架
在整合的时候CXF框架时候报了如下错误:
[org.apache.cxf.phase.PhaseInterceptorChain]Interceptor for {http://impl.cxf.services.common.com/}HelloWorldImplService#{http://interfaces.cxf.services.common.com/}sayHello has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Unexpected wrapper element {http://interfaces.webservices.admin.common.com/}sayHello found. Expected {http://interfaces.cxf.services.common.com/}sayHello.
at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:106)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:207)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:193)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:185)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:164)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.common.core.busi.other.filter.SessionFilter.doFilterInternal(SessionFilter.java:85)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:401)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:267)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:245)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:260)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
[org.apache.cxf.phase.PhaseInterceptorChain]Adding interceptor org.apache.cxf.jaxws.interceptors.WebFaultOutInterceptor@d6d53c to phase pre-protocol
[org.apache.cxf.phase.PhaseInterceptorChain]Adding interceptor org.apache.cxf.interceptor.MessageSenderInterceptor@4986c8 to phase prepare-send
[org.apache.cxf.phase.PhaseInterceptorChain]Adding interceptor org.apache.cxf.interceptor.StaxOutInterceptor@12feafc to phase pre-stream
[org.apache.cxf.phase.PhaseInterceptorChain]Adding interceptor org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor@ec46ff to phase write
[org.apache.cxf.phase.PhaseInterceptorChain]Adding interceptor org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor@294944 to phase write
[org.apache.cxf.phase.PhaseInterceptorChain]Adding interceptor org.apache.cxf.binding.soap.interceptor.Soap11FaultOutInterceptor@8923f5 to phase prepare-send
[org.apache.cxf.phase.PhaseInterceptorChain]Chain org.apache.cxf.phase.PhaseInterceptorChain@197c1b1 was created. Current flow:
prepare-send [MessageSenderInterceptor, Soap11FaultOutInterceptor]
pre-stream [StaxOutInterceptor]
pre-protocol [WebFaultOutInterceptor]
write [SoapOutInterceptor] 解决方案:
原因是cxf中定义的web service接口的包的路径与客户端不一致导致.
我定义的服务器端包路径为:interfaces.cxf.services.common.com
而客户端是:interfaces.webservices.admin.common.com 改成一致即可.