生成WebService客户端的几种方式
1.通过jdk自带的工具wsimport
需要环境:
jdk环境
主要的参数介绍:
-encoding :指定编码格式(此处是utf-8的指定格式)
-keep:是否生成Java源文件
-d:指定.class文件的输出目录
-s:指定.java文件的输出目录
-p:定义生成类的包名,不定义的话有默认包名
-verbose:在控制台显示输出信息
-b:指定jaxws/jaxb绑定文件或额外的schemas
-extension:使用扩展来支持SOAP1.2
命令示范:
wsimport -encoding utf-8 -keep -s C:\Users\xx\Desktop\ -p com.test -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
2.通过wsdl2java工具
需要环境:
1、JDK环境
2、下载apache-cxf发布包,解压,设置CXF_HOME,并添加%CXF_HOME%/bin到path环境变量。
(命令行输入wsdl2java -help,有正常提示说明环境已经正确配置。)
主要参数介绍:
-o <path> : 指定生成代码的输出路径
-a : 生成异步模式的代码
-s : 生成同步模式的代码
-p <pkg> : 指定代码的package名称
-l <languange> : 使用的语言(Java/C) 默认是java
-t : 为代码生成测试用例
-ss : 生成服务端代码 默认不生成
-sd : 生成服务描述文件 services.xml,仅与-ss一同使用
-g : 生成服务端和客户端的代码
-pn <port_name> : 当WSDL中有多个port时,指定其中一个port
-sn <serv_name> : 选择WSDL中的一个service
-u : 展开data-binding的类
-r <path> : 为代码生成指定一个repository
-ssi : 为服务端实现代码生成接口类
-S : 为生成的源码指定存储路径
-R : 为生成的resources指定存储路径
--noBuildXML : 输出中不生成build.xml文件
--noWSDL : 在resources目录中不生成WSDL文件
--noMessageReceiver: 不生成MessageReceiver类
命令规范:
wsdl2java -encoding utf-8 -d C:/user/desktop/test http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl
3.通过idea自动生成
通过idea工具类自动生成,方便快捷
如图:
- 记得先选中项目再执行上述操作
如果本地下载cxf 并且在idea→settings→webservices中配置过cxf的可以选择cxf,如果没有可以选择Glassfish/JAX-Ws
具体其中所填含义:
web service wsdl: 顾名思义 wsdl url
Output path: 生成的路径
Package : 包名
点击OK 即可生成,生成结构如下:
测试类:
/**
* @Description Test
* @Author
* @date 2021/1/15 10:31
*/
@SpringBootTest(classes = WebApplication.class)
public class Test {
@Autowired
private DemoClientService demoClientService;
@org.junit.jupiter.api.Test
public void test1(){
demoClientService.testSend();
}
@org.junit.jupiter.api.Test
public void test2(){
DemoWebServiceImplService demoWebServiceImplService = new DemoWebServiceImplService();
ServerServiceDemo serverServiceDemo = demoWebServiceImplService.getServerServiceDemoPort();
String re = serverServiceDemo.testWebService("hhheee",15);
System.out.println(re);
}
}
测试结果:
以上三种都通过测试,成功调用。
三种方式使用感受:
wsimport方式只要jdk环境即可不需要其他环境,用起来最方便。
wsdl2java方式需要下载cxf包并配置环境
通过idea方式创建最直观,但是生成的代码中测试服务的编码默认是GBK 需要手动重新reload,而上两种可以通过命令形式设置编码格式(或许idea也可以设置,但是目前没有找到~)