wsdl2java wsimport 的升级版wsdl2java 生成webService java 基本类
apache-cxf 下载 及配置变量
下载地址列表 : http://cxf.apache.org/download.html
下载地址: https://www.apache.org/dyn/closer.lua/cxf/3.4.2/apache-cxf-3.4.2.zip
下载后解压文件到目录
D:\Program Files\apache-cxf-3.4.2
%CXF_HOME%\bin;
wsdl2java 使用过程
通过手机号码查询归属地信息的接口
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
wsdl2java -p com.tiza.xcmg.syncVehDataFromCrm.client -d D:\logs -client http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
wsdl2java 参数
wsdl2java 参数 | 解释 |
---|---|
-p | 1600 |
-d | 1600 |
-all | 生成所有开始端点代码:types,service proxy,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file. |
-client | 生成客户端测试web service的代码 |
-server | 生成服务器启动web service的代码 |
-impl | 生成web service的实现代码 |
-ant | 生成build.xml文件 |
电脑 | 1600 |
电脑 | 1600 |
具有相同参数报错
处理方式
http://www.bubuko.com/infodetail-2930586.html
wsdl2java.test http://:/**.wsdl ,如果报:具有相同名称 “xxx” 的类/接口已在使用。请使用类定制设置来解决此冲突。可添加 -autoNameResolution 解决。
wsdl2java -p wsdl2java.test -autoNameResolution http://:/**.wsdl
wsdl2java --help 查看参数
C:\Users\tz_wl>wsdl2java --help
Unexpected option: --help
Usage : wsdl2java
-fe|-frontend <front-end-name>
-db|-databinding <data-binding-name>
-wv <wsdl-version>
-p <[wsdl-namespace =]package-name>*
-sn <service-name>
-b <binding-file-name>*
-reserveClass <class-name>*
-catalog <catalog-file-name>
-d <output-directory>
-compile
-classdir <compile-classes-directory>
-impl -server -client -clientjar <jar-file-name>
-all
-autoNameResolution
-allowElementReferences|-aer<=true>
-defaultValues<=class-name-for-DefaultValueProvider>
-ant
-nexclude <schema-namespace [= java-package-name]>*
-exsh <(true, false)>
-noTypes
-dns <Default value is true>
-dex <(true, false)>
-validate<[=all|basic|none]>
-keep
-wsdlLocation <wsdlLocation>
-xjc<xjc-arguments>*
-asyncMethods<[=method1,method2,...]>*
-bareMethods<[=method1,method2,...]>*
-mimeMethods<[=method1,method2,...]>*
-noAddressBinding
-faultSerialVersionUID <fault-serialVersionUID>
-encoding <encoding>
-exceptionSuper <exceptionSuper>
-seiSuper <seiSuper>*
-mark-generated
-suppress-generated-date
-maxExtensionStackDepth <maxExtensionStackDepth>
-h|-?|-help
-version|-v
-verbose|-V
-quiet|-q|-Q
-wsdlList <wsdlurl>
使用 wsdl2java 替换 wsimport 的原因
参考网页 http://www.bubuko.com/infodetail-2930586.html
网上说wsimport是jdk1.6后自带的客户端生成调用webservice接口的工具,其实我挺喜欢原生的东西,毕竟自家的东西用着应该最顺手啊,但往往让人惊艳的是那些集成工具。
本机jdk1.8.1的,直接按网上说的wsimport -keep -p wsimport.test http://****:****/***.wsdl 报警报错,报警warning可以忽略,但错误error 难以解决,说具有相同名称 "xxx" 的类/接口已在使用。请使用类定制设置来解决此冲突。找了许多资料,包括程序猿题解天堂stackoverflow找到的也不好使。某度找到的只有4个答案,有三个答案是关于添加-autoNameResolution,结果 wsimport 加上提示根本不存在该属性啊,,,,
于是决定用wsdl2java,本来以为要安装什么东西,公司那破网速简直不敢,看了介绍只需要下载解压,添加到系统路径path即可,找了官网可下载的最新链接,按照网上的说法添加到系统路径,先添加属性CXF_HOME和值D:\Program Files\Java\apache-cxf-3.2.7,然后添加path属性%CXF_HOME%\bin,可是我的win10系统仍然提示不是内部命令,于是直接将D:\Program Files\Java\apache-cxf-3.2.7\bin 添加到path系统路径,重新开启cmd,成功!
wsdl2java http://***:****/***.wsdl 默认生成com.oracle.*.*.****包名,可以自定义 wsdl2java -p wsdl2java.test http://***:****/***.wsdl ,如果报:具有相同名称 "xxx" 的类/接口已在使用。请使用类定制设置来解决此冲突。可添加 -autoNameResolution 解决。
wsdl2java -p wsdl2java.test -autoNameResolution http://***:****/***.wsdl
添加 -client 可以自动生成main测试代码 wsdl2java -p wsdl2java.test -client -autoNameResolution http://***:****/***.wsdl