我有一个需求,作为where的一部分,我将作业的详细信息输入数据库,数据库由Windows C#异步处理,并对Java服务进行HTTP调用,通知作业的状态。
设想情况:
我们如何在Java服务中实现这一点?
编辑:我使用泽西框架实现了restful服务,并在Jetty上运行。
发布于 2014-01-22 22:19:51
根据您正在使用的泽西和Jetty版本,您可能可以使用Servlet3.0中添加的异步处理请求支持。(基于维基百科网页
泽西文件和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
来完成请求,并使用您想要发送到客户端的任何响应。
另请参阅:
https://stackoverflow.com/questions/21294675
复制相似问题