我有一个要求,其中,作为Web服务[Java]的一部分,我将作业的详细信息输入数据库,数据库由Windows服务[C#]异步处理,并对Javaweb服务通知作业的状态。
情景:
我们如何在Java网络服务中实现这一点?
编辑:我已经使用Jersey框架实现了restful web服务,并且正在Jetty服务器上运行。
根据您使用的泽西和Jetty版本,您可以使用Servlet 3.0中添加的异步处理请求支持。(基于Jetty维基百科页面,我相信你至少需要Jetty 8. x。基于这篇文章,我相信你至少需要泽西/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();
}
}
在您的情况下,您将以这样一种方式存储AsyncContent
对象,即,一旦您收到来自其他Web服务的响应,您可以通过调用恢复
来完成请求,并且使用您想要发送给客户端的任何响应。
另见:
异步JAX-RS的目的是什么
JAX-RS和长轮询
有人知道netty服务器处理程序取消从web服务器接收数据的最佳方法吗?我有一个服务器处理程序,它将HttpRequests代理到web服务器。但是,当请求客户端取消请求时,我希望在不关闭服务器处理程序和web服务器之间的连接的情况下停止从web服务器接收服务器通道上的数据。 有谁知道我怎么才能做到这一点。你的答复将不胜感激。 非常感谢。
我在 apache Camel 中构建了一个 Web 服务,作为 karaf 上的捆绑包运行,它接受请求并将信息保存在数据库中。 之后,另一个包获取这个插入的记录,修改数据并将其保存回数据库。 现在我需要原始请求的响应来包含修改后的数据,因此除了如下所示的 Web 服务的路由之外 我还需要一个这样的 有什么办法可以做到这一点?
如何在MULE ESB平台中获取Web服务的POST请求的响应时间?
我目前正在开发一个springboot服务,它需要能够修改从自己发出的各种web服务调用接收到的传入响应体。 我搜索了很多地方,可以找到关于servlet过滤器、spring拦截器等的信息,但它们都位于服务和它的调用客户机之间。 但我正在寻找一个组件,它可以坐在这个服务和它调用的其他服务之间。我能找到的最接近的一个是Spring的ClientHttpRequestInterceptor,但它似乎没
我试图开发一个web应用程序,使用WCF向web服务提交一个简单的登录请求,但我不断得到“响应消息的内容类型text/plain不匹配”的错误,尽管web服务似乎返回了有效的XML。 我已经回顾了几十个类似的S.O.关于这一错误的帖子,并排除了更常见的可能性: 在响应中可以看到,返回的不是错误页(如本文所述)。 我似乎没有一个绑定的不匹配问题(如在这里讨论的)。我的应用程序和web服务都使用SOA
我在做一个应用程序,把一些数据存储在数据库中,然后它再检索它。在服务器端,我使用的是PHP,在客户端,我有一个获取输入并将其传递给PHP文件的文件。 另外,我有这个JsonParser: