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) 服务端

第一步:创建SEI(Service Endpoint Interface)接口,本质就是Java接口

public interface WeatherInterface {

       public String queryWeather(String Name);

}

l 第二步:创建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;

}

}

l 第三步:发布服务

  • 用Endpoint类的publish方法发布服务
  • 方法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第二步:引入第三方插件的jar包(jaxws-ri-2.2.8)

第三步:重新启动服务端

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

开发步骤:

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

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

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

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

第四步:调用查询方法,方法名从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端口
  • 跨平台,使用http和XML,这两个协议都是跨平台的
  • Webservice支持面向对象编程

缺点:

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

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

适用场景:

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

不适用场景:

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

WebService远程调用技术的更多相关文章

  1. C#远程调用技术WebService葵花宝典

    一.课程介绍 直接开门见山吧,在学习之前阿笨想问大家一句,关于WebService远程过程调用技术(RPC) 你真的会了吗?不要跟老夫扯什么WebService技术已经过时,如果你的内心有在偷偷告诉你 ...

  2. C#远程调用技术WebService修炼手册

    一.课程介绍 一位伟大的讲师曾经说过一句话:事物存在即合理!意思就是说:任何存在的事物都有其存在的原因,存在的一切事物都可以找到其存在的理由,我们应当把焦点放在因果关联的本质上.所以在本次分享课开课之 ...

  3. Spring远程调用技术<2>-Hessian和Burlap

    上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...

  4. Spring远程调用技术<1>-RMI

    在java中,我们有多种可以使用的远程调用技术 1.远程方法调用(remote method invocation, RMI)  适用场景:不考虑网络限制时(例如防火墙),访问/发布基于java的服务 ...

  5. Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)

    转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...

  6. WebService远程调用(命令行调用)

    远程调用webservice 方法, 通过wsdl命令,生成webservice 对应asmx 文件的对应类(cs文件),然后将此cs文件引用到当前项目中,项目其他地方需要调用webservice方法 ...

  7. Spring远程调用技术<3>-Spring的HTTP Invoker

    前面提到RMI使用java标准的对象序列化机制,但是很难穿透防火墙.  另一方面,Hessian和Burlap能很好地穿透防火墙,但是使用私有的对象序列化机制. Spring提供的http invke ...

  8. WebService远程调用(代码调用)

    在做多个系统集成的时候,由于各系统厂商采用不同的架构,在项目实施前期,各业务对业务理解不够深入,系统接口可能会有较多变化, 在此背景下,动态调用webserivce就变得灵活了,降低了系统集成的耦合度 ...

  9. WebService与RMI(远程调用方式实现系统间通信)

    前言 本文是<分布式java应用基础与实践>读书笔记:另外参考了此博客,感觉讲的挺好的,尤其是其中如下内容: 另外,消息方式实现系统间通信本文不涉及.RMI则只采用spring RMI框架 ...

随机推荐

  1. Hash应用例子

    八.Hash应用例子搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复 ...

  2. 【转】vue.js表单校验详解

    官方文档:https://monterail.github.io/vuelidate/ https://github.com/monterail/vuelidate 1.npm安装vue-valida ...

  3. [转]每天一个linux命令(44):top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...

  4. [转]10+倍性能提升全过程--优酷账号绑定淘宝账号的TPS从500到5400的优化历程

    摘要: # 10+倍性能提升全过程--优酷账号绑定淘宝账号的TPS从500到5400的优化历程 ## 背景说明 > 2016年的双11在淘宝上买买买的时候,天猫和优酷土豆一起做了联合促销,在天猫 ...

  5. 使用C#开发数据库应用程序

    第一章 用Hello ACCP.NET快速热身(一) 1-1.进入C#世界 a.第一个C#程序 (1)新建项目[项目:project] (2)生成解决方案[生成:build,解决方案:solution ...

  6. css 改变浏览器滚动条的样式

    /*滚动条样式*/ .innerbox::-webkit-scrollbar {/*滚动条整体样式*/ width: 4px; /*高宽分别对应横竖滚动条的尺寸*/ height: 4px; } .i ...

  7. auxre7使用安装

    auxre7安装     1● auxre7下载 2● 安装 D:\soft   axureuser 8wFfIX7a8hHq6yAy6T8zCz5R0NBKeVxo9IKu+kgKh79FL6IyP ...

  8. forget stereo step word out8

      1★ stereo st əri əu 立体的   2★ step st əp 后,前妻所生,步骤  

  9. zabbix3.4.7监控linux进程

    利用zabbix proc.num方法监控Linux服务进程 proc.num[<name>,<user>,<state>,<cmdline>] 监控用 ...

  10. 分布式锁与实现(一)基于Redis实现

    目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency).可用性( ...