Web Service 的介绍及入门程序

来源:互联网 发布:测试网络摄像头软件 编辑:程序博客网 时间:2024/05/17 00:09

1.什么是web service?

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。(简说:web service 就是使用http传输SOAP协议的数据的一种远程调用技术)

2.web service 优缺点

优点:
1.跨防火墙。
发送方式采用http的post发送,http的默认端口是80,防火墙默认不拦截80
2.跨平台。
采用XML格式封装数据,XML是跨平台的,所以web service也是的
3.面向对象。
缺点:
1.性能较低。
采用XML格式封装数据,所以在传输过程中,要传输额外的标签,随着SOAP协议的不断完善,标签越来越大,导致webservice性能下降

3.应用场景

主要用于软件的集成和复用

3.1、适用场景

1.发布一个服务(对内/对外),不考虑客户端类型,不考虑性能,建议使用webservice

2.服务端已经确定使用webservice,客户端不能选择,必须使用webservice

3.2、不适用场景

1.考虑性能时不建议使用webservice

2.同构程序下不建议使用webservice,比如java用RMI,不需要翻译成XML的数据

4.web service 入门程序

4.1需求

1.服务端:发布一个天气查询服务,接收客户端城市名,返回天气数据给客户端
2.客户端:发送城市名称给服务端,接收服务端的返回天气数据,打印

4.2环境

jdk、IDEA

4.3实现

4.3.1服务端
1.创建SEI(Service Endpoint Interface)接口,本质上就是Java接口

public interface WeatherInterface {    public String queryWeather(String cityName);}

2.创建SEI实现类,在实现类上加入@WebService

@WebServicepublic class WeatherInterfaceImpl implements WeatherInterface {    @Override    public String queryWeather(String cityName) {        System.out.println("from client..."+cityName);        String weather = "晴";        return weather;    }}

3.发布服务,Endpoint发布服务,publish方法,两个参数:1.服务地址;2.服务实现类

public class WeatherServer {    public static void main(String[] args) {        //Endpoint发布服务        //参数解释        //1.address - 服务地址        //2.implementor - 实现类        Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());    }}

4.测试服务是否发布成功,通过阅读使用说明书,确定客户端调用的接口、方法、参数和返回值存在,证明服务发布成功。
在浏览器输入:http://127.0.0.1:12345/weather?wsdl,出现一个说明书,遵循从下往上看,查看方法是否发布

4.3.2客户端
1.根据wsimport命令生成客户端代码
wsimport -s . http://127.0.0.1:12345/weather?wsdl,生成的客户端代码可以复制到项目中去,不要修改生成的代码。
2.之后我们新建一个java,根据使用说明书,使用客户端代码调用服务端
第一步:创建服务视图,视图是从service标签的name属性获取
第二步:获取服务实现类,实现类从portType的name属性获取
第三步:获取查询方法,从portType的operation标签获取

public class WeatherClient {    public static void main(String[] args) {        //创建服务视图        WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();        //获取服务实现类        WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);        //调用查询方法,打印        String weather = weatherInterfaceImpl.queryWeather("北京");        System.out.println(weather);    }}

最终结果:输出“晴”

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蚂蚱吃了会过敏怎么办 孕妇能吃蚂蚱菜怎么办 孕妇吃了蚂蚁菜怎么办 白果很硬的时候怎么办 有痔疮吃了胡椒怎么办 吃紫菜多了难受怎么办 四川泡菜太酸了怎么办 孕妇吃了白花菜怎么办 怀孕吃了马扎菜怎么办 被铁钉扎伤了脚怎么办 风扇吹得肩膀疼怎么办 胳膊肌肉那块肿了怎么办 生完孩子臀部变宽怎么办 3岁宝宝肋骨外翻怎么办 胸肌正面不明显侧面看才有怎么办 小孩胸肌骨突出外翻怎么办 衣柜隔层板坏了怎么办 科三路线记不住怎么办 喂奶以后胸变小了怎么办 健身完肩膀缝疼怎么办 生过孩子胯部宽怎么办 无肩带文胸往下滑怎么办 内衣肩带老是往下滑怎么办 乳房发育一边大一边小怎么办 母猫乳房有硬块怎么办 19岁乳晕很大乳头很小怎么办 做完俯卧撑胳膊特别痛怎么办 电压低风扇转不动怎么办 小孩不配合康复锻炼怎么办 跑步机安全开关脱落怎么办 办健身卡贵了怎么办 跑步机安全锁丢了怎么办 老公的腿老是疼怎么办 跑步机钥匙丢了怎么办 跑步机磁铁丢了怎么办 瑜伽拉筋拉伤了怎么办康复 大腿拉筋拉伤了怎么办 肚子饿的咕咕叫怎么办 手表折叠扣松了怎么办? 手表链扣松了怎么办? 原车挡泥板碎了怎么办