在上一篇博客中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
verbose : 输出编译信息。
extension : 在不声明extension的情况下,wsimport只支持soap,对绑定在http上的port不进行编译。所以需要声明extension.
编写client
在eclipse中,生成一个java project。然后将WSDL生成的java或class导入到项目中。
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>
是不是超级简单了啊?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。