当前位置: 首页 > 知识库问答 >
问题:

泽西岛异步响应和响应

羊慈
2023-03-14

我想返回一个临时重定向,使用AsyncACK。

下面的“工作”(因为没有错误),但似乎不是异步的(它一次处理一个请求)。

    @GET
    public Response doLoad(@Suspended final AsyncResponse asyncResponse,
            @QueryParam("path") String path)  {

        Response response = veryExpensiveOperation(path);
        asyncResponse.resume(response);
        return response;
    }

    private Response veryExpensiveOperation(String path)  {
        // veryExpensiveOperation
    }

这应该工作吗?如果我明确需要像https://jersey.github.io/documentation/latest/async.html#d0e9895一样启动一个新线程,返回响应是什么样子的?

共有1个答案

董联
2023-03-14

我不认为您正在正确使用异步上下文。从我所看到的,您正在阻塞请求处理线程。你不应该在vertx中阻止这个线程。如何做到如下:

    @GET
    public void doLoad(@Suspended final AsyncResponse asyncResponse,
            @QueryParam("path") String path)  {

        CompletableFuture<Response> future = veryExpensiveOperation(path);
        future.thenAccept(resp -> asyncResponse.resume(resp));
    }    

    private CompletableFuture<Response> veryExpensiveOperation(String path){
        CompletableFuture<Response> completableFuture = new CompletableFuture<>();

        new Thread(() -> {
            //do expensive stuff here
            completableFuture.complete(Response.ok().entity("Completed").build());
        }).start();

        return completableFuture;
    }
 类似资料:
  • 我试图理解异步响应在Jersey上的工作方式。我阅读了新泽西文档(https://jersey.java.net/documentation/latest/async.html)的第10章,但它对我的问题没有帮助。这里关于stackoverflow的研究也没有得出令人满意的答案(这一点我可以理解)。 我试图做的与本文中的一个问题类似(使用http状态202进行异步操作)。我想使用HTML表单文档将

  • 问题内容: 我有一个Jersey REST API,并且正在使用来处理授权。我还在所有端点上使用,以便我的API可以处理数千个并发请求。 我的授权过滤器命中了一个远程服务,但是当运行过滤器时,Jersey尚未将当前线程添加到它的内部,因此我完全失去了异步的好处。 我可以告诉Jersey我希望这是异步的吗? 这是一个示例资源: 更新 刚刚收到泽西队球员的回音,从2.7开始,这是不可能的。只有资源方法

  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?

  • 更新刚刚听到从泽西的家伙,这是不可能的2.7。只有资源方法本身被异步调用,而不是筛选器。仍然欢迎任何关于继续进行的建议。

  • 我在创建用于单元测试的模拟响应对象时遇到了问题。我使用< code > org . glassfish . jersey . core . jersey-client 版本2.3.1来实现我的RESTful客户端,使用< code>mockito版本1.9.5来帮助我处理模拟对象。下面是我的测试代码: 执行 时会出现此问题。下面是该方法的代码: 请注意,我在嘲笑this.simpleClient。

  • 问题内容: 我的问题是:为什么在创建部署在某种servlet容器(如jetty或tomcat)上的应用程序时执行JavaSE应用程序和ServletModule时需要创建AbstractModule?它们之间有什么区别? 我需要将Jersey与Guice集成在一起。是否需要注册Guice的存在才能以某种方式使用它?我是否可以仅启用注入并在我想要的任何地方(常规类,过滤器,处理程序,服务,DAO等)