Java 回复后立即请求?
我对以下场景有点迷茫: 我的Web服务使用表单数据处理POST请求。我必须回复200 OK,否则发件人会认为请求失败 在回答200之后,我想立即用我刚刚收到的一些数据调用远程主机上的另一个Web服务 我的Web服务使用带有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堆
@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);
}
}
您可以在上查看更多说明,谢谢!我甚至在读这一章,但完全忽略了这一部分。刚试过。这可能就是我所需要的。