别人用jax-ws发布的webservice,我尝试了用axis调用webservice即wsdl可以。下面尝试另一种方式调用,用jax-ws方式去调用
jax-ws什么意思?
jax是什么?
ws是什么,即webservice。
方法如下:
http://www.cnblogs.com/HigginCui/p/5833415.htmlJDK提供了一个wsimport.exe的命令,主要是用于将WebService生成客户端代码,然后好调用WebService。 wsimport 是根据JDK1.6.0_21及以上的生成本地代码的,它只能解析服务器端的SOAP协议为1.1,不能解析SOAP1.2的协议。如果解析SOAP1.2 将会解析 如果遇到 'wsimport' 不是内部或外部命令,也不是可运行的程序,则么办? 但是还是会报错: wsimport "不支持使用 SOAP 编码。 原因是: http://blog.csdn.net/u010668910/article/details/50955937#comments 解决方式是:用Eclipse自动生成客户端代码,不用wsimport。 生成完毕之后,客户端代码怎么写? 使用Eclipse方式和wsimport两种方式,生成的客户端代码的.java文件是不一样的,因此客户端调用也不一样。 1)wsimport生成客户端代码方式,客户端调用代码: 网上的客户端调用代码: 我亲自测试成功的代码: 2)Eclipse生成的客户端代码方式,客户端调用代码: 用Eclipse生成的客户端代码,你回发现,没有一个形如"WeatherInterfaceImpl"即以Impl结尾的.java文件,为什么? 通过Eclipse自动产生的Code中, 有一个Java 文件以Proxy结尾, 这个就是调用的Class了。 为什么是Proxy结尾的? 原因是,Eclipse方式生成的客户端代码,是使用的java代理(即Java Proxy,Proxy就是代理的意思): 所以其客户端调用代码如下: |
总结:
使用jax-ws方式的客户端,去调用别人的接口。不需要任何其他的技术,有jdk就行。
1)用Eclipse生成客户端代码(前提是发布wsdl工程要保持运行才能自动生成代码即java类,即http://...?wsdl要可以访问)。
2)在自己的方法中,调用客户端的类,即可。
----------特此说明:
用Eclipse生成jax-ws方法,生成客户端java代码,这种方式,不靠谱。Eclipse生成代码时报错,生成不了代码。但是命令行方式,却可以。
我就遇到过一次:
Eclipse报错:
但是使用jdk的wsimport.exe这个工具就可以生成客户端代码:
使用方法:
打开cmd,进入到wsimport.exe所在的位置,执行如下命令:
wsimport -keep XX?wsdl -d src
wsimport -d ./bin -s ./src XX?wsdl
注意:
①上面两个命令中的src、bin目录需要在bin目录下新建,命名可以任意,否则会报错“directory not found: .\bin”、“directory not found: src”等目录不存在的问题。
②wsimport -d ./bin -s ./src XX?wsdl ,bin目录下存在的是.class文件,src下存的是.java文件