CXF结合Spring发布一个webservice服务。
然后对方使用wsdl2java方式生成的客户端调用服务报错。does not match an operation 。
org.apache.axis2.AxisFault: The given SOAPAction http://xxx.xxx.xxx.com/xxx/xxx_Login does not match an operation. at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at client.UnionHsmManServiceStub.hsm_Login(UnionHsmManServiceStub.java:2058) at com.hgsoft.ws.client.HttpInvoker.stub(HttpInvoker.java:88) at com.hgsoft.ws.client.HttpInvoker.main(HttpInvoker.java:72)
是因为cxf发布的wsdl中,方法对应的soapAction不存在,需要再服务端接口定义的地方,注解的位置加上action的属性,如:
@WebMethod(action = "http://xxx.xxx.xxx.com/xxx/xxx_Login" ) public @WebResult(name="return")String Hsm_Login( @WebParam(name="UserKey")String UserKey, @WebParam(name="KeyPassword")String KeyPassword);
然后wsdl中就会生成这个定义
<wsdl:operation name="Hsm_Login"> <soap:operation soapAction="http://xxx.xxx.xxx.com/xxx/xxx_Login" style="rpc"/> <wsdl:input name="Hsm_Login"> <soap:body namespace="http://xxx.xxx.xxx.com/" use="literal"/> </wsdl:input> <wsdl:output name="Hsm_LoginResponse"> <soap:body namespace="http://xxx.xxx.xxx.com/" use="literal"/>
</wsdl:output> </wsdl:operation>
OK ,解决问题。
相关推荐
使用cxf wsdl2java生成webservice客户端命令
### CXF提供的wsdl2java工具创建客户端的相关知识点 #### 一、背景介绍 CXF是一个强大的开源项目,主要用于简化企业级服务(如RESTful Web服务、SOAP Web服务等)的构建过程。它提供了多种工具和服务,使得开发者...
8. **客户端生成**:CXF还支持从WSDL生成Java客户端代码,使得调用Web服务变得更加简单,只需按照生成的客户端代码进行操作即可。 9. **最佳实践**:在实际项目中,确保Java接口清晰、符合面向服务的设计原则,以及...
而`WSDL2Java`工具正是基于这样的需求应运而生,它能够将一个WSDL文件转换为Java客户端代码,让开发者可以轻松地调用远程Web服务。 ### WSDL2Java的工作原理 `WSDL2Java`工具主要遵循以下步骤: 1. **解析WSDL...
总的来说,`wsdl2java`工具为Java开发者提供了便捷的方式,从WSDL文件中自动生成客户端代码,大大降低了与Web服务交互的复杂性。如果你在使用过程中遇到问题,可以参考博客或其他在线资源,了解更详细的用法和常见...
通过本文档的介绍,我们了解了如何使用 Apache CXF 的 `wsdl2java` 工具来自动生成 Web 服务的客户端和服务端代码。这个过程简单易行,能够极大地提高开发效率。开发者可以根据实际需求选择不同的选项来定制生成的...
利用wsdl2java工具和SoapUI工具生成webservice的客户端代码 Java实现登陆验证调用 压缩包里包括需要的所有文件,供需要的同学使用 1.apache-cxf-3.3.7 2.SoapUI 5.4.0-EB 3.生成代码的教程 4.获取service调用的...
使用XFire根据WSDL生成客户端代码,可以大大简化开发过程,因为它自动生成了与服务接口对应的Java类和代理。以下是具体步骤: 1. **安装和配置XFire**:首先,确保已经下载并安装了XFire库。你可以通过Maven或...
2. **使用工具生成Java客户端代码**:在Java中,我们可以使用Apache CXF、 Axis2 或 JAX-WS等库来从WSDL文件自动生成客户端代码。这些库提供命令行工具或IDE插件,例如使用Apache CXF的`wsdl2java`命令,可以将WSDL...
本文将深入探讨如何利用CXF的`wsdl2java`工具从WSDL(Web Services Description Language)文件生成Java客户端和服务端代码,从而快速构建Web服务。 首先,我们需要理解WSDL。WSDL是一种XML格式的规范,它定义了Web...
它的主要功能是从WSDL文件生成Java源代码,这些代码可以被编译并用作Web服务的客户端或者服务提供者。通过运行`wsdl2java.cmd`,用户可以将WSDL描述转换为可操作的Java类。 4. **使用Wsdl2Java工具**: - **命令行...
WSDL2Java工具是Apache CXF框架的一部分,它允许开发者从一个WSDL文件自动生成Java客户端和服务端的源代码,极大地简化了Web服务的开发过程。 **一、WSDL2Java工具的作用** 1. **客户端代码生成**:当您有一个WSDL...
例如,在Java中,可以使用Apache CXF或JAX-WS的wsimport工具来生成客户端代码。在.NET框架下,Visual Studio或svcutil.exe工具能完成相同的工作。对于Python,Suds库是一个常见的选择。 在给定的压缩包中,有一个名...
注意: 1.如果想学习java优先请...2.包含一个eclipse工程以及一个ppt,ppt详细说明了实现的步骤。 3.设计中重点考察了schema validate的配置与实现,后续更高级的相关知识敬请关注 http://blog.csdn.net/harrison2010
1. 生成客户端代理:CXF的WSDL2Java工具可以将服务端的WSDL(Web Service Description Language)文件转换为Java客户端代码,生成服务代理类。 2. 创建服务代理实例:通过代理类,客户端可以创建服务的实例,就像...
CXF中的“wsdl2java”工具可以解析WSDL文件,并生成相应的Java类,包括服务客户端所需的代理类和数据对象。这极大地简化了客户端的开发工作。 #### 三、环境搭建 为了能够顺利地使用CXF的“wsdl2java”工具,首先...
`wsdl2java`是Apache CXF框架提供的一款命令行工具,它能够根据WSDL文件自动生成Java客户端和服务端代码,大大简化了Web服务的开发流程。这个工具支持两种方式来获取WSDL:文件路径和URL。 ### 使用WSDL2Java工具 ...
2. **使用CXF的wsdl2java工具**:CXF提供了一个名为`wsdl2java`的命令行工具,用于将WSDL转换为Java代码。在命令行中,你可以输入以下命令: ```bash wsdl2java -d /path/to/output/directory /path/to/your.wsdl...
`wsdl2java`是Apache CXF提供的一个工具,用于根据WSDL文件自动生成Java代码。以下是详细步骤: 1. **配置环境**:确保已安装JDK 1.6及以上版本,并设置好环境变量。还需要下载Apache CXF 2.2.8并解压,将解压后的`...
1. 生成客户端存根(Stub):通过WSDL文件,WSDL2Java工具可以生成客户端调用Web服务所需的代理类,这些类提供了方法调用来发送请求和接收响应。 2. 生成服务端骨架(Skeleton):对于服务提供者,工具能自动生成...