频道栏目
首页 > 资讯 > 其他综合 > 正文

jdk发布webservice服务(二)

17-02-14        来源:[db:作者]  
收藏   我要投稿

jdk发布webservice服务(二):1.使用JAX-WS开发webservice,JAX-WS 的全称为 Java API for XML-Based Webservices 。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本,本教程我们使用jdk1.7.0_07开发。

那么如何才可以发布一个WebService呢?


1:用Jdk1.6.0_13以后的版本发布一个WebService服务,并通过地址栏查看它的wsdl文档.
2:通过wsimport生成客户端代码,调用并查看运行的结果.(学会如何调用是我们的重点).
3:从互联网上获取一个WebService网络公开的服务,并使用工具生成客户端,调用并查看结果。

测试代码包括服务端和客户端的开发
1.3.1 服务端开发:
代码:

其中:
1、编写SEI(Service Endpoint Interface),为了开发方便我们用java类代替接口加实现类的方式。
2、java类中至少要有一个非静态的公开方法需要作为webservice服务方法。
3、public class WeatherServer上边要加上@WebService,表示webservice的发布类。
4、使用Endpoint.publish()方法发布服务。

2 学会看懂使用说明书(wsdl)


1、在地址栏输入(注意后面的参数?wsdl)
http://127.0.0.1:8888/weather?wsdl
2、这里注意目前不是访问webService,只是获取一个用于描述WebService的说明文件,即:wsdl文件,我们需要看懂wsdl的文件,这样就知道服务端究竟发布什么样的服务,提供什么样的方法,需要传递什么类型的参数,方法的返回值类型是什么等。.
3、wsdl- 即WebServiceDescriptionLanguage,是以XML文件形式来描述WebService的”说明书”,有了说明书,我们才可以知道如何使用或是调用这个服务。


这里从下向上看:
其中:
1:WeatherServerService为视图服务
2:WeatherServerPort为调用的端口,即getWeatherServerPort()方法
3:WeatherServer为接口,接口中提供一个queryWeather()的方法


3 客户端开发:


wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么语言编写的并不重要.
wsimport.exe位于JAVA_HOME\bin目录下.
例如:在cmd的窗口下执行wsimport可以看到

常用参数为:

-keep:是否生成Java源文件

-d:指定.class文件的输出目录

-s:指定.java文件的输出目录

-p:定义生成类的包名,不定义的话有默认包名

-verbose:在控制台显示输出信息

-b:指定jaxws/jaxb绑定文件或额外的schemas

-extension:使用扩展来支持SOAP1.2
示例:
wsimport其他参数说明,我们经常使用的参数为-d,-s,-p
-d<目录>将会生成.class文件.
示例:wsimport –d . http://127.0.0.1:8888/weather?wsdl
-s<目录>将会生成.java文件.
示例:wsimport –s . http://127.0.0.1:8888/weather?wsdl
-p<包名>将生成的文件(.java或是.class修改成指定的包名)
示例:wsimport -s . -p cn.itcast http://127.0.0.1:8888/weather?wsdl

 

 

使用wsimport命令生成webService客户端代码实例

http://blog.csdn.net/aqsunkai/article/details/51711087

示例:
C:/> wsimport –s . http://127.0.0.1:8888/weather?wsdl
注意:-s不能分开,-s后面有个小点

在cmd的窗口执行:

在D盘ws的文件夹下看到客户端生成的java文件:


将.java的文件整个包拷贝到客户端的工程下,然后使用WeatherClient的客户端测试,测试代码如下:

其中WeatherServiceService为服务器类
其中WeatherServer为接口类
其中getWeatherServerPort为端口类型
其中queryWeather为调用的方法


这四个参数在wsdl的使用说明书中都会看到。
通常用于描述服务的名称,即new WeatherServerService ();-通常称为服务名。
在元素内的即new WeatherServerService ().getWeatherServerPort (); - 通常称为服务端口。
是服务接口名。即:
WeatherServer weatherServer = new WeatherServerService ().getWeatherServerPort ();

在myeclipse上查看.wsdl文件:如图:可视化的webservice

 

1.4:网络练习
对于用户而言,用户是永远也感受不到你的程序具体是如何获取天气预报信息的.但他的确通过你的程序获取了天气信息,这对用户就已经足够了.但其实,对于程序员来说,程序员本身并没有做很多的工作,只是简单的调用了气象部门对外发布的服务从而获取了天气信息.
Webservice的网络网址:www.webxml.com.cn
1.4.1:手机归属地
1:下面实现一个手机号归属地的查询:大家可以回家试下:
(1):在E盘下,写一个phone.wsdl文件(从资料webservice\提供资料\网上手机+天气\中获取),内容就是网络发布的使用说明书
(2):,生成客户端代码
注意:使用jaxws提供的wsimport生成客户端,这里先强调jaxws只能编译soap1.1的协议,不能编译soap1.2的协议的代码。
(3):客户端调用代码

1.4.2:天气预报
下面实现一个天气预报的查询:
(1):在E盘下,写一个weather.wsdl文件(从资料webservice\提供资料\网上手机+天气\中获取),内容就是网络发布的使用说明书
(2):,生成客户端代码
注意:使用jaxws提供的wsimport生成客户端,这里先强调jaxws只能编译soap1.1的协议,不能编译soap1.2的协议的代码。
(3):客户端调用代码

相关TAG标签
上一篇:dubbo源码分析
下一篇:git学习心得(一)如何关联本地库和远程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站