我想将servlet 3.0异步支持与spring MVC集成起来。类似于:
@RequestMapping("/chat")
@WebServlet(name="myServlet", asyncSupported=true)
public String getMessage(String userName) {
......
}有可能吗?
发布于 2010-10-30 01:25:28
不是那么快,要实现好的长轮询并不容易。您提到的方法运行良好,但存在严重的“线程匮乏”问题。
每次长轮询将占用一个线程,如果您有1000个并发用户,您将需要1000个线程来服务长轮询请求(大多数时间都会更新客户端浏览器上的服务器端状态)
Jetty6有一个continue模式,它巧妙地释放了长轮询请求的线程,供实际应用逻辑使用。
发布于 2010-08-27 17:13:17
在Spring Framework3.x中尚未实现。请参阅https://jira.springframework.org/browse/SPR-5587和https://jira.springsource.org/browse/SPR-8517
如果您需要的是comet支持(长轮询ajax),那么“可以”尝试一下CometD (http://cometd.org/documentation/cometd-java/server/services/integration-spring)。但我警告你,我已经放弃了它,它只是为了肿胀!(像长轮询这样简单的事情需要几天的配置??!)
我只需要用Spring3实现一些RESTful控制器,并为自己编写长轮询程序。向服务器发出Ajax样式的请求,控制器会将其保持打开状态,直到服务器有新数据要发送到浏览器为止。浏览器发起新的长轮询请求以获得后续事件。为了避免连接超时,只需返回使客户端重复请求的虚拟值。
简单易懂的方法在大多数情况下是最好的解决方案。
发布于 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太大、太慢、太难开发。
https://stackoverflow.com/questions/3345302
复制相似问题