[英]Responding to a web-service based on response received from another asynchronous web-service in Java
我有一个要求,在其中,作为Web服务[Java]的一部分,我将作业的详细信息输入数据库中,该工作由Windows服务[C#]异步处理,并对Java Web服务进行HTTP Restful调用以通知状态工作。
场景:
我们如何在Java Web Service中实现这一目标?
编辑:我已经使用Jersey框架实现了宁静的Web服务,并且在Jetty服务器上运行。
根据所使用的Jersey和Jetty版本,您可以使用该支持异步处理 Servlet 3.0中添加的请求 。 (基于Jetty Wikipedia页面 ,我相信您至少需要Jetty8.x。根据本文 ,我相信您至少需要Jersey / JAX-RS 2.0。)
Jersey文档和JAX-RS API文档提供了有关如何异步(即在另一个线程中)完成未完成请求的示例:
@Path("/resource")
public class AsyncResource {
@GET
public void asyncGet(@Suspended final AsyncResponse asyncResponse) {
new Thread(new Runnable() {
@Override
public void run() {
String result = veryExpensiveOperation();
asyncResponse.resume(result);
}
private String veryExpensiveOperation() {
// ... very expensive operation
}
}).start();
}
}
在您的情况下,您将以这样一种方式存储AsyncResponse
对象,即,一旦您从其他Web服务接收到响应,就可以通过调用resume
并通过您想要发送给客户端的任何响应来完成请求。
也可以看看:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.