一、WebService是什么?

WebService,是RPC的一样实现方式。

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议

客户端要能调用服务端必须遵循TCP协议,而WebService使用的是更高一级的HTTP协议。

客户端访问服务器的目的是为了获取数据,那数据格式必须是与平台、语言无关的。WebService采用的是XML.

WebService的使用场景:ESB(企业服务总线)

如果一个企业存在多个使用不同语言开发的在用系统,数据传递和整合就显得尤其麻烦,利用传统连接各个系统的方法,存在如果新添加一个系统,都需要和每一个已经存在的系统建立关联,集成系统的时候入侵性太强,往往伴随着整体系统结构的改变。

所以在这种场景下,可在企业系统里搭建一根总线——ESB(企业服务总线),用来连接企业里各个系统的服务的。每个系统和总线连接起来,用XML传输数据。

把各系统连接到总线上以后,例如查询销售单,把请求抛给总线,由总线负责把消息带到进销存系统中去,再把结果按照应的规范传到总线上,由总线负责把结果返回到财务系统中。若要增加额外的系统,如WebQQ,就只需要把他挂到ESB上就OK了。ESB也是一个应用模块,负责把每个系统连接起来。

ESB全称为EnterpriseServiceBus,即企业服务总线。

它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

ESB不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法。

SOA

对于这一种架构,我们称为SOA:面向服务的架构。要使用总线上挂的各个服务则需要对暴露的接口做一个描述。

第一,ESB怎么知道有哪些什么样服务?那此时我们就得对暴露出去的服务做一个描述,而这个描述就是WSDL。

WSDL(WebServicesDescriptionLanguage):WS的描述语言。告诉总线自己暴露了哪些服务。

第二,查询:我暴露了这个服务,要找到他则需要一个类似于DNS这样的东西,用于服务的注册、查询,而这个就是UDDI。

UDDI(Universal Description,Discovery andIntegration):是一种目录服务,用于统一地描述、发现和集成协议。UDDI定义如何查找WS(及其WSDL文件),可它并不像WSDL和SOAP一样深入人心,因为很多时候,使用者都知道Web服务的位置(通常位于公司的企业内部网中)。

第三,传输数据:定义数据传输规范,这里都使用XML进行传递,把对象和XML进行转换由SOAP规范。

SOAP(Simple Object Access Protocol):简单对象访问协议。是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。

二、关于WebService

WS是一种基于Http协议和XMl技术,并使用WSDL描述和使用SOAP协议传输的异构系统解决方案。 跨语言、跨系统

我们把调用WS的应用程序称为客户端,把提供WS的应用程序称为服务器端。

使用WS最重要的是什么:

一是:WSDL文件(服务藐视);

二是:对象与XML转换(数据)。

WS和SOA的区别:

Web Service是技术规范,而SOA是设计原则,一种架构模式。

WSDL,UDDI和SOAP是SOA基础的基础部件。

WSDL:用来描述服务;

UDDI:用来注册和查找服务;

SOAP:作为传输层,用来在客户端和服务器端之间传送消息。

三、关于WebService的常见标签

1、 @WebService标签

使用@WebService标签,需要配置在类上,代表这是一个提供WS的服务类。

endpointInterface:定义服务抽象WebService 协定的服务端点接口的完整名称。不允许在端点上使用此成员值,该元素的值必须有WebService标签。默认情况下,服务器自动生成服务端接口。

name:服务接口名称(对应wsdl: portType的name属性,用在服务接口上);

serviceName:服务类名称。默认为,实现类名+Service(对应service的name和definition上的name属性对应,用在实现类上)。

portName:Web Service的端口名称。此名称被用作wsdl:port的名称。

targetNamespace:目标命名空间,描述服务的预定义WSDL的位置(同时用在实现类和服务接口上,需统一)。

wsdlLocation:WSDL地址(服务端除了WSDL优先的情况外可不写,客户端代理接口上必须配置此属性,指向web端WSDL文件地址)

2 @WebMethod标签

使用@WebMethod标签,需要把他配置到方法上。

operationName:指定暴露服务方法的别名。

exclude:是否暴露此标记的方法。

3 @WebResult标签

使用@WebResult标签,需要把他标记在方法上或者方法返回类型定义之前。

name:定义返回值的名称。

header:布尔类型,是否把值放到header元素中进行传递。

4 @WebParam标签

使用@WebParam标签,需要把他标记在形参声明之前。

name:定义传递时参数的名称(默认参数以arg0,arg1…)。

header:布尔类型,是否把值放到header元素中进行传递。

5 @SOAPBinding

使用@ SOAPBinding标签,需要把他标记在类上。

SOAPBinding.ParameterStyleparameterStyle 确定方法参数是否表示整个消息正文,或者参数是否是包装在以操作命名的顶层元素中的元素。

SOAPBinding.ParameterStyle.WRAPPED,默认,使用对参数进行包装

