接口框架 : WebService与Jersey RESTful 要点梳理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zzg19950824/article/details/80300501

最近涉及到用Jersey RESTful 的WebService框架,抽空把这段时间的要点整理成了一篇博文。

一 .常用的接口框架

不同于我们知道的Java接口(interface),此处的接口是指我们的远程调用接口。通过调用远程接口达到调用服务或者请求数据等目的。

通常我们的接口调用方式一般有三种:先粗略的过一遍。

1.HttpClient

HttpClient是基于HTTP 协议的客户端连接方式,以此基础完成各种接口交互。
Http是一种无状态协议,所谓无状态就是无上下文,一次请求就是一次,非连续。要知道之前做了什么,需要读取相关的参数才行。
这里写图片描述
注意,这里要和TCP的三次握手区分开!

这里写图片描述

2.WebSocket

同样基于TCP的底层传输,使用websocket,但是要知道 websocket基于 HTTP 协议设计,刚开始仍然是HTTP连接,后面才转换为Socket通道。

这里写图片描述

这里一开始仍然是使用Http,然后确定建立socket通道后才关闭http、
我们粗略的了解一下webscoket的工作原理:

这里写图片描述

注意,webScoket通常是基于Tomcat或者netty等web容器来创建,或者说将socket搭建在容器上面,通过相关的类和提供的jar来控制。

3.webService

这一篇的主要内容就是webService,下面开始详细的说明一下。

二.WebService

1.webService架构

(图片来源:http://dyygusi.iteye.com/blog/2148029
这里写图片描述

webservice就是远程调用技术,也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

名词 全称 解析
XML (Extensible Markup Language)扩展型可标记语言 面向短期的临时数据处理、面向万维网络,是Soap的基础。
Soap (Simple Object Access Protocol)简单对象存取协议 是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL (Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用
UDDI 通用描述、发现与集成服务 一种规范,它主要提供基于Web服务的注册和发现机制,为Web服务提供三个重要的技术支持:①标准、透明、专门描述Web服务的机制;②调用Web服务的机制;③可以访问的Web服务注册中心。

这里写图片描述

以上的流程是基础流程,通常不需要这些,我们会基于框架完成webservice.

贴一下JSR-181的注解。(这是一个实现规范)
来源:https://www.cnblogs.com/zhao-shan/p/5515174.html

@WebService:标注webservice接口
参数 作用
serviceName 对外发布的服务名,指定 Web Service 的服务名称,缺省值为 Java 类的简单名称 + Service。
endpointInterface 服务接口全路径, 指定做SEI(Service EndPoint Interface)服务端点接口
name 此属性的值包含XML Web Service的名称。在默认情况下,该值是实现XML Web Service的类的名称,wsdl:portType 的名称。缺省值为 Java 类或接口的非限定名称。(字符串)
portName wsdl:portName。缺省值为 WebService.name+Port。
targetNamespace 指定你想要的名称空间,认是使用接口实现类的包名的反缀
wsdlLocation 指定用于定义 Web Service 的 WSDL 文档的 Web 地址。Web 地址可以是相对路径或绝对路径。(字符串)
@WebMethod :注释表示作为一项 Web Service 操作的方法,将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。
参数 作用
operationName 指定与此方法相匹配的wsdl:operation 的名称。缺省值为 Java 方法的名称。(字符串)
action 定义此操作的行为。对于 SOAP 绑定,此值将确定 SOAPAction 头的值。缺省值为 Java 方法的名称。(字符串)
exclude 指定是否从 Web Service 中排除某一方法。缺省值为 false。(布尔值)
@Oneway :注释将一个方法表示为只有输入消息而没有输出消息的 Web Service 单向操作。将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类
@WebParam :注释用于定制从单个参数至 Web Service 消息部件和 XML 元素的映射。
参数 作用
name 参数的名称。如果操作是远程过程调用(RPC)类型并且未指定partName 属性,那么这是用于表示参数的 wsdl:part 属性的名称。
partName 定义用于表示此参数的 wsdl:part属性的名称。仅当操作类型为 RPC 或者操作是文档类型并且参数类型为BARE 时才使用此参数。(字符串)
targetNamespace 指定参数的 XML 元素的 XML 名称空间。当属性映射至 XML 元素时,仅应用于文档绑定。缺省值为 Web Service 的 targetNamespace。(字符串)
mode 此值表示此方法的参数流的方向。有效值为 IN、INOUT 和 OUT。(字符串)
header 指定参数是在消息头还是消息体中。缺省值为 false。(布尔值)
@WebResult : 注释用于定制从返回值至 WSDL 部件或 XML 元素的映射。将此注释应用于客户机或服务器服务端点接口(SEI)上的方法,或者应用于 JavaBeans 端点的服务器端点实现类。
参数 作用
name 当返回值列示在 WSDL 文件中并且在连接上的消息中找到该返回值时,指定该返回值的名称。
targetNamespace 指定返回值的 XML 名称空间。
header 指定头中是否附带结果。缺省值为false。(布尔值)
partName 指定 RPC 或 DOCUMENT/BARE 操作的结果的部件名称。缺省值为@WebResult.name。(字符串)

三.jersey restful

未完待续。。。。

总结

1.参考

http://dyygusi.iteye.com/blog/2148029

https://www.cnblogs.com/yimqiqun/p/WebSocket_demo.html

http://www.cnblogs.com/lyy-2016/p/6388663.html

http://www.iteye.com/topic/1135747

https://www.cnblogs.com/zhao-shan/p/5515174.html

猜你喜欢

转载自blog.csdn.net/zzg19950824/article/details/80300501