gpt4 book ai didi

tomcat - 在 Tomcat 7 中使用 NIO Http Connector - 它限制我只能连接一个?

转载 作者:行者123 更新时间:2023-11-28 22:00:29 24 4
gpt4 key购买 nike

我想做一个基本上保持连接的服务,直到建立第二个连接告诉它停止保持第一个连接。

使用具有所有默认设置的 NIO Http 连接器(在 Tomcat 和连接器中)。

我使用一个线程(很像 tomcat aio 文档中的“messageSender”类)来保存第一个响应并每 5 秒写入/刷新一个字符。这工作正常 - 线程持有它并在提示时释放它。唯一的问题是,在我关闭第一个连接之前,服务(“事件”方法)不会得到第二次调用(针对第二个连接的“开始”事件)。

所以重复一遍,这就是发生的事情:

连接 1 -> tomcat 创建调用 myService.event(event) 的线程 'http-nio-8081-exec-2';

myService.event 给出对“myDaemonThread”的响应(它保存引用并每 5 秒写入一次响应)。退出方法。

'myDaemonThread' 使用“synchronized (this){ this.wait(5000); }”等待(最初使用 Thread.sleep() 但为了使它工作,我改为 wait() )

连接 2 -> 启动但没有线程调用 myService.event

连接 1 在浏览器中停止,tomcat 创建调用 myService.event(event.END) 的线程“http-nio-8081-exec-4”。退出方法。

tomcat(创建 ?? 现在或更早,无法判断)线程 'http-nio-8081-exec-6' 为连接二调用 myService.event(event.BEGIN)。

……其他的都不重要了。

所以这似乎违背了使用 NIO 的全部目的……有人知道为什么会这样吗?

最佳答案

可能的原因

  1. Tomcat 不允许同一客户端同时发出两个相同的请求
  2. 客户端在“幕后”对相同的请求进行排队。

无论如何,结果是,如果我为第二个请求更改客户端,一切正常。如果我在同一个客户端上的第二个请求中添加垃圾参数,它工作正常。

解决方案

在请求中添加垃圾参数

关于tomcat - 在 Tomcat 7 中使用 NIO Http Connector - 它限制我只能连接一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10346974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com