在Web Service学习(一)中最后一个例子中,我们用get的方式去访问第三方应用,此外还有post,soap方式。
这些方式都有些缺点:
发送的参数不方便,比如get方式需要拼接在URL中,post需要一个个set。
接收的数据格式是xml,我们也需要解析。
所以接下来;介绍一种比较好的访问方式:wsimport
简单的说:就是将第三方应用,生成一个本地代理,这样和调用自己的业务类一样了。
使用这种方式,有两个要求:
1. jdk的 版本要在 jdk 1.6.21及以上
2. 操作系统安装的jdk版本 与 MyEclispe 及 默认指定的版本要一致
生成本地代理方式:
打开cmd 输入 wsimport http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL
该网址是第三方应用的服务说明的网址
然后在桌面生成第三方应用的jar包,放入自己的项目中,就可以向调用自己的类一样调用第三方应用了。
其中,wsimport 后面可以跟参数
- d :指定要输出的文件的位置
- s :表示要解析java的源码 ,默认解析出的是class字节码
- p : 指定输出的包名
以上是访问别人的webservice
接下来我们定义自己的webservice:
- 声明 某个业务服务为webservice服务
通过@webservice 注解来声明
- 发布webservice服务
Endpoint.publish()发布
- 通过wsimport生成本地代理来访问自己发布的webservice
wsimport
首先自己写个普通类,用@webservice 注解声明,然后通过以下代码发布
public static void main(String[] args) {
// TODO Auto-generated method stub
String url = "http://127.0.0.1:9999/webservice/myservice";
Endpoint.publish(url, new myservice());
}
之后就可以像前面介绍的,访问自己发布的webservice。