具有CompletableFuture的非阻塞异步Jersey JAX-RS

时间:2018-10-02 10:31:17

标签: java asynchronous jersey jax-rs completable-future

我正在学习泽西岛,我在一本书中看到可以使用CompletableFuture(和CompletitionStage)来以非阻塞IO方式调用您的API。

但是当我用Postman调用API时,我总是得到500。

如果我调试代码,我会看到方法被正确调用。

第一个GET方法是同步的,并且工作正确。 第二和第三次返回错误500

我想念什么?

@Path("/hello")
public class HelloController {

  @GET
  @Path("/first")
  @Produces(MediaType.TEXT_PLAIN)
  public String first() {
    return "It works";
  }

  @GET
  @Path("/second")
  @Produces(MediaType.TEXT_PLAIN)
  public CompletionStage<Response> second() {
    return CompletableFuture.supplyAsync(() -> Response.accepted().entity("Hello!").build());
  }

  @GET
  @Path("/third")
  @Produces(MediaType.TEXT_PLAIN)
  public CompletableFuture<Response> third() {
    return CompletableFuture.supplyAsync(() -> Response.accepted().entity("Hello!").build());
  }
}

0 个答案:

没有答案