Java 回复后立即请求?

Java 回复后立即请求?,java,jersey,jax-rs,jersey-2.0,jersey-client,Java,Jersey,Jax Rs,Jersey 2.0,Jersey Client,我对以下场景有点迷茫: 我的Web服务使用表单数据处理POST请求。我必须回复200 OK,否则发件人会认为请求失败 在回答200之后,我想立即用我刚刚收到的一些数据调用远程主机上的另一个Web服务 我的Web服务使用带有@GET注释的POST请求。这样我就可以读取所有表单数据。为了调用另一个Web服务,我使用了Jersey客户端API。那也行 我就是不知道如何从一个电话切换到另一个电话。一切都是用Jersey 2编程的,并部署在Tomcat中,因此没有真正的应用服务器。没有完整的JavaEE堆

我对以下场景有点迷茫:

我的Web服务使用表单数据处理POST请求。我必须回复200 OK,否则发件人会认为请求失败

在回答200之后,我想立即用我刚刚收到的一些数据调用远程主机上的另一个Web服务

我的Web服务使用带有
@GET
注释的POST请求。这样我就可以读取所有表单数据。为了调用另一个Web服务,我使用了Jersey客户端API。那也行

我就是不知道如何从一个电话切换到另一个电话。一切都是用Jersey 2编程的,并部署在Tomcat中,因此没有真正的应用服务器。没有完整的JavaEE堆栈可用

我是不是错过了什么?我是否需要实现自定义事件循环或某些message broker?

不确定是否有任何“标准”方法来处理此问题,但有一种方法我们可以注册到

完成回调:

接收请求处理完成事件的请求处理回调

完成回调在整个请求处理结束时调用,即在处理请求的响应并将其发送回客户端后,或在将未映射的异常或错误传播到容器时调用

AsyncResponse
旨在异步处理请求,但我们可以立即调用
resume
将其视为同步处理。一个简单的例子如下

@Path("/callback")
public class AsyncCallback {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public void postWithAsync(@Suspended AsyncResponse asyncResponse,  
                                         SomeObject object) {

        asyncResponse.register(new CompletionCallback() {
            @Override
            public void onComplete(Throwable error) {
                if (error == null) {
                    System.out.println("Processing new Request");
                } else {
                    System.out.println("Exception in Request handling");
                }
            }
        });
        Response response = Response.ok("Success").build();
        // Carry on like nothing happened
        asyncResponse.resume(response);
    }
}

您可以在

上查看更多说明,谢谢!我甚至在读这一章,但完全忽略了这一部分。刚试过。这可能就是我所需要的。