【问题标题】:Handling Asynchronous One Way Service Pairs in Web Layer在 Web 层处理异步单向服务对
【发布时间】:2013-02-01 03:49:24
【问题描述】:

我有一个需要在 Web 层处理的异步 Web 服务对。我编写了一个向服务发送查询请求的“请求”服务客户端。客户端收到一个 http '200' 表示服务器已成功接收到消息。

然后我有一个单独的响应侦听器,它是一个接收响应的 Camel/CXF Web 服务。我正在使用 WS-Addressing 消息 ID 来关联请求和响应。

我现在的任务是在 Web 层处理这个问题。我希望用户填写表单,单击提交,然后调用 Web 服务。然后我的 CXF Web 服务侦听器会收到响应,查看 Message ID 并将其返回给 Web 层。

使用同步服务,这非常简单。但是,对于异步 Web 服务对,我不知道从哪里开始。我可以使用轮询方法调用 Web 服务,将消息 ID 写入地图,然后轮询地图并等待 Web 侦听器将响应写入地图。不过,我认为有框架支持这一点。

我正在研究 Spring MVC 和 JQuery,因为我认为这是正确的方向,但是在为初学者寻找好的资源时遇到了问题。

有人有什么想法吗?

谢谢, 尤格什

【问题讨论】:

    标签: java jquery spring-mvc cxf apache-camel


    【解决方案1】:

    一种方法是编写一个调用出站 Web 服务的 Spring MVC 控制器,并等待接收到入站 Web 服务(即:响应)。您可以通过在等待入站服务时暂停线程并在之后恢复线程来实现此目的。发生这种情况时,您可以在网站上显示某种微调器。所以从浏览器的角度来看,它仍然看起来像一个请求和响应。

    但是,根据您的网站流量,这可能是一种低效的方法,因为在您等待入站服务时将使用一个 Web 容器线程。如果您的网站流量很大 - 并且入站和出站请求之间的延迟很长,您可能会很快用完可用线程并导致网站崩溃。

    【讨论】:

    • 您好杰瑞,感谢您的反馈。我认为这种方法会奏效,但我希望强大的 AJAX 框架在这方面可能有更有效的方法。
    • 是的,上面的方法应该包含 Ajax。您暂停服务器端线程,同时在浏览器上显示一个微调器。浏览器和服务器之间的通信应该以异步方式完成
    • 谢谢格里。我会试一试并报告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多