项目框架中要增加webservice的功能,引入了cxf2.7.6作为框架支持,为了加快客户端的编写,采用生成的方式通过wsdl生成客户端代码。
客户端代码自自动生成有三种方式:
The WSDL2Java tool will generate JAX-WS clients from your WSDL. You can run WSDL2java one of three ways: The command line The Maven Plugin With the WSDL2Java API
第一种通过wsdl2java命令行的形式测试通过,但通过java调用外部命令总是有环境变量的问题还要配置相应工具路径等操作,比较麻烦。
第二种通过Maven Plugin生成,对Maven不熟悉,跳过
第三种通过WSDL2Java API生成,在网上百度谷歌的搜索了半天,没有这样的文章,也没有这么做的,可能是方法太过偏激了。但为了框架中可以保证开发人员对webservice的使用可以快速上手,便花了很长时间研究这个事儿,后来在wsdl2java.bat中找到解决办法。
解决办法如下:
1. 工具类:
import java.net.URLDecoder; import java.util.Locale; import java.util.ResourceBundle; import org.apache.cxf.tools.common.ToolContext; import org.apache.cxf.tools.wsdlto.WSDLToJava; /** * @desc 客户端代码生成工具类 * @version v1.0, 2013-12-11 */ public class ClientCodeGenerator { public static void main(String[] args) throws Exception { ClientCodeGenerator.generateClient(); } public static void generateClient() { try { System.out.println("---------------client code generate starting.--------------"); String properties = "com.apps.mymis.demo.webservice.client.wsdl2java.ws-client-config"; ResourceBundle rb = ResourceBundle.getBundle(properties, Locale.getDefault()); String serviceWsdlUrl = rb.getString("ws.client.serviceWSDLUrl"); String stubcodeTargetPath = rb.getString("ws.client.stubCodeTargetPath"); String async = rb.getString("ws.client.async"); System.out.println("---------------service WSDL URL is " + serviceWsdlUrl + ".--------------"); System.out.println("---------------client code save at " + stubcodeTargetPath + ".--------------"); WSDLToJava w2j = null; String bindingPath = URLDecoder.decode(ClientCodeGenerator.class.getResource("").getPath()).substring(1) + "anyc_binding.xml"; System.out.println(bindingPath); if ("true".equals(async)) w2j = new WSDLToJava(new String[] { "-client", "-d", stubcodeTargetPath, "-b", bindingPath, serviceWsdlUrl }); else w2j = new WSDLToJava(new String[] { "-client", "-d", stubcodeTargetPath, serviceWsdlUrl }); w2j.run(new ToolContext()); System.out.println("---------------client code generate finished.--------------"); } catch (Exception e) { e.printStackTrace(); } } }
2. 配置文件 ws-client-config.properties
#服务端wsdl文件本地路径或者wsdl地址 ws.client.serviceWSDLUrl=http://127.0.0.1:8080/test/service/TestAyncService?wsdl #客户端代码需要存储的位置 ws.client.stubCodeTargetPath=c\: #是否生成异步代码 ws.client.async=false
3. anyc_binding.xml 用于生成异步客户端代码的配置文件(可无视,与此主题无关)
<bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="http://127.0.0.1:8080/test/service/TestAyncService?wsdl" xmlns="http://java.sun.com/xml/ns/jaxws"> <bindings node="wsdl:definitions"> <enableAsyncMapping>true</enableAsyncMapping> </bindings> </bindings>
执行java工具类即可生成客户端代码。
PS:org.apache.cxf.tools.wsdlto.WSDLToJava类的参数与wsdl2java命令的参数格式相同
相关推荐
使用cxf wsdl2java生成webservice客户端命令
利用wsdl2java工具和SoapUI工具生成webservice的客户端代码 Java实现登陆验证调用 压缩包里包括需要的所有文件,供需要的同学使用 1.apache-cxf-3.3.7 2.SoapUI 5.4.0-EB 3.生成代码的教程 4.获取service调用的...
在Java中,可以使用wsimport命令行工具,它由JDK自带,能够根据WSDL生成Java客户端代码。 4. **使用客户端**:生成的客户端代码可以像普通Java类一样使用。通过调用对应的方法,传递参数,即可执行Web服务的操作。...
`wsdl2java`是Apache CXF提供的一个工具,用于根据WSDL文件自动生成Java代码。以下是详细步骤: 1. **配置环境**:确保已安装JDK 1.6及以上版本,并设置好环境变量。还需要下载Apache CXF 2.2.8并解压,将解压后的`...
在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...
3. **配置选项**:你可以通过各种选项定制生成的Java代码,比如选择特定的Java包名、是否生成客户端Stubs等。 4. **检查生成的代码**:工具会在指定的输出目录下生成Java源码,包括服务接口、消息实体类、客户端...
在标题和描述中提到的“cxf生成webservice客户端”是指利用CXF的工具从WSDL文件自动生成Java客户端代码,以便于调用Web服务。 生成Web服务客户端的步骤如下: 1. **获取WSDL文件**:Web服务通常会公开一个WSDL文件...
总结起来,Java中的Web Service客户端生成涉及的关键点有:理解WSDL规范,选择合适的工具(如Apache CXF或JAX-WS),正确配置并执行代码生成命令,最后在生成的代码基础上调用Web服务。这极大地简化了与Web服务交互...
其中,“wsdl2java”工具就是CXF提供的一个非常实用的功能,它可以根据WSDL文件自动生成客户端和服务端所需的Java代码。本文将详细介绍如何使用CXF的“wsdl2java”工具来生成Webservice客户端代码。 #### 二、基础...
2. 生成客户端代码:CXF提供了一个工具,可以基于WSDL(Web服务描述语言)文件自动生成客户端代理类。运行以下命令: ```bash java -jar cxf-codegen-plugin-3.4.x.jar -wsdl ...
总结来说,DOS环境下生成Web服务客户端代码主要依赖于Apache CXF或Axis提供的工具,这些工具能从WSDL文件中自动生成对应的Java代码,简化开发过程。理解并熟练掌握这些工具的使用,对任何涉及Web服务的IT专业人员来...
CXF提供了WSDL2Java工具,可以从服务的WSDL(Web Service Description Language)文件生成客户端所需的代理类。这些代理类包含了调用服务操作所需的所有方法。通过以下命令,我们可以从WSDL生成客户端代码: ```...
1. 生成客户端代理:CXF的WSDL2Java工具可以将服务端的WSDL(Web Service Description Language)文件转换为Java客户端代码,生成服务代理类。 2. 创建服务代理实例:通过代理类,客户端可以创建服务的实例,就像...
在IT行业中,WebService是...通过理解WSDL、生成客户端代码、配置服务地址以及利用CXF的高级特性,可以高效地完成与WebService的交互。在实际项目中,应结合具体需求,灵活运用这些知识,确保服务调用的稳定性和效率。
4. **使用wsdl2java工具生成客户端代码** 要使用Axis生成客户端代码,你需要运行`wsdltojava.bat`脚本。在示例中,设置环境变量`Axis_Lib`指向Axis的库目录,`Java_Cmd`设置JVM参数,并通过`wsdl2java`命令指定了...
使用CXF的wsdl2java命令行工具,开发者可以在命令行环境中执行转换,同样可以生成与WSDL文件对应的Java代码。 使用CXF的wsdl2java步骤如下: 1. 安装并配置Apache CXF环境。 2. 打开命令行,定位到CXF的bin目录。 ...
1. 动态客户端:通过CXF的WSDL2Java工具,根据WSDL生成客户端代码。 2. 静态客户端:手动编写客户端代码,调用服务接口。 **4. 整合CXF客户端和服务端** 在实际项目中,可能会同时存在服务端和客户端的开发。为了...
在本示例中,我们将探讨如何使用WSDL文件生成Java客户端代码,这通常是通过工具如Apache CXF、Axis2等完成的。 标题提到的"webserice客户端代码(java)生成"指的是使用Java编程语言创建一个能够调用Web服务的客户端...
通过以上步骤,我们不仅搭建了一个简单的CXF服务端,还学会了如何使用`wsdl2java`工具来生成并集成客户端代码。这为后续进行更复杂的服务开发打下了坚实的基础。CXF的灵活性和易用性使其成为Java Web服务开发的一个...