WebService远程调用技术

一、---------------------------------介绍--------------------------------------------------java

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

(2)为何使用:基于安全性的考虑,通常企业不会开放本身的数据库只能使用远程调用技术。数据库

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

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

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

(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
相关文章
相关标签/搜索