使用cmd根据WSDL网址生成java客户端代码的实现
windows下使用cmd命令提示符生成java webservice客户端代码,可以使用命令提示符直接生成客户端代码,直接导入到项目中,只需配置jdk即可,在jdk的bin文件夹下,按Shift并点击右键,选中“在此处打开命令窗口”
输入命令如下:
wsimport -keep -p com.demo.client -d D:\\(存放的地址) http://XX/Account?wsdl(wsdl地址)
命令参数说明:
-d:生成客户端执行类的class文件的存放目录(默认存放在C:\Users\Administrator\)
-s:生成客户端执行类的源文件的存放目录(默认存放在C:\Users\Administrator\)
-p:定义生成类的包名
图示:
上面代码是在D盘下生成java代码,-d代表的是生成class文件和java文件,图示:
如果把这里的-d改为-s,生成的只有java文件,图示:
文件里面包名都是我们可以指定的,如果没有指定,使用的就是根据WSDL文档里面的targetNamespace来命名。
共勉:这个时代会犒赏那些爱学习的人。
补充:利用wsdl地址生成java客户端调用类并实现动态配置的方法
前言:
有时,我们经常要和一些外部系统对接,如果是HTTP接口还好,直接用apache的HttpClient工具类调用即可。而如果对方系统是Webservice,则比较麻烦,本文主要讲解如何用对方的wsdl地址生成java客户端调用类并且动态配置访问地址并在java中使用
1,首先我们先要获取对方的wsdl地址,例如
http://xxxx/xxxx/xxxx.asmx?wsdl
2, 接着,在cxf官网上下载apache-cxf-3.2.5
2.1,将apache-cxf-3.2.5解压缩后安装在D:\\apache-cxf-3.2.5中,设置CXF_HOME环境变量为D:\\ apache-cxf-3.2.5
如下图所示:
2.2,运行cmd,执行命令wsdl2java,等待大概1秒钟,出现USAGE证明设置成功
2.3,用wsdl地址执行命令:其中-d代表输出路径,后面紧跟着路径,路径后面紧跟着地址,按回车键,生成成功!
3,生成成功后
由于wsdl是写死在生成的java类的注解中的,有时我们会使用多套环境进行测试,验证,而sit和uat环境的wsdl地址是不尽相同的。此时,我们需要动态配置wsdl的地址和命名空间的地址
@Component public class DebitPushClient implements InitializingBean { private static URL wsdlUrl; private static String debitWsdlUrl; private static String uri; private static QName SERVICE_NAME; public static HttpResult pushDebitData(String jsonData) { FinancialSharing ss = new FinancialSharing(wsdlUrl, SERVICE_NAME); return (HttpResult) WebServiceClientUtil.invokeWebServiceSoapAction(ss, new QName(uri, "FinancialSharingSoap12"), FinancialSharingSoap.class, "pushDebitData", jsonData); } /** * 初始化wsdl连接地址 */ private void initWsdlUrl() { URL url = null; try { wsdlUrl = new URL(debitWsdlUrl); } catch (MalformedURLException e) { java.util.logging.Logger.getLogger(FinancialSharing.class.getName()) .log(java.util.logging.Level.INFO, "Can not initialize the default wsdl from {}", debitWsdlUrl); } } /** * 从配置文件中读取wsdl地址 * @param debitWsdlUrl 地址 */ @Value("${my.dfdk.wsdl.url:http://xxx.xxx.asmx?wsdl}") public void setDebitWsdlUrl(String debitWsdlUrl) { DebitPushClient.debitWsdlUrl = debitWsdlUrl; } /** * 从配置文件中读取命名空间地址 * @param uri 命名空间地址 */ @Value("${my.dfdk.wsdl.namespace.uri:http://tempuri.org/}") public void setUri(String uri) { DebitPushClient.uri = uri; } /** * 初始化wsdl * @throws Exception */ @Override public void afterPropertiesSet() throws Exception { initWsdlUrl(); SERVICE_NAME = new QName(uri, "FinancialSharing"); } }
4,客户端调用,调用成功后,即可获取正确的响应结果,不需要再将xml转成java对象
这篇文章,只是简单介绍了用wsdl地址生成java客户端调用代码的一种方法,除此之外,还可以用maven plugin
cxf-codegen-plugin
生成
<build> <finalName>cxf-date</finalName> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <sourceRoot>src/main/resources/cxf</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>http://localhost:8080/cxf-date/services/BookService?wsdl</wsdl> <frontEnd>jaxws21</frontEnd> <faultSerialVersionUID>1</faultSerialVersionUID> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了C#隐式运行CMD命令(隐藏命令窗口),本文实现在winform窗口中运行CMD命令,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28