2.20. 对 CompletionStage 类型的支持


JAX-RS 2.1 规范支持通过返回 CompletionStage 而非 @Suspended 注释 来声明异步资源方法。

每当资源方法返回它订阅的 CompletionStage 时,请求都会暂停。只有在 CompletionStage 类型为 CompletionStage 类型时才会恢复请求:

  • 解析为值,然后被视为方法的返回值。
  • 异常被视为错误情况,处理异常的方式就像资源方法抛出一样。

以下是使用 CompletionStage 的异步处理示例:

public class SimpleResource
{

   @GET
   @Path("basic")
   @Produces("text/plain")
   public CompletionStage<Response> getBasic() throws Exception
   {
      final CompletableFuture<Response> response = new CompletableFuture<>();
      Thread t = new Thread()
      {
         @Override
         public void run()
         {
            try
            {
               Response jaxrs = Response.ok("basic").type(MediaType.TEXT_PLAIN).build();
               response.complete(jaxrs);
            }
            catch (Exception e)
            {
               response.completeExceptionally(e);
            }
         }
      };
      t.start();
      return response;
   }
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.