Spring 5.X+CXF 3.X 开发SOAP Web Service Client客户端实例
服务接口, 可以使用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.Proxy37.get(UnknownSource)atcom.osxm.ws.client.demo.DemoSoapWsClient.main(DemoSoapWsClient.java:34)Causedby:org.apache.cxf.binding.soap.SoapFault:Unexpectedwrapperelementhttp://demo.client.ws.osxm.com/getfound.Expectedhttp://impl.service.demo.ws.osxm.com/get.atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:806)atorg.apache.cxf.transport.http.HTTPConduitProxy37.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.HTTPConduitProxy37.get(UnknownSource)atcom.osxm.ws.client.demo.DemoSoapWsClient.main(DemoSoapWsClient.java:34)Causedby:org.apache.cxf.binding.soap.SoapFault:Unexpectedwrapperelementhttp://demo.client.ws.osxm.com/getfound.Expectedhttp://impl.service.demo.ws.osxm.com/get.atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:806)atorg.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponseInternal(HTTPConduit.java:1682)
at org.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponse(HTTPConduit.java:1559)atorg.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponse(HTTPConduit.java:1559) at org.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponse(HTTPConduit.java:1559)atorg.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.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.Proxy38.get(UnknownSource)atcom.osxm.ws.client.demo.DemoSoapWsClient.main(DemoSoapWsClient.java:34)Causedby:org.apache.cxf.binding.soap.SoapFault:Unexpectedwrapperelementhttp://demo.client.ws.osxm.com/getfound.Expectedhttp://impl.service.demo.ws.osxm.com/get.atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:806)atorg.apache.cxf.transport.http.HTTPConduitProxy38.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.HTTPConduitProxy38.get(UnknownSource)atcom.osxm.ws.client.demo.DemoSoapWsClient.main(DemoSoapWsClient.java:34)Causedby:org.apache.cxf.binding.soap.SoapFault:Unexpectedwrapperelementhttp://demo.client.ws.osxm.com/getfound.Expectedhttp://impl.service.demo.ws.osxm.com/get.atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)atorg.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)atorg.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)atorg.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:806)atorg.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponseInternal(HTTPConduit.java:1682)
at org.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponse(HTTPConduit.java:1559)atorg.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponse(HTTPConduit.java:1559) at org.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.handleResponse(HTTPConduit.java:1559)atorg.apache.cxf.transport.http.HTTPConduitWrappedOutputStream.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.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:754)atorg.apache.tomcat.util.net.NioEndpointConnectionHandler.process(AbstractProtocol.java:754) at org.apache.tomcat.util.net.NioEndpointConnectionHandler.process(AbstractProtocol.java:754)atorg.apache.tomcat.util.net.NioEndpointSocketProcessor.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.ThreadPoolExecutorWorker.run(UnknownSource)atorg.apache.tomcat.util.threads.TaskThreadWorker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThreadWorker.run(UnknownSource)atorg.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Spring 5.X+CXF 3.X 开发SOAP Web Service Client客户端实例相关推荐
- Spring 5.X+CXF 3.X 开发SOAP Web Service服务端实例
方式1:使用 jaxws:server 步骤1. 定义返回的Model POJO的定义, 最好是加上默认构造函数.服务端不加不会出错, 但是在客户端调用的时候类似的Model定义不加默认构造函数会出错 ...
- cxf 服务端soap报文_使用Apache CXF开发SOAP Web服务
cxf 服务端soap报文 在上一篇文章中,我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤. 在本文中,我将讨论使用CXF开发SOAP Web服务. 在继续前进之前,让我们先 ...
- 使用Apache CXF开发SOAP Web服务
在上一篇文章中,我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤. 在本文中,我将讨论使用CXF开发SOAP Web服务. 在继续前进之前,让我们了解构成SOAP Web服务的 ...
- SOAP/Web Service/WSDL关系
转载----------------------------------------------- 最近看了xml schema,xpah,和xslt的相关内容,感觉wsdl就是一个soap的sche ...
- C++ 调用 SOAP Web Service
C++ 调用 SOAP Web Service 背景 首先,gSoap 肯定是个不错的选择,但是如果你的程序要调用多个 Web Services(即有多个 WSDL),gSoap 会比较麻烦.还有一个 ...
- CXF 生成Web Service Client(将WSDl 转化成 Java代码)
CXF 是什么 Apache CXF一个开源的Service框架,它实现了JCP与Web Service中一些重要标准. CXF简化了构造,集成,面 向服务架构(SOA)业务组件与技术的灵活复用.在C ...
- Android 项目开发 基于Web Service 服务的中英翻译软件(三) Web Service服务 Ksoap2 项目...
关于Web Service Android 应用通常是运行手机平台上,手机系统的硬件资源远远比不上PC平台,不管是存储能力还是计算能力,在Android平台上运行一些小的应用时可能的,但对于需要进行大 ...
- 【REST SOAP】REST和SOAP Web Service的区别比较
今天遇到一个webservice协议的接口需求,在使用soupUI测试接口连通性的时候,发现使用soupUI新建一个SOAP项目的时候,WSDL链接总是报错打不开(厂家提供的接口规范上写的是SOAP协 ...
- [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码)
需求描述 有一个WSDL地址, 需要把它转化成Java代码调用. IDE环境要求 这里使用Eclipse自动生成.这里的eclipse需要安装有Web开发插件. 步骤 1. 首先新建一个 " ...
最新文章
- fliqlo windows_Windows小众软件工具推荐
- 第 14 章 垃圾回收概述
- 开发规范 - UML图
- Java 实现线程的两种方式
- [转]二维图形的矩阵变换(一)——基本概念
- java hex2bin_hex2bin / bin2hex / pack / unpack 的理解及应用
- 号码检测,节省成本利器
- Openwrt修改flash大小
- 腾达ac5第三方固件_腾达AC9的刷固件指南
- 腾达f6虚拟服务器,腾达(Tenda)F6路由器无线wifi设置
- 地磅系统连不上云端服务器,LiteCMS云称重管理系统
- 计算机不能启动任务管理器,win10系统无法打开任务管理器怎么办
- HTMLa标签常用的四种链接
- Mybatis(1)——Mybatis Generator自动生成代码
- 时间序列完全教程(R)
- 【NOWCODER】- Python:字典(一)
- INRIAPerson数据集转化为yolo训练格式并可视化
- 电商台账管理库存管理
- python快速入门【六】----真题测试
- joomla 1:安装