zoukankan      html  css  js  c++  java
  • WebService远程调用技术

    1、---------------------------------介绍--------------------------------------------------

    (1)远程调用:一个系统远程调用另一个系统的服务,已获取远程系统的业务数据。

    (2)为什么使用:基于安全性的考虑,一般企业不会开放自己的数据库只能使用远程调用技术。

    2----------------------- Webservice是如何实现远程调用?三要素webservice的作用?-----------------------------------

    (1)Webservice原理:webservice是一种使用http传输的SOAP协议的数据的远程调用技术

    (2) WSDL作用webservice服务端的使用说明书。(Web Service Description Language)

    (3)SOAP作用规范XML标签。

    (4) UDDI提供webservice服务端的搜索和注册功能。

     

    注意事项

    1. 开发webservice的应用需要开发客户端和服务端
    2. 客户端需要参考webservice服务端的使用说明WSDL

    3----------------------------Webservice入门程序--------------------------------------------------

    (1) 服务端

     第一步:创建SEIService Endpoint Interface接口,本质就是Java接口

    public interface WeatherInterface {

           public String queryWeather(String Name);

    }

    第二步创建SEI实现类

    • 类上加入注解:@WebService
    • 该注解表示该类是一个webservice的服务类,要发布该类下public方法

    @WebService

    public class WeatherInterfaceImpl implements WeatherInterface {

             @Override

             public String queryWeather(String Name) {

                  System.out.println("from client..."+Name);

                  String weather = "";

                  return weather;

    }

    }

    第三步发布服务

    • Endpointpublish方法发布服务
    • 方法publish两个参数:1.服务地址2.服务实现类实现

    public class WeatherServer {

         public static void main(String[] args) {

          //Endpoint类的publish方法发布服务

         //端口号建议不要太短,容易被系统占用;不要太长,太长不支持

           Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());

         }

    }

    l第四步测试服务是否发布成功,通过阅读服务端的使用说明书,确定关键元素存在(/方法/参数等)表示服务发布成功

     

    • WSDL地址规则:服务地址+?wsdl
    • WSDL地址的阅读方式:从下往上找到service标签,确定binding属性

     

    注意:

    发布SOAP1.2服务端

    l第一步:在实现类上加入如下注解

    @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)

    l第二步引入第三方插件jarjaxws-ri-2.2.8

     第三步:重新启动服务端

     

    (2)客户端(好几种方法实现)

     

    开发步骤

     

     第一步wsimport命令生成客户端代码。

     

    wsimport -s . http://127.0.0.1:12345/weather?wsdl --------------------------如果你的开发工具是IDEA可以直接使用工具,里面有,可以百度一下。

     

     第二步创建服务视图,服务视图名的类从service标签的name属性获取

     

     第三步通过服务视图获取对应服务实现类的实例,服务实现类的名称从portTypename属性获取

     

     第四步调用查询方法,方法名从operation下的name属性获取

     

     

    public class WeatherClient {

     

     

            public static void main(String[] args) {

     

                //创建服务视图

     

              WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();

     

                      //获取服务实现类的实例

     

                     String weather = weatherInterfaceImpl.queryWeather("北京");

     

                    System.out.println(weather);

     

    }

     

    }

    5-------------------------- Webservice优缺点--------------------------

    优点:

    • 跨越防火墙,使用http协议,http协议的默认端口是80,防火墙默认是不拦截80端口
    • 平台,使用httpXML这两个协议都是跨平台的
    • Webservice支持面向对象编程

    缺点:

    • Webservice使用XML标签传输数据,发送数据时XML标签也必须发送,标签又要遵循SOAP协议,随着SOAP协议的完善,标签越来越多,传输效率下降,性能

     

    6----------------------------使用------------------------------------

    适用场景:

    • 发布一个服务,客户端类型未知不考虑性能建议使用webservice
    • 服务端已确定使用webservice客户端无法更改

    不适用场景:

    • 考虑性能时不建议使用webservice

     

     

  • 相关阅读:
    [转]VS2010几款超赞的扩展辅助工具总结
    从客户端中检测到有潜在危险的Request.Form 值
    面试系列28 分布式服务接口的幂等性如何设计
    面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试
    面试系列25 dubbo的spi思想是什么
    面试系列24 dubbo负载均衡策略和集群容错策略
    面试系列23
    面试系列22 dubbo的工作原理
    面试系列21 为什么要进行系统拆分
    面试系列20 生产环境中的redis是怎么部署的
  • 原文地址:https://www.cnblogs.com/taotingkai/p/6694583.html
Copyright © 2011-2022 走看看