当前位置: 首页 > 编程日记 > 正文

基于wsimport生成代码的客户端

概述


wsimport是jdk自带的命令,可以根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦。

wsimport命令


wsimport的用法

wsimport [options] <WSDL_URI>
比较常用的[options]有:
1. -d <directory>
在指定的目录生成class文件
2. -clientjar <jarfile>
在当前目录生成jar文件,结合-d <directory>可以在指定的目录生成jar文件
3. -s <directory>
在指定的目录生成java源文件
4. -p <pkg>
指定生成文件的包结构
5. -keep
在生成class文件,或者jar包时,同时保留java源文件

常用的组合

  1. 在指定的目录生成指定包结构的java源文件
    假设wsdl文档的uri为http://localhost:6666/service/interpret?wsdl,那么在F:\temp下,生成包结构为cn.ljl.sand.jws.chapter3.client.wsimport的java源文件的命令为:
    wsimport -s F:\temp -p cn.ljl.sand.jws.chapter3.client.wsimport http://localhost:6666/service/interpret?wsdl

  2. 在指定的目录生成指定包结构的jar文件
    假设wsdl文档的uri为http://localhost:6666/service/interpret?wsdl,那么在F:\temp下,生成包结构为cn.ljl.sand.jws.chapter3.client.wsimport的interpret-wsimport.jar的命令为:
    wsimport -d F:\temp -clientjar interpret-wsimport.jar -p cn.ljl.sand.jws.chapter3.client.wsimport http://localhost:6666/service/interpret?wsdl

编写客户端


文件分布图

说明:cn.ljl.sand.jws.chapter3.client.wsimport中的是基于wsimport生成的代码;cn.ljl.sand.jws.chapter3.client中的是基于生成代码的客户端。

使用wsimport生成代码

指定-p cn.ljl.sand.jws.chapter3.client.wsimport

核心类介绍

wsimport生成的文件中,有两个是我们需要了解的,一个是以wsdl文档的portType元素的name为名的接口,一个是以wsdl文档的service元素的name为名的类。比如使用上述命令生成的类图如下:
比较一下,这里生成的InterpretService接口,和服务端的接口是一致的。而InterpretServiceImplService的getInterpretServiceImplPort方法,可以让我们获取InterpretService的实例,然后我们就可以像执行本地代码一样请求webservice了。

编写客户端

创建WSIClient.java,基于生成的代码访问服务。
package cn.ljl.sand.jws.chapter3.client;
import java.net.MalformedURLException;
import java.net.URL;
import org.junit.Assert;
import org.junit.Test;
import cn.ljl.sand.jws.chapter3.client.wsimport.InterpretService;
import cn.ljl.sand.jws.chapter3.client.wsimport.InterpretServiceImplService;
public class WSIClient {@Testpublic void test() {InterpretServiceImplService ss = new InterpretServiceImplService();InterpretService service = ss.getInterpretServiceImplPort();String chnum = service.interpret(112358);Assert.assertEquals("一一二三五八", chnum);}@Testpublic void test2() throws MalformedURLException {URL url = new URL("http://localhost:6666/service/interpret?wsdl");InterpretServiceImplService ss = new InterpretServiceImplService(url);InterpretService service = ss.getInterpretServiceImplPort();String chnum = service.interpret(112358);Assert.assertEquals("一一二三五八", chnum);}
}

说明:
这里提供了两个测试方法:test使用最简单的方式;test2考虑到URL可能的变动,所以单独指定了URL,而这个url,可以根据需要来自配置。
---https://www.cnblogs.com/ywjy/p/5196064.html

转载于:https://www.cnblogs.com/zyh186/p/8177254.html

相关文章:

C# Trim 的使用

C# 移除字符 /// <summary> /// 删除指定字符 /// </summary> /// <returns>返回经过修饰的字符串</returns> private string DelChar() { string mess " Test Program "; // 测试字符 if (mess ! string.Empty) …

CSS截取字符串,兼容浏览器

今天在经典论坛看到有同学问到CSS截取字符多余省略号代替的求助且要兼容FF... 这个的确是个比较头痛的问题&#xff0c;现在我在的公司都是程序截取显示省略符的。兼容是没问题&#xff0c;但在中文和数学或字母混排时&#xff0c;就会有点小小的视觉缺陷。在程序截取中&#x…

SQL Server Alwayson 主从数据库账号同步

我们建立了Alwayson后&#xff0c;辅助副本下的数据库是没有相应的账号的&#xff0c;怎么样进行账号的同步呢&#xff1f;怎么在不知道密码的情况下&#xff0c;进行账号的同步设置。 我们可以通过SP--sp_help_revlogin 来实现&#xff0c;此存储过程在主副本上创建了&#xf…

