我正在使用GWT RCP开发GWT中的Web应用程序构建。应用程序专为使用redis消息传递的即时消息传递而设计。请求servlet在队列中等待
在服务器上等待消息时,我在redis上订阅该频道时,所有内容都按计划运行。虽然当服务器上等待请求的数量大于5时,第6个请求不会开始处理,而是一直处于等待状态,直到处理完其中一个请求。我不确定这个问题是否出现在redis中(我正在使用jedis库),因此我试图直接调用currentThread来休眠,但它的行为相同。
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个请求被打开时,6th甚至不会加载静态内容。我在jety,glassfish和tomcat上试过。
我也尝试更改glassfish中的线程池设置,我在200上设置了maxthread-count,但它没有工作。
请问关于如何增加处理的会话数和每个服务器的请求数?
感谢您的回答,但我不确定是否需要Comet和NIO。彗星是为了处理一致的请求。我不需要处理并发请求,我只是在服务器打开5个连接时开始处理请求时出现问题。这是彗星解决方案吗? – LuiGi 2011-05-12 05:23:00
通常在Servlet中的线程上调用'sleep'是一个坏主意:如果你有多个请求空闲,那么你会需要Comet和NIO。就超过5个连接而言,您必须在某处存在配置缺陷,因为您应该可以处理超过5个连接。 – Femi 2011-05-12 05:47:32