BT

你的观点很重要! 快来参与InfoQ调研吧!

Java API for RESTful Web Services 2.1发布

| 作者 Amit Gupta 关注 0 他的粉丝 ,译者 盖磊 关注 1 他的粉丝 发布于 2017年8月30日. 估计阅读时间: 4 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

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使用模式和WebDAVAtom 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)
// 经注册的事件处理器将打印出所接收到的消息。
eventSource.register(System.out::println);
// 向事件流订阅。
eventSource.open();

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT