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

最近涉及到用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 类或接口的非限定名称。(字符串)
portNamewsdl: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

评论 1 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

black-ant

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值