SOAPBinding.ParameterStyle.BARE,不对参数进行包装

SOAPBinding.Style style 定义发 送到Web Service 的消息 和从Web Service发送的消息的编码样式。

SOAPBinding.Style.RPC:面向RPC

SOAPBinding.Style.DOCUMENT 默认,面向文档

SOAPBinding.Useuse 定义发送到WebService的消息和从WebService发送的消息的格式样式。

SOAPBinding.Use.LITERAL,默认,字面量风格,若服务端和客户端不在一起开发,就应该使用这个

SOAPBinding.Use.ENCODED使用SOAP编码风格,可能导致WS互操作方面失败问题,尽量避免使用。

WebService,ESB笔记的更多相关文章

  1. WebService学习笔记系列(二)

    soap(简单对象访问协议),它是在http基础之上传递xml格式数据的协议.soap协议分为两个版本,soap1.1和soap1.2. 在学习webservice时我们有一个必备工具叫做tcpmon ...

  2. Java WebService学习笔记 - Axis进阶(二)

    上一篇  Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...

  3. Java WebService学习笔记 - Axis(一)

    WebService 简介 实际开发中,很多系统都是基于历史遗留系统进行开发,有时,这些系统基于不同的语言,如C,C++,C#,java,PHP等等.为了实现历史系统的再利用,或向外部程序暴露调用接口 ...

  4. webservice 学习笔记 1

    Webservice----------->跨语言服务调用 (视频学习总结) 1-1.有OA系统 需要添加一个功能,登录之后显示天气情况 此时可以使用Webservice eg1: 气象局自己有 ...

  5. webservice 学习笔记

    1.webservice的概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  6. WebService学习笔记一

    01——Schema约束复习 1.1 schema约束 几个重要知识: 1.namespace 相当于schema文件的id 2.targetNamespace属性 用来指定schema文件的name ...

  7. WebService学习笔记系列(四)

    今天主要来看看服务端的编写及发布. 服务端的编写主要包括三个步骤: 1.编写一个接口,即SEI(server endpoint interface) 2.编写接口的实现类,即SIB (server i ...

  8. WebService学习笔记系列(三)

    网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...

  9. WebService学习笔记系列(一)

    webservice主要是解决两个系统或者两个应用程序之间的远程调用,它提供了一种通过web方式访问的api,调用是跨语言.跨平台的. webservice的客户端与服务端进行交互的时候使用xml来传 ...

随机推荐

  1. 关于docker 意外停止,重新快速启动措施

    1. 我们要重启这个镜像,需要知道这个镜像ID,类似这个: 7079ff99e10ac326726a364348853c0e508cad8ce00ae970f3c800f172a40252 那么你可以 ...

  2. vue2 枚举类型转换

    vue2页面上要把数字0,1,2...之类的数值转换成对应的枚举文本,解决如下: 方案一: 如果是是否的问题,直接: {{enable == 1 ? '是' : '否'}} 即可. 方案二: 通过定义 ...

  3. 【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息

    实验原理: STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座上.本 实验将Micro SD卡插入TF卡座上即可.SD卡中可存放液晶显示模块需要显示的图片.字 库等资 ...

  4. Navicat 提示 Access violation at address ***(如004ECCF4) in module ‘navicat.exe’. Read of address ***(如00000048)

    Navicat 提示 Access violation at address ***(如004ECCF4) in module ‘navicat.exe’. Read of address ***(如 ...

  5. 微信jssdk常见错误及解决方法

    调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息.以下为常见错误及解决方法: invalid url domain当前页面所在域名与使用 ...

  6. rabbitmq web管理

    celery突然连接不上rabbitmq server,结果找半天发现是rabbitmq卡的不行... rabbitmq 设置web管理,添加用户 rabbitmqctl list_queues | ...

  7. linux下从一台服务器复制文件或文件夹到本地

    1.从服务器复制文件到本地:scp root@×××.×××.×××.×××:/data/test.txt /home/myfile/ root@×××.×××.×××.×××   root是目标服务 ...

  8. 【OSPF】防环机制详解

    我们在提到OSPF的时候,时常喜欢说的一句话就是,OSPF能够计算出无环的路由,那么OSPF究竟是如何规避路由环路的呢?OSPF与距离矢量路由协议不同,运行OSPF的路由器之间交互并不是路由信息,而是 ...

  9. sprintf的Bug

    ]; sprintf(buffer,,,); 这样一般不崩溃,但是10次,有那么一次会崩溃 我只能说后面改成 0.0就可以了...

  10. SQL server 在附加数据库后,数据库总是变成了只读

    1.  要把数据库文件的属性改了 右键点击两个文件的属性--安全--添加--立即查找--找everyone这个用户把他的权限都勾上 确定再附加就OK. 2. 在数据库管理器中对数据库点右键属性,然后切 ...