Python 使用 Flask框架记录

Python 使用 Flask框架记录 1、安装Flask ​ Flask依赖两个外部库&#xff0c;Werkzeug和Jinja2&#xff0c;Werkzeug是一个WSGI(服务器网关接口)。Jinja2时负责渲染模板。在安装Flask之前需要安装这俩个外部库&#xff0c;最简单的安装方式是使用Vritualenv创建虚拟环境。 …

java8学习之Lambda表达式深入与流初步

Lambda表达式深入&#xff1a; 在上一次【http://www.cnblogs.com/webor2006/p/8135873.html】中介绍Lambda表达式的作用时&#xff0c;其中说到这点&#xff1a; 如标红处所说&#xff0c;既然Lambda表达式是一个对象&#xff0c;而且必须依附于一类特别的对象类型叫函数式接口…

Javascript与正则表达式个人总结与收录--高级篇

一、正则表达式中的量词 贪婪量词&#xff1a; 先看整个字符串是不是一个匹配。如果没有发现匹配&#xff0c;它去掉最后字符串中的最后一个字符&#xff0c;并再次尝试。如果还是没有发现匹配&#xff0c;那么再次去掉最后一个字符串&#xff0c;这个过程会一直重复直到发现一…

第二十五章 面向对象------封装、内置函数、反射、动态导入

1、封装 什么是封装&#xff1f; 1.对外部隐藏内部的属性&#xff0c;以及实现细节&#xff0c;给外部提供使用的接口 注意&#xff1a;封装有隐藏的意思&#xff0c;但不是单纯的隐藏 学习封装的目的&#xff1a;就是为了能够限制外界对内部数据的访问 python中属性的权限分为…

STL vector list deque区别与实现

1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时&#xff0c;首先分配一个非常大的内存空间预备进行存储&#xff0c;即capacituy&#xff08;&#xff09;函数返回的大小&#xff0c;当超过此分配的空间…

pigeon 介绍

https://github.com/dianping/pigeon Pigeon开发指南 Pigeon是一个分布式服务通信框架&#xff08;RPC&#xff09;&#xff0c;在美团点评内部广泛使用&#xff0c;是美团点评最基础的底层框架之一。 主要特色 除了支持spring schema等配置方式&#xff0c;也支持代码annotati…

docker 安装使用 mysql

1、下载mysql镜像 docker pull mysql:5.7 2、运行mysql docker run --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDXYBB_1314 -d mysql:5.7 参考&#xff1a; https://blog.csdn.net/jiangyu1013/article/details/79958410 https://www.cnblogs.com/limingxie/p/…

国内第一部IT治理综合图书问世

国内第一部全面阐述企业IT治理理念与实践的图书《中国企业的IT治理之道》于2010年3月由清华大学出版社正式出版发行。对国内的企业来说&#xff0c;IT治理并不是一个陌生的词汇。对于什么是IT治理&#xff1f;什么样的治理才是最优的&#xff1f;如何构建最适合企业的IT治理机构…

oracle终止用户会话

1.创建两个测试用户进行实验 执行命令如下&#xff1a; create user test1 identified by 1; create user test2 identified by 1; grant dba to test1; grant dba to test2; 如下图&#xff0c;我创建了两个用户,并授予两个用户dba角色。 2&#xff0c;windows下使用cmd连接or…

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码......

当我在窗体初始化的时候&#xff0c;调用了一个外部的dill时&#xff0c;它就不知什么原因的 抛出一个“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查&#xff0c;相关说明如下:.NET2.0中增加…

Nginx在windows下常用命令

cmd 进入Nginx解压目录 执行以下命令 start nginx : 启动nginx服务 nginx -s reload &#xff1a;修改配置后重新加载生效 nginx -s reopen &#xff1a;重新打开日志文件nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确--------------------- 验证配置是否正确: n…

微信小程序使用npm 进行下载构建组价

1、进入小程序根目录 构建前微信小程序目录 使用npm 初始化命令进行初始化小程序目录 npm init -y 构建后的目录为 构建完成后 如何进行使用 {"usingComponents": {"van-notice-bar": "/miniprogram_npm/vant-weapp/notice-bar/index"} }如果提…

CorelDRAW快捷键搜集

02. 将CorelDRAW中的标准工具列除去,标准工具列比鸡肋还无味,除去可增大可视面积.03. CorelDARW 9 的段落文字并非不能转成曲线,方法并不止一种,可到Google搜索相关方法.04. 熟练使用CorelDARW 9 中的F2/F3/F4 比按放大镜爽又能节约相当多的时间05. CorelDARW 9 中Altaa是个相当…

spring cloud微服务治理eureka、hystrix、zuul代码例子

