Spring 5.X+CXF 3.X 开发SOAP Web Service Client客户端实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oscar999/article/details/84143910
  1. 服务接口, 可以使用soapui产生
    @WebService(targetNamespace = “http://service.demo.ws.osxm.com/”)
    public interface DemoSoapWsService {

    @WebMethod(operationName = “get”)
    public Demo get();
    }

2.配置

<jaxws:client id="demoSoapWsClient" serviceClass="com.osxm.integ.ws.demo.DemoSoapWsService" address="${demoSoapWsClientAddress}" />

3.调用

    ApplicationContext context = new ClassPathXmlApplicationContext("webservice-client.xml");
    DemoSoapWsService demoSoapWsService = (DemoSoapWsService) context.getBean("demoSoapWsClient");
    Demo demo = demoSoapWsService.get();
    System.out.println("DemoSoapWsService:"+demo.getName());

错误1:需要默认构造方法

Exception in thread “main” javax.xml.ws.soap.SOAPFaultException: Unexpected wrapper element {http://demo.client.ws.osxm.com/}get found. Expected {http://impl.service.demo.ws.osxm.com/}get.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:160)
at com.sun.proxy. P r o x y 37. g e t ( U n k n o w n S o u r c e ) a t c o m . o s x m . w s . c l i e n t . d e m o . D e m o S o a p W s C l i e n t . m a i n ( D e m o S o a p W s C l i e n t . j a v a : 34 ) C a u s e d b y : o r g . a p a c h e . c x f . b i n d i n g . s o a p . S o a p F a u l t : U n e x p e c t e d w r a p p e r e l e m e n t h t t p : / / d e m o . c l i e n t . w s . o s x m . c o m / g e t f o u n d . E x p e c t e d h t t p : / / i m p l . s e r v i c e . d e m o . w s . o s x m . c o m / g e t . a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . S o a p 11 F a u l t I n I n t e r c e p t o r . u n m a r s h a l F a u l t ( S o a p 11 F a u l t I n I n t e r c e p t o r . j a v a : 86 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . S o a p 11 F a u l t I n I n t e r c e p t o r . h a n d l e M e s s a g e ( S o a p 11 F a u l t I n I n t e r c e p t o r . j a v a : 52 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . S o a p 11 F a u l t I n I n t e r c e p t o r . h a n d l e M e s s a g e ( S o a p 11 F a u l t I n I n t e r c e p t o r . j a v a : 41 ) a t o r g . a p a c h e . c x f . p h a s e . P h a s e I n t e r c e p t o r C h a i n . d o I n t e r c e p t ( P h a s e I n t e r c e p t o r C h a i n . j a v a : 307 ) a t o r g . a p a c h e . c x f . i n t e r c e p t o r . A b s t r a c t F a u l t C h a i n I n i t i a t o r O b s e r v e r . o n M e s s a g e ( A b s t r a c t F a u l t C h a i n I n i t i a t o r O b s e r v e r . j a v a : 113 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . C h e c k F a u l t I n t e r c e p t o r . h a n d l e M e s s a g e ( C h e c k F a u l t I n t e r c e p t o r . j a v a : 69 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . C h e c k F a u l t I n t e r c e p t o r . h a n d l e M e s s a g e ( C h e c k F a u l t I n t e r c e p t o r . j a v a : 34 ) a t o r g . a p a c h e . c x f . p h a s e . P h a s e I n t e r c e p t o r C h a i n . d o I n t e r c e p t ( P h a s e I n t e r c e p t o r C h a i n . j a v a : 307 ) a t o r g . a p a c h e . c x f . e n d p o i n t . C l i e n t I m p l . o n M e s s a g e ( C l i e n t I m p l . j a v a : 806 ) a t o r g . a p a c h e . c x f . t r a n s p o r t . h t t p . H T T P C o n d u i t Proxy37.get(Unknown Source) at com.osxm.ws.client.demo.DemoSoapWsClient.main(DemoSoapWsClient.java:34) Caused by: org.apache.cxf.binding.soap.SoapFault: Unexpected wrapper element {http://demo.client.ws.osxm.com/}get found. Expected {http://impl.service.demo.ws.osxm.com/}get. at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:806) at org.apache.cxf.transport.http.HTTPConduit WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1682)
at org.apache.cxf.transport.http.HTTPConduit W r a p p e d O u t p u t S t r e a m . h a n d l e R e s p o n s e ( H T T P C o n d u i t . j a v a : 1559 ) a t o r g . a p a c h e . c x f . t r a n s p o r t . h t t p . H T T P C o n d u i t WrappedOutputStream.handleResponse(HTTPConduit.java:1559) at org.apache.cxf.transport.http.HTTPConduit WrappedOutputStream.close(HTTPConduit.java:1356)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:653)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:520)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:429)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:283)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138)
… 2 more

错误2:Unexpected wrapper element, 原因是需要加上命名空间
@WebService(targetNamespace=“http://impl.service.demo.ws.osxm.com/”)
public interface DemoSoapWsService {

Exception in thread “main” javax.xml.ws.soap.SOAPFaultException: Unexpected wrapper element {http://demo.client.ws.osxm.com/}get found. Expected {http://impl.service.demo.ws.osxm.com/}get.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:160)
at com.sun.proxy. P r o x y 38. g e t ( U n k n o w n S o u r c e ) a t c o m . o s x m . w s . c l i e n t . d e m o . D e m o S o a p W s C l i e n t . m a i n ( D e m o S o a p W s C l i e n t . j a v a : 34 ) C a u s e d b y : o r g . a p a c h e . c x f . b i n d i n g . s o a p . S o a p F a u l t : U n e x p e c t e d w r a p p e r e l e m e n t h t t p : / / d e m o . c l i e n t . w s . o s x m . c o m / g e t f o u n d . E x p e c t e d h t t p : / / i m p l . s e r v i c e . d e m o . w s . o s x m . c o m / g e t . a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . S o a p 11 F a u l t I n I n t e r c e p t o r . u n m a r s h a l F a u l t ( S o a p 11 F a u l t I n I n t e r c e p t o r . j a v a : 86 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . S o a p 11 F a u l t I n I n t e r c e p t o r . h a n d l e M e s s a g e ( S o a p 11 F a u l t I n I n t e r c e p t o r . j a v a : 52 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . S o a p 11 F a u l t I n I n t e r c e p t o r . h a n d l e M e s s a g e ( S o a p 11 F a u l t I n I n t e r c e p t o r . j a v a : 41 ) a t o r g . a p a c h e . c x f . p h a s e . P h a s e I n t e r c e p t o r C h a i n . d o I n t e r c e p t ( P h a s e I n t e r c e p t o r C h a i n . j a v a : 307 ) a t o r g . a p a c h e . c x f . i n t e r c e p t o r . A b s t r a c t F a u l t C h a i n I n i t i a t o r O b s e r v e r . o n M e s s a g e ( A b s t r a c t F a u l t C h a i n I n i t i a t o r O b s e r v e r . j a v a : 113 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . C h e c k F a u l t I n t e r c e p t o r . h a n d l e M e s s a g e ( C h e c k F a u l t I n t e r c e p t o r . j a v a : 69 ) a t o r g . a p a c h e . c x f . b i n d i n g . s o a p . i n t e r c e p t o r . C h e c k F a u l t I n t e r c e p t o r . h a n d l e M e s s a g e ( C h e c k F a u l t I n t e r c e p t o r . j a v a : 34 ) a t o r g . a p a c h e . c x f . p h a s e . P h a s e I n t e r c e p t o r C h a i n . d o I n t e r c e p t ( P h a s e I n t e r c e p t o r C h a i n . j a v a : 307 ) a t o r g . a p a c h e . c x f . e n d p o i n t . C l i e n t I m p l . o n M e s s a g e ( C l i e n t I m p l . j a v a : 806 ) a t o r g . a p a c h e . c x f . t r a n s p o r t . h t t p . H T T P C o n d u i t Proxy38.get(Unknown Source) at com.osxm.ws.client.demo.DemoSoapWsClient.main(DemoSoapWsClient.java:34) Caused by: org.apache.cxf.binding.soap.SoapFault: Unexpected wrapper element {http://demo.client.ws.osxm.com/}get found. Expected {http://impl.service.demo.ws.osxm.com/}get. at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:806) at org.apache.cxf.transport.http.HTTPConduit WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1682)
at org.apache.cxf.transport.http.HTTPConduit W r a p p e d O u t p u t S t r e a m . h a n d l e R e s p o n s e ( H T T P C o n d u i t . j a v a : 1559 ) a t o r g . a p a c h e . c x f . t r a n s p o r t . h t t p . H T T P C o n d u i t WrappedOutputStream.handleResponse(HTTPConduit.java:1559) at org.apache.cxf.transport.http.HTTPConduit WrappedOutputStream.close(HTTPConduit.java:1356)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:653)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:520)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:429)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:283)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138)
… 2 more

错误3:DemoFactory没有定义, 但是出现错误。 能正常运行。
此错误出现在服务器端。
看上去和<jaxws:server 配置Service有关。

Nov 14, 2018 1:39:33 PM org.apache.cxf.jaxb.io.DataReaderImpl createUnmarshaller
INFO: PropertyException setting Marshaller properties
javax.xml.bind.PropertyException: name: com.sun.xml.bind.ObjectFactory value: com.osxm.ws.demo.vo.DemoFactory@9804322
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.setProperty(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.setProperty(Unknown Source)
at org.apache.cxf.jaxb.io.DataReaderImpl.createUnmarshaller(DataReaderImpl.java:124)
at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:170)
at org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:109)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:412)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol C o n n e c t i o n H a n d l e r . p r o c e s s ( A b s t r a c t P r o t o c o l . j a v a : 754 ) a t o r g . a p a c h e . t o m c a t . u t i l . n e t . N i o E n d p o i n t ConnectionHandler.process(AbstractProtocol.java:754) at org.apache.tomcat.util.net.NioEndpoint SocketProcessor.doRun(NioEndpoint.java:1385)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor W o r k e r . r u n ( U n k n o w n S o u r c e ) a t o r g . a p a c h e . t o m c a t . u t i l . t h r e a d s . T a s k T h r e a d Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

猜你喜欢

转载自blog.csdn.net/oscar999/article/details/84143910