一、 通过wsimport生成本地代理调用WebService
1、推荐的访问服务方式
WebService已纳入w3c规范,其他的平台都支持该规范 :J2EE\Php\.NET都支持wsimport 方式,即对远程的WebService生成本地代理,再通过本地代理来访问WebService。客户端通过wsimport的方式生成java语言本地代理,并把远程的服务解析成本地的类和接口。
A、服务访问要求
Jdk的版本要在Jdk 1.6.21及以上。
B、 wsimport的使用
wsimport命令的位置在JDK安装路径的Bin目录下,wsimport常用语法如下图,下图中的wsimport路径为我自己电脑的JDK路径
2、具体案例和Java代码实现
步骤一、
确定系统Jdk环境与Eclipse Jdk环境一致,版本在1.6.021以上
步骤二、
知道服务端的WSDL路径(WSDL后面有详细介绍),如本次调用查询手机归属地服务的具体路径如下:
http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
步骤三、
使用JDK1.6以上版本的wsimport命令获得服务端的class文件,生成本地代理
示例命令如下,其中-s D:\test为指定class文件的存储路径
步骤四、
在指定的路径下找到服务端的class文件(步骤3路径为D:\test),默认会生成指定的包名cn.com.webxml,并将该包导入新建项目中。
步骤五、
编写Java代码获取相应的服务数据,具体代码实现如下:
返回结果如下:
二、 创建并发布自己的WebService
1、编写WebService的服务端并发布
如果要编写WebService的服务端并发布,需要编写业务类,该类通过WebService对外提供服务,要做以下工作
A、声明:@webservice
B、发布:调用EndPoint方法
下面为一个创建并发布服务的案例以及Java代码实现
步骤一、
编写业务类,并在业务类的类名之上添加@webservice注解,如下示例为编写一个手机操作系统信息类,用以提供不同手机操作系统对应的发展历史,所属公司以及别名。首先编写手机的Bean,为其配置三个属性和添加getter和setter方法。
步骤二、
编写该业务类的发布方法,指定发布的地址和具体的业务实现类,注意浏览服务具体信息时,地址后面需添加“?WSDL”代码如下,运行即可发布服务。
步骤三、
访问服务的具体说明路径,上例中生成的路径为:
http://127.0.0.1:8888/webservice/phoneservice?WSDL
访问该路径,看到生成对应的服务名以及方法则服务发布成功,如下图
2、调用自己发布的服务
如果要调用自己编写的上例中的WebService,可以使用上文介绍的通过wsimport生成本地代理的方式来调用,通过wsimport的方式生成java语言本地代理,并把远程的服务解析成本地的类和接口,之后导包,导包如下。
之后编写测试类调用自己的服务,代码如下:
输出结果如下: