当前位置: 首页 > 知识库问答 >
问题:

基于从Java中的另一个异步web服务接收的响应响应web服务

郗欣嘉
2023-03-14

我有一个要求,其中,作为Web服务[Java]的一部分,我将作业的详细信息输入数据库,数据库由Windows服务[C#]异步处理,并对Javaweb服务通知作业的状态。

情景:

  • 客户端对JavaWeb服务进行同步Restful调用。
  • JavaWeb Service将作业详细信息输入数据库(类似于进行异步调用),并等待Windows Service的响应(这是对JavaWeb Service的新HTTP请求)。
  • 基于收到的响应,JavaWeb Service需要响应返回到正在等待同步调用的客户端。

我们如何在Java网络服务中实现这一点?

编辑:我已经使用Jersey框架实现了restful web服务,并且正在Jetty服务器上运行。

共有1个答案

潘飞英
2023-03-14

根据您使用的泽西和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: