使用反向 ajax 对同一客户端进行多个 ajax 调用

Posted

技术标签:

【中文标题】使用反向 ajax 对同一客户端进行多个 ajax 调用【英文标题】:Multiple ajax calls for the same client with reverse ajax 【发布时间】:2012-09-16 10:54:18 【问题描述】:

我正在通过 Oracle Weblogic 使用 JAVA/Sping MVC/Jquery 开发一个非常大的应用程序,该应用程序有几个称为概览的屏幕,可以对服务器进行多次 ajax 调用。所有这些调用都应该并行进行,因为它们向最终客户端提供了不同类型信息的摘要。然后,用户可以从此屏幕深入了解信息的详细信息。

由于我有很多电话,我不断观察服务器的行为,建议在服务器上排队请求(在日志中,所有事情都是按顺序发生的,并且当特定类型的信息需要更多时间来处理时另一个只有在结束时才解决)。

我想我理解为什么会发生这种情况,但是我也想在服务器中并行处理请求。我正在考虑两种可能的选择:

更改weblogic上的一些配置(不知道是哪一个...) 实现反向ajax

我更喜欢第二个,但是我的服务器绑定到 servlet 2.5 (weblogic 10.3.6),所以我无法利用 servlet 3.0 中的新异步 API

恕我直言,我正在仔细观察设计非常简洁的氛围。我也对其他技术建议持开放态度。 问题是我怎么能在大气中做这样的事情。我想要的是向服务器发送请求并让它们并行处理。一旦他们准备好,我想收到答案并关闭底层连接。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

查看 DWR:http://directwebremoting.org/dwr/index.html

这似乎是我见过的最好的 AJAX/java 解决方案。它可以很好地对请求进行批处理,这对 AJAX 很重要。

但是,默认情况下,AJAX 应该是异步处理的,因此您的实现可能会发生其他事情。

也许这会有所帮助:Parallel asynchronous Ajax requests using jQuery

另外,请注意对服务器的最大并发请求数有限制:How many concurrent AJAX (XmlHttpRequest) requests are allowed in popular browsers?

【讨论】:

您好,首先 tnks 为您解答。我认为问题在于 weblogic 只为每个用户(会话)分配一个线程,并且由于我从同一个用户发出多个请求,因此它们同时离开了broser,但在 weblogic 中被排队 关于 dwr 我已经研究过该解决方案,但我认为就性能环境而言是唯一利用 weblogic 中的本机支持的解决方案

以上是关于使用反向 ajax 对同一客户端进行多个 ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery对ajax的封装部分详解和案例

反向Ajax,实现服务器向客户端推送消息

使用$.when()解决AJAX异步难题之:多个ajax操作进行逻辑与(and)

Comet反向ajax技术实现客服聊天系统

反向Ajax之Socket.io

使用 AJAX 在同一页面中的多个日期选择器