BT

您是否属于早期采用者或者创新人士?InfoQ正在努力为您设计更多新功能。了解更多

Java API for RESTful Web Services 2.1发布

| 作者 Amit Gupta 关注 0 他的粉丝 ,译者 盖磊 关注 1 他的粉丝 发布于 2017年8月30日. 估计阅读时间: 不到一分钟 | 硅谷人工智能、机器学习、互联网金融、未来移动技术架构 ,尽在QCon上海2017

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