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

 

 

 

 

 

 

 

posted @ 2017-04-11 17:37  陶庭开  阅读(8075)  评论(0编辑  收藏  举报