webservice的学习

来源:互联网 发布:程序员图片 编辑:程序博客网 时间:2024/06/02 05:38

1.什么是wenservice?

直译为 网络服务 ,是RPC的一种实现方式.

其目的为:通过客户端访问服务器获取数据,webservice采用的是XML

      RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

2.使用场景?

1).有权威机构提供的第三方小功能,比如:天气预报

2),多种客户端整合

    3).异构系统整合

3.常用方案:搭建一根总线——ESB(企业服务总线),如下图:

ESB的作用:对企业里面的SOA(面向服务的架构)服务的调用提供一个框架和简便的方法。

3.具体实现方法:      暴露服务、查询服务、调用服务传输数据。

1),暴露出一个服务(接口)出去,并且做一个描述WSDL 

WSDL(WebServicesDescriptionLanguage):WS的描述语言,告诉总线自己暴露了哪些服务

2),查询:找到UUDI(类似于DNS),用于服务的注册,查询

UUDI(WebServicesDescriptionLanguage):一种目录服务,用于集成,发现,集成协议.

3),传输数据:定义数据传输规范,一般都采用XML传递,把对象及XML进行转换由SOAP规范.

SOAP(Simple Object Access Protocol):简单对象访问协议,轻量.简单.基于XML的协议

总结:WS是一种基于HTTP协议与XML技术,并且使用WSDL描述和使用SOAP协议传输的异构系统解决方案

必备条件:1.WSDL文件,服务描述

  2.对象与XML转换(数据)

WS与SOA的区别:

web Service是技术规范,而SOA是设计原则,一种架构模式

WSDL,UDDI.SOAP是SOA基础的基础部件

WSDL:用来描述服务

UDDI:用来注册和查找服务

SOAP:作为传输层,用来在客户端和服务器端之间传送消息

4.案例解析(基于JDK的WS开发----服务端部分)

需求:做一个HellowWorld来提供天气服务

1).创建WS服务类

@WebService //标记为WS服务类@SOAPBinding(style=Style.RPC) //声明访问规范public class WeatherService {//把数据放在本地,使用Map安装private Map<String, String> weather = new HashMap<String,String>();//初始化两条数据public WeatherService(){weather.put("cd", "6~12");weather.put("gz", "17~22");}@WebMethod //标记为需要暴露的WS服务方法public String getWeather(String city){if(city!=null){String we = weather.get(city);if(we!=null){return we ; }return "unknown!";}return "error!";}}

2).发布服务,创建类 Publish.java

发布服务的三个条件:address,implementor实现类,

public class Publish {public static void main(String[] args) {//声明服务访问地址String address ="http://192.168.1.104:9527/weather";//初始化服务类,指打了WebService标签的类Object implementor = new WeatherService();Endpoint.publish(address, implementor);System.err.println("服务发布成功 ...");}}
测试是否发布服务成功:访问   http://192.168.1.104:9527/weather  或者http://192.168.1.2:9527/weather?wsdl

3):发布成功后的WSDL文件详解:


 

4.基于JDK的WS开发----客户端部分

1).若已经配置(详情见http://blog.csdn.net/gs932899178/article/details/53701346 )了 CXF_HOME 环境变量的情况下:

在  包文件的位置通过命令生成代码   ----------------------  wsimport <参数> [ws发布的url]      (‘<>’中为选填,‘[]’中为必填)

示例:   wsimport  -s  .  http://192.168.1.104:9527/weather?wsdl


2).根据WSDL文件,在java客户端调用WebService

public class Call {public static void main(String[] args) {//初始化接口,客户端主要是消费接口所提供的服务//创建实现类实例,调用get..Port方法通过binding这个桥梁初始化接口WeatherService ws =                      new WeatherServiceService().getWeatherServicePort();//调用服务,得到天气信息String weather = ws.getWeather("cd");System.out.println(weather);}}






0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信收藏的视频格式错误怎么办 乙方被刑拘房租未付清怎么办 房贷银行卡号弄错怎么办 社保卡号弄错了怎么办 社保名字写错了怎么办 档案和身份证年龄姓名不一样怎么办 档案年龄与身份证年龄不一样怎么办 户口本身份证和档案不一样怎么办 如果档案姓名与身份证不符怎么办 感冒吃了白参怎么办 吃辣的嗓子疼怎么办 美团客户更改地址怎么办 忘记steam的账户名称怎么办 重置手机忘了密码怎么办 sp下行短信费扣怎么办 hr公司业务员招不到人怎么办 卖房中介被房倒压房子怎么办 电脑放不了dvd光盘怎么办 股东迟迟不交齐股本金怎么办 wps转pdf就乱了怎么办 被有用分期骗了怎么办 找不到以前有用分期的账号怎么办 打工去韩国不懂韩语怎么办? 想去韩国整容没钱怎么办 专接本没接上怎么办 抄写经文写错了怎么办 在外地修车被宰怎么办 国外汇款公司名称写错了怎么办 增值税专票没有机器编码怎么办 发票右上角的编码打不全怎么办 税票名称开错了怎么办 开票名称开错了怎么办 退休党员不交党费怎么办 cad打不出来字怎么办 用cad打不出来字怎么办 打字总打错字母怎么办 mac做ppt卡住了怎么办 mac的ppt卡住了怎么办 淘宝店铺被屏蔽了怎么办 淘宝申请售后卖家拒绝怎么办 淘宝投诉卖家入口关闭怎么办