首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring MVC 3中使用Servlet 3 @WebServlet & async?

如何在Spring MVC 3中使用Servlet 3 @WebServlet & async?
EN

Stack Overflow用户
提问于 2010-07-27 23:35:26
回答 5查看 12.3K关注 0票数 12

我想将servlet 3.0异步支持与spring MVC集成起来。类似于:

代码语言:javascript
复制
@RequestMapping("/chat")
@WebServlet(name="myServlet", asyncSupported=true)
public String getMessage(String userName) {
      ......
}

有可能吗?

EN

回答 5

Stack Overflow用户

发布于 2010-10-30 01:25:28

不是那么快,要实现好的长轮询并不容易。您提到的方法运行良好,但存在严重的“线程匮乏”问题。

每次长轮询将占用一个线程,如果您有1000个并发用户,您将需要1000个线程来服务长轮询请求(大多数时间都会更新客户端浏览器上的服务器端状态)

Jetty6有一个continue模式,它巧妙地释放了长轮询请求的线程,供实际应用逻辑使用。

票数 4
EN

Stack Overflow用户

发布于 2010-08-27 17:13:17

在Spring Framework3.x中尚未实现。请参阅https://jira.springframework.org/browse/SPR-5587https://jira.springsource.org/browse/SPR-8517

如果您需要的是comet支持(长轮询ajax),那么“可以”尝试一下CometD (http://cometd.org/documentation/cometd-java/server/services/integration-spring)。但我警告你,我已经放弃了它,它只是为了肿胀!(像长轮询这样简单的事情需要几天的配置??!)

我只需要用Spring3实现一些RESTful控制器,并为自己编写长轮询程序。向服务器发出Ajax样式的请求,控制器会将其保持打开状态,直到服务器有新数据要发送到浏览器为止。浏览器发起新的长轮询请求以获得后续事件。为了避免连接超时,只需返回使客户端重复请求的虚拟值。

简单易懂的方法在大多数情况下是最好的解决方案。

票数 3
EN

Stack Overflow用户

发布于 2011-12-28 19:08:20

这个问题很老了,但仍然没有答案。作者希望在Spring MVC中支持异步,但解决方案仍然没有给出。

正如之前的回答所述,异步支持请求已提交给spring社区bugtracker,并将在Spring 3.1.0中实现。这是最近发布的,但是根据发布说明,“Servlet3.0支持”计划在版本3.2.0:https://jira.springsource.org/browse/SEC-1685中实现。

我的应用程序需要高效的COMET。我当前的实现基于这个示例:http://code.google.com/p/jquery-stream/wiki/EchoExample,但我有兴趣将其迁移到Spring MVC控制器。现在,我刚刚改进了示例,并手动注入了spring beans,以允许与应用程序的其余部分进行通信。我遇到了一些问题,在我的问题中描述:Tomcat 7 Async Processing failing - only one request processed simultanously。就目前而言,它运行得很好。

我已经找到了使用jboss解决方案的示例:http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html/Asynchronous_HTTP_Request_Processing.html,但对我来说,使用jboss并不是解决方案。JBoss太大、太慢、太难开发。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3345302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档