Java API for RESTful Web Services 2.1发布

2017 年 8 月 29 日

Java API for RESTful Web Services JAX-RS 2.1 于本周发布。据 Oracle 技术小组首席成员及 JSR 规范牵头人 Santiago Pericas-Geertsen 介绍,JAX-RS 2.1 中包括对服务器发送事件(SSE,Server-Sent Event)和 JSON-B 的支持,并改进了对 JSON-P 的支持。该 API 给出了对客户端 API 的响应式扩展,内建了对 Java 8 CompletionStage 的支持,以及对 RxJava 等其它响应式 API 的扩展点。

参考 JAX-RS 2.1 规范,这次发布版本的目标包括用于 POJO 的注解(Annotation)以及可灵活使用的 API,这些 API 提供了对通用 HTTP 使用模式和 WebDAV Atom Publishing Protocol 等应用的高层支持,支持多种 HTTP 实体内容类型、Servlet 容器和 JAX-WS 提供者,并将提供 Web 资源类中对 Java EE 特性和组件的支持。

在 InfoQ 对 Pericas-Geertsen 的采访中,他详细介绍了 SSE:

SSE 资源中注入了一种称为 SseEventSink 的特定类型,提供文本流和事件流。SSE 客户使用 SseEventSource 从连接中读取事件。

该机制使用了长连接和广播,提供的性能要比轮询和资源密集短连接更优。

下面的代码段展示了 SSE 的用法:

服务器端:

复制代码
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public void getMessageQueue(@Context Sse sse, @Context SseEventSink eventSink) {
// 一旦客户订购事件流,就激活资源方法。
// 这意味着事件更像是从不同的场景中发出,例如线程、事件处理器等。
// 资源方法通常实现为存储 eventSink 实例,应用逻辑将在事件应被发送到客户时检索事件。
// 发送事件:
eventSink.send(sse.newEvent("event1"));
}

客户端:

复制代码
WebTarget target = ClientBuilder.newClient().target("server-sent-events");
SseEventSource eventSource = SseEventSource.target(target).build();
// EventSource#register(Consumer<inboundsseevent>)
// 经注册的事件处理器将打印出所接收到的消息。
eventSource.register(System.out::println);
// 向事件流订阅。
eventSource.open();
</inboundsseevent>

Pericas-Geertsen 补充了一下几点:

  • JAX-RS 2.1 完全向后兼容前期版本。
  • 新特性很好地集成了现有的 JAX-RS 概念。例如,仅需在客户调用中注入一个方法调用,就可以将处理方式由同步转向响应式。
  • SSE 依赖基于流 HTTP 的连接,是现有 API 的自然扩展。

鉴于该 API 广泛地使用了注解机制和 Lambda 表达式,因此它支持 Java SE 8 及以后版本所开发的应用。

查看英文原文: Java API for RESTful Web Services 2.1 Released

2017 年 8 月 29 日 19:002287
用户头像

发布了 364 篇内容, 共 88.1 次阅读, 收获喜欢 160 次。

关注

评论

发布
暂无评论
发现更多内容

招谁惹谁了

池建强

写作 分享

【漫画】最近,老王又Get了CDN的新技能

巨侠说

CDN

架构师训练营 - 第3周学习总结

水边

极客大学架构师训练营

组合模式设计窗口组件

缺省模式

利用组合设计模式编写一个界面打印

elfkingw

极客大学架构师训练营

架构师训练营--第三周作业

花花大脸猫

极客大学架构师训练营

操作 Docker 容器 | Docker 系列

AlwaysBeta

Docker 容器

ARTS-week4

王钰淇

ARTS 打卡计划

学习总结

Mr.Monkey

架构师训练营第三周 - 作业

Eric

极客大学架构师训练营

爆料一下:我的读书之道

非著名程序员

读书笔记 程序员 程序人生 读书 读书感悟

2020年6月23日 创建高性能的索引

瑞克与莫迪

组合模式打印窗口组件的树结构

奈学教育<P7架构师>课程大纲(第一阶段)

古月木易

极客大学架构师训练营

厦门科云:构建基于 SpreadJS 的管理会计综合实训平台

Geek_Willie

SpreadJS 管理会计综合实训平台

奈学教育<P7架构师>课程大纲(第一阶段)

奈学教育

极客大学架构师训练营

我在星巴克买了张卡,意外发现一亿客户信息泄露

田晓旭

作业

GalaxyCreater

作业

CDN百科第五讲 | CDN和游戏加速器有什么区别?

巨侠说

CDN

第三周作业

changtai

极客大学架构师训练营

架构师训练营 - 第 3 周学习总结

牛牛

学习 极客大学架构师训练营

架构师培训 -03 设计模式

刘敏

架构师训练营第三周总结

一剑

架构师训练营第三周感悟

张锐

架构师训练营--第三周学习总结

花花大脸猫

极客大学架构师训练营

探究逻辑思维,姚华兴电影读《金字塔原理》提升自我

Geek_116789

夏日一起“奥”!麥吉 machi machi奥利奥风味布蕾奶茶限量上市!

Geek_116789

如何将100个Pod挂载卷的时间缩短10倍?

XSKY融合存储

架构师训练营第三周作业

Linuxer

极客大学架构师训练营

作业

Mr.Monkey

大庆金桥:基于 SpreadJS 开发实现计量器具检定证书的在线生成与打印

Geek_Willie

SpreadJS 计量器具检定 检定证书

Java API for RESTful Web Services 2.1发布-InfoQ