WebService JAX-WS client

在上一篇博客中WebService Raw Client ,我们揭开了WebService的内衣,看清了WebService的躶体。明白如何通过查看WSDL来构建SOAP协议的请求和应答。

任何一种工具,都是为了隐藏复杂繁琐的底层实现,这也以藏了原理。但工具却极大的简化了我们的工作。在理解原理以后,我们需要追求工具的便利性。今天就是承接上一篇博文,使用JAX-WS来简化client的开发。我还是使用天气预报服务 http://www.webservicex.net/globalweather.asmx?WSDL 

J2EE SDK

在使用JAX-RS前,先安装J2EE SDK。要求至少版本5以上,我装的是7。在SDK目录glassfish4\glassfish\bin下,有一个命令wsimport是我们需要的。这个命令可以将WSDL转为基于JAX-WS的java类。这些类是开发客户端所依赖的。

导入WSDL

使用wsimport命令,将WSDL转为java类。

C:\glassfish4\glassfish\bin>wsimport -extension -keep -verbose -d d:/share http://www.webservicex.net/globalweather.asmx?WSDL

keep : 保留生成的.java文件

verbose : 输出编译信息。

d : 声明文件产生在哪一个目录中

extension : 在不声明extension的情况下,wsimport只支持soap,对绑定在http上的port不进行编译。所以需要声明extension.

在目录d:/share下,可以看到生成的文件。

004012_D3EH_254689.png

编写client

在eclipse中,生成一个java project。然后将WSDL生成的java或class导入到项目中。

然后在自己的方法中就可以调用WSDL提供的方法了:

public class App 
{
    public static void main( String[] args )
    {
    	GlobalWeather service = new GlobalWeather();
    	GlobalWeatherSoap port = service.getGlobalWeatherSoap();
    	String body = port.getWeather("shanghai", "China");
        System.out.println(body);
    }
}

运行以后,输出:

<?xml version="1.0" encoding="utf-16"?>
<CurrentWeather>
  <Location>Shanghai / Hongqiao, China (ZSSS) 31-10N 121-26E 3M</Location>
  <Time>Apr 17, 2014 - 11:30 AM EDT / 2014.04.17 1530 UTC</Time>
  <Wind> from the NW (320 degrees) at 4 MPH (4 KT) (direction variable):0</Wind>
  <Visibility> 1 mile(s):0</Visibility>
  <Temperature> 62 F (17 C)</Temperature>
  <DewPoint> 57 F (14 C)</DewPoint>
  <RelativeHumidity> 82%</RelativeHumidity>
  <Pressure> 29.94 in. Hg (1014 hPa)</Pressure>
  <Status>Success</Status>
</CurrentWeather>

是不是超级简单了啊?

转载于:https://my.oschina.net/xpbug/blog/223666

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值