spring cloud微服务中台服务代码例子&#xff0c;包括eureka、hystrix、zuul https://github.com/birdstudiocn/spring-cloud-sample/tree/master转载于:https://www.cnblogs.com/birdstudio/p/10899923.html

CentOS7种搭建FTP服务器

1&#xff0e;安装vsftpd #首先要查看你是否安装vsftp [rootlocalhost /]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 &#xff08;显示也就安装成功了&#xff01;&#xff09; #如果没有则安装vsftpd [rootlocalhost/]# yum install -y vsftpd #完成后再检查一…

ssm 实现房屋租赁系统

目录 1、系统功能 2、系统使用技术 3、系统截图 4、代码截图 5、下载地址&#xff1a;https://download.csdn.net/download/huyande123/14039462 1、系统功能 该系统有两类用户 管理员以及普通用户&#xff0c;普通用户注册、用户登录退出、房源信息增删改查、租赁合同信…

成长之第一次面试

遥远地记得,近两年前的第一次面试. 虽然并不愉快,但是,往往第一次,总让人印象深刻. 我记得当时是ebay来学校招聘,兴致勃勃地跑去参加了笔试,本以为自己直接酱油的,结果竟然很幸运地通过了笔试. 还记得笔试是全英文的吧,自己的英语从进入大学开始,就有够烂的,但还是很幸运的进入…

配置GRE隧道

一、拓扑图&#xff1a;二、配置及说明&#xff1a;1、配置三台路由器的IP地址。并且在R1和R3配置默认路由&#xff0c;确保广域网链路能够通信&#xff1a;R1(config-line)#int s1/1R1(config-if)#no shR1(config-if)#ip add 202.101.172.37 255.255.255.252R1(config-if)#int…

【案例】城市地址三级联动

注意点&#xff1a; 1、<option value""></option> value值的设置 2、select的onchange事件 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>城市地址三级联动</title&…

python 更新pip 失败问题总结

1、报pip 8.1.1 Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr Successfully installed pip-8.1.1 You are using pip version 8.1.1, however version 19.1.1 is available. 如下 sudo pip install --upgrade pip The directory /ho…

[转]关于MyEclipse下的项目无法使用BASE64Encoder问题的解决办法

【链接】 http://blog.csdn.net/longlonglongchaoshen/article/details/75087616转载于:https://www.cnblogs.com/eager/p/8202900.html

携号转网:欢迎比阻挠更为有效

千呼万唤之后&#xff0c;携号转网已经在天津和海南两个试点地区“成功”实施。就在全国其他各地老百姓也翘首以待希望能“自由携号、自主转网”之时&#xff0c;见诸于报端的却都是运营商阻碍用户转网的种种“手段”&#xff0c;甚至大打出手、阴招不断&#xff0c;给携号转网…

一些大数库简介

为了解决大数运算的问题&#xff0c;世界各国的软件开发人员和研究学者都进行了很多的研究和实践。近年来&#xff0c;越来越多的开发人员开始重视软件工程的作用&#xff0c;为了减少重复劳动&#xff0c;提高软件的质量和代码复用&#xff0c;许多优秀的大数运算库随之出现。…

Silverlight技术支持谷歌Android

[计世网消息](刘清河 编译) 当苹果公司没有将Adobe公司的Flash技术集成到iPhone时&#xff0c;就好象已经为其竞争对手微软公司的Silverlight技术提供了一个可乘之机。然而&#xff0c;从目前出现的情况来看&#xff0c;无论是苹果公司还是微软公司&#xff0c;似乎都不可能与i…

生活中的一些事情

从小到大&#xff0c;在遭遇困境的时候&#xff0c;总想着有人能来帮我&#xff0c;自己也曾隐晦地向同学朋友家人发出求救信息&#xff0c;总觉得有人能帮我出谋划策&#xff0c;抑或是安慰我引导我&#xff0c;帮助我走出困境&#xff0c;然而始终是什么都没有。 也就突然真正…

python 使用安装虚拟环境 virtualenv

目录 1、安装virtualenv 2、Ubuntu使用python3创建虚拟环境目录 3、激活虚拟环境 4、关闭虚拟环境 5、查看python版本 1、安装virtualenv pip install virtualenv virtualenvwrapper 2、Ubuntu使用python3创建虚拟环境目录 virtualenv -p /usr/bin/python3 test3、激…

idea 启动时报 error:java 无效的源发行版

说白了就是编译的版本不符合&#xff0c;有的地方是jdk1.7 有的地方是jdk1.8 所以你只要每个地方都保持一致就行。 每个地方&#xff01;&#xff01; 每个地方&#xff01;&#xff01; 每个地方&#xff01;&#xff01; 重要的设置说三遍&#xff01; 以jdk1.7为例 file -- …