cxf生成webservice客户端
步骤:
1:登陆cxf官网 http://cxf.apache.org/ 下载 Binary distribution 版本(编译后版本)目前常使用的是apache-cxf-2.7.12.tar.gz
2、解压压缩文件,打开控制台窗口 cmd,到apache-cxf-2.7.12\bin目录下
3、执行命令
wsdl2java -frontend jaxws21 -p org.tempuri -d D:\cxf -all IP:Port/ResourceSearching.asmx?wsdl
或者
用IE浏览器打开webservice地址,然后查看源文件,保存文件到指定的目录,文件名称为 ResourceSearching.wsdl.
把ResourceSearching放到apache-cxf-2.7.12\bin目录下
执行命令
wsdl2java -frontend jaxws21 -p org.tempuri -d D:\cxf -all ResourceSearching.asmx?wsdl
遇到的问题:
1、
解决办法:
<s:any minOccurs="2" maxOccurs="2"/>和<s:element ref="s:schema" /><s:any />其实是等价的。<s:element ref="s:schema" />其实就是说这里可以用s:schema规定的任意一种元素类型来替代,<s:any />正是起到了这个作用。
原因是:wsdl2java的生成错误应该是和JAXB不支持xml的ref有关。
2、在执行过程中可能会出现 跟编码有关的异常,报流不可读
解决办法:查看一下生成的本地文件wsdl的默认编码和wsdl里的编码是否一致,如果不一致,改一下再保存,就可以了
具体命令的含义:
p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web service的代码
-impl 生成web service的实现代码
-ant 生成build.xml文件