`
balance9
  • 浏览: 14610 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

通过cxf的wsdl2java的API生成webservice客户端代码

阅读更多

      项目框架中要增加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客户端

    使用cxf wsdl2java生成webservice客户端命令

    利用wsdl2java工具和SoapUI工具生成webservice的客户端代码 SpringBoot实现登陆验证调用.rar

    利用wsdl2java工具和SoapUI工具生成webservice的客户端代码 Java实现登陆验证调用 压缩包里包括需要的所有文件,供需要的同学使用 1.apache-cxf-3.3.7 2.SoapUI 5.4.0-EB 3.生成代码的教程 4.获取service调用的...

    根据wsdl地址或文件生成webservice客户端

    在Java中,可以使用wsimport命令行工具,它由JDK自带,能够根据WSDL生成Java客户端代码。 4. **使用客户端**:生成的客户端代码可以像普通Java类一样使用。通过调用对应的方法,传递参数,即可执行Web服务的操作。...

    根据wsdl生成webservice服务端(3种方式)

    `wsdl2java`是Apache CXF提供的一个工具,用于根据WSDL文件自动生成Java代码。以下是详细步骤: 1. **配置环境**:确保已安装JDK 1.6及以上版本,并设置好环境变量。还需要下载Apache CXF 2.2.8并解压,将解压后的`...

    WebService的WSDL文件生成Java代码工具

    在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...

    WSDL2Java--根据wsdl生成Java客户端工具

    3. **配置选项**:你可以通过各种选项定制生成的Java代码,比如选择特定的Java包名、是否生成客户端Stubs等。 4. **检查生成的代码**:工具会在指定的输出目录下生成Java源码,包括服务接口、消息实体类、客户端...

    cxf生成webservice客户端

    在标题和描述中提到的“cxf生成webservice客户端”是指利用CXF的工具从WSDL文件自动生成Java客户端代码,以便于调用Web服务。 生成Web服务客户端的步骤如下: 1. **获取WSDL文件**:Web服务通常会公开一个WSDL文件...

    java中webService生成客户端

    总结起来,Java中的Web Service客户端生成涉及的关键点有:理解WSDL规范,选择合适的工具(如Apache CXF或JAX-WS),正确配置并执行代码生成命令,最后在生成的代码基础上调用Web服务。这极大地简化了与Web服务交互...

    CXF生成ws客户端代码

    其中,“wsdl2java”工具就是CXF提供的一个非常实用的功能,它可以根据WSDL文件自动生成客户端和服务端所需的Java代码。本文将详细介绍如何使用CXF的“wsdl2java”工具来生成Webservice客户端代码。 #### 二、基础...

    cxf 开发webservice客户端

    2. 生成客户端代码:CXF提供了一个工具,可以基于WSDL(Web服务描述语言)文件自动生成客户端代理类。运行以下命令: ```bash java -jar cxf-codegen-plugin-3.4.x.jar -wsdl ...

    使用DOS 生成webservice 客户端代码 (CXF)

    总结来说,DOS环境下生成Web服务客户端代码主要依赖于Apache CXF或Axis提供的工具,这些工具能从WSDL文件中自动生成对应的Java代码,简化开发过程。理解并熟练掌握这些工具的使用,对任何涉及Web服务的IT专业人员来...

    cxf的webservice的客户端代码

    CXF提供了WSDL2Java工具,可以从服务的WSDL(Web Service Description Language)文件生成客户端所需的代理类。这些代理类包含了调用服务操作所需的所有方法。通过以下命令,我们可以从WSDL生成客户端代码: ```...

    Java webservice cxf客户端调用demo和服务端

    1. 生成客户端代理:CXF的WSDL2Java工具可以将服务端的WSDL(Web Service Description Language)文件转换为Java客户端代码,生成服务代理类。 2. 创建服务代理实例:通过代理类,客户端可以创建服务的实例,就像...

    WebService开发客户端 cxf方式

    在IT行业中,WebService是...通过理解WSDL、生成客户端代码、配置服务地址以及利用CXF的高级特性,可以高效地完成与WebService的交互。在实际项目中,应结合具体需求,灵活运用这些知识,确保服务调用的稳定性和效率。

    使用axis自动生成webservice客户端代码.docx

    4. **使用wsdl2java工具生成客户端代码** 要使用Axis生成客户端代码,你需要运行`wsdltojava.bat`脚本。在示例中,设置环境变量`Axis_Lib`指向Axis的库目录,`Java_Cmd`设置JVM参数,并通过`wsdl2java`命令指定了...

    把wsdl文件或地址转化成java代码工具

    使用CXF的wsdl2java命令行工具,开发者可以在命令行环境中执行转换,同样可以生成与WSDL文件对应的Java代码。 使用CXF的wsdl2java步骤如下: 1. 安装并配置Apache CXF环境。 2. 打开命令行,定位到CXF的bin目录。 ...

    CXF 一个完整的webService(整合客户端和服务端)

    1. 动态客户端:通过CXF的WSDL2Java工具,根据WSDL生成客户端代码。 2. 静态客户端:手动编写客户端代码,调用服务接口。 **4. 整合CXF客户端和服务端** 在实际项目中,可能会同时存在服务端和客户端的开发。为了...

    webserice客户端代码(java)生成,wsdl本地文件或wsdl url均可以生成(绝对可用)

    在本示例中,我们将探讨如何使用WSDL文件生成Java客户端代码,这通常是通过工具如Apache CXF、Axis2等完成的。 标题提到的"webserice客户端代码(java)生成"指的是使用Java编程语言创建一个能够调用Web服务的客户端...

    CXF提供的wsdl2java工具创建客户端

    通过以上步骤,我们不仅搭建了一个简单的CXF服务端,还学会了如何使用`wsdl2java`工具来生成并集成客户端代码。这为后续进行更复杂的服务开发打下了坚实的基础。CXF的灵活性和易用性使其成为Java Web服务开发的一个...

Global site tag (gtag.js) - Google Analytics