我正在使用GWT RCP在GWT中开发Web应用程序构建。应用程序专为即时消息传递而设计,我使用redis消息传递。
当在servlete上等待消息并且我在该频道上订阅时,所有内容都按计划运行。虽然当服务器上等待请求的数量超过5时,第6个请求不会开始处理并等待,直到处理完之前的请求之一。我不确定问题是否在redis中(我正在使用jedis库)因此我尝试直接调用currentThread上的sleep,但它的行为相同。
public class TestServiceImpl extends RemoteServiceServlet implements
TestService {
@Override
public void syncWait(Date time) {
try{
Thread.currentThread().sleep(10000l);
}catch (Exception e) {
getLogger().error("sleep error", e);
}
return ;
}
}
这不仅仅是关于一个特定的servlet,当打开5个请求时,第6个甚至不加载静态内容。我试着用jety,glassfish和tomcat。
我还尝试更改glassfish中threadpool的设置,maxthread-count我在200上设置但是没有用。
请问您如何增加处理会话和每台服务器的请求数量?
答案 0 :(得分:0)
为此你真的想要使用servlet Comet实现之一和NIO连接器。我对Glassfish或Jetty并不熟悉,但在Tomcat上你可以结合使用APR(参见http://tomcat.apache.org/tomcat-6.0-doc/apr.html)和高级IO(参见http://tomcat.apache.org/tomcat-6.0-doc/aio.html)来做你想做的事。
请注意,使用Tomcat的高级IO比标准的Servlet 2.5 api更复杂(并且记录不足)。
Resin,Tomcat 7和Glassfish(我相信)支持Servlet 3.0规范,它也提供类似功能的支持:你可能想看一下。