在Tomcat 7中使用NIO Http连接器-它将我限制为一个连接?
我想做一个服务,它基本上保持一个连接,直到建立第二个连接,告诉它停止保持第一个连接 使用具有所有默认设置的NIO Http连接器(在Tomcat和连接器中) 我使用一个线程(很像tomcat aio文档中的“messageSender”类)来保存第一个响应,并每5秒写入/刷新一个字符。这是工作正常-线程持有它和释放它的线索。唯一的问题是,在我关闭第一个连接之前,服务('event'方法)不会得到第二个调用(对于第二个连接的'begin'事件) 重复一下,发生的情况如下: 连接1->tomcat创建线程“http-nio-8081-exec-2”,该线程调用myService.event(事件) event给出对“myDaemonThread”的响应(该线程保存引用并每隔5秒写入响应)。退出方法 “myDaemonThread”使用“synchronized(this){this.wait(5000);}”作为等待(最初使用Thread.sleep(),但为了使其工作,我改为wait()) 连接2->已启动,但没有线程调用myService.event 连接1在浏览器中停止,tomcat创建线程“http-nio-8081-exec-4”,该线程调用myService.event(event.END)。退出方法 tomcat(创建??现在或更早,不知道)线程“http-nio-8081-exec-6”调用连接2的myService.event(event.BEGIN) 。。。。。。其余的都不重要 所以这似乎违背了使用NIO的全部目的。。。有人知道为什么会这样吗?可能的原因在Tomcat 7中使用NIO Http连接器-它将我限制为一个连接?,tomcat,nio,Tomcat,Nio,我想做一个服务,它基本上保持一个连接,直到建立第二个连接,告诉它停止保持第一个连接 使用具有所有默认设置的NIO Http连接器(在Tomcat和连接器中) 我使用一个线程(很像tomcat aio文档中的“messageSender”类)来保存第一个响应,并每5秒写入/刷新一个字符。这是工作正常-线程持有它和释放它的线索。唯一的问题是,在我关闭第一个连接之前,服务('event'方法)不会得到第二个调用(对于第二个连接的'begin'事件) 重复一下,发生的情况如下: 连接1->tomcat创
将垃圾参数添加到请求中为什么?如果您正在启动一个线程,然后只是等待它完成,为什么不运行线程运行的方法呢?首先,为什么要保持连接打开5秒钟?如果没有看到一些实际的代码,就不可能确定你做错了什么。我花了这么长的时间来描述到底发生了什么,因为你不需要代码来解决这个问题。这是(我怀疑)一个基于Tomcat/Comet(设置)的问题——不是基于代码的,尽管我想我应该这么说。只是偶然发现了这篇文章,无法详细研究ti,但在我的脑海深处,有人说这可能是http协议定义的潜在限制……我投了赞成票。我一直在努力让它在我的应用程序中工作。即使在我启用NIO之后,使用服务流的所谓Comet也不起作用,我很高兴我找到了这个页面。我明天会尝试这个,将垃圾参数传递给每个请求。我在其他地方也看到过。就像iPad上的Safari一样,它会自动缓存相同的请求。甚至外向。在请求中放入随机垃圾会有所帮助。我不认为这可能是客户端浏览器排队请求。至少在本例中,它不会进行缓存,因为第二个连接已经建立。事实上,浏览器排队很有意义。