这个标题很模糊, 因为不知道该怎么描述这个问题...
1. 使用 eclipse 启动一个 Tomcat , 里面有个 Servlet , 在 doGet 方法里设置个断点.
2. 使用 Chrome 浏览器, 打开多个标签页(比如3个), 都请求这个 Servlet .
3. 在 eclipse debug 里只有一个线程进入到了 doGet 方法里, 被断点阻塞.
btw,修改 tomcat 线程池配置, 设置 -server 参数 后, 都是这种情况.
-------------------------------------------------------------------
另外个现象.
1. 使用 eclipse 启动一个 Tomcat , 里面有个 Servlet , 在 doGet 方法中
response.getOutputStream().close(); Timeunit.second.sleep(10);return;
2. 有另外一段程序, 使用 HttpClient 请求 2 次这个 Servlet .
3. 第一次 get() 可以正常的请求响应, 第二次执行 get() 时, 不会进入到 servlet 的 doGet 方法中.
4. 等到睡眠的 10 秒过去后, 第二个get请求进入 doGet 方法.
------------------------------------------------------------------
请问谁能解释下这两个现象原因吗?
问题补充:Your browser is apparently using the same HTTP connection in different windows. The servlet container uses one thread per HTTP connection, not per HTTP request. You should run two physically different webbrowsers to test this properly. E.g. one Firefox and one Chrome.
reference: http://stackoverflow.com/questions/8011138/java-servlet-concurrent-request
那么....
看来 response.getOutputStream().close(); 并不意味着这次 tcp 请求完整的结束了....
相关推荐
3. NIO2改进:Tomcat 8.5优化了网络I/O模型,支持Java 7的NIO2 API,提供更好的异步处理能力,提高了并发性能。 4. WebSocket升级:8.5版本对WebSocket进行了升级,支持JSR 356规范,增强了WebSocket应用程序的开发...
它基于Servlet和JSP规范,对于处理HTTP请求,Tomcat采用了多线程模型来提升性能。在这个主题中,我们将深入探讨"Tomcat中多线程对于Servlet处理"的相关知识点,特别关注在5.5.17版本中的实现。 1. **Tomcat的线程...
Tomcat使用多线程模型处理并发请求,源码中可以看到Executor(执行器)和ThreadPool(线程池)的概念,它们有助于提高系统效率和资源利用率。 6. **安全与权限控制**: Tomcat支持多种安全机制,如SSL/TLS加密、 ...
5. **多线程处理**:Tomcat利用多线程模型来处理并发请求,确保在高负载下仍能保持良好的性能。 6. **日志和调试**:Tomcat提供了丰富的日志记录功能,帮助开发者调试和监控应用。日志文件通常位于`logs`目录下。 ...
文件“tomcat线程调度.edx”可能是关于Tomcat线程调度的进一步学习资料,可能包含课程或讲解,帮助我们深入理解Tomcat如何管理和调度线程来高效处理请求。 总结来说,Tomcat通过Socket接收HTTP请求,使用NIO或BIO...
2. **线程模型**:Tomcat使用基于连接的线程模型,每个HTTP连接都会创建一个线程来处理请求,这使得它能同时处理多个请求,提高了响应速度。 3. **目录结构**:解压后的`apache-tomcat-7.0.106`文件夹包含多个子...
10. **多线程支持**:Tomcat使用多线程模型来处理并发请求,通过调整`maxThreads`和`minSpareThreads`等配置参数,可以优化服务器对并发请求的响应能力。 11. **性能优化**:除了配置参数调整外,还可以通过开启NIO...
4. **多线程**:Tomcat内部使用多线程模型来处理并发请求,确保服务器在高负载下也能高效运行。 5. **管理工具**:提供管理控制台,便于管理员监控和管理服务器状态,部署和更新应用。 6. **易于扩展**:Tomcat...
开发者可以通过阅读源码了解Tomcat如何处理请求,如何调度线程,以及如何优化内存和网络资源的使用。 至于“工具”标签,`Connector`类的配置和管理通常在Tomcat的`server.xml`配置文件中进行。这里可以设置端口号...
2. **多线程处理**:Tomcat使用线程模型来处理并发请求,提高了服务器的响应速度。 3. **连接器架构**:Tomcat的Coyote连接器负责接收和处理网络请求,提供了对多种协议的支持,如HTTP/1.1。 4. **内存管理**:...
6. **多线程支持**:Tomcat能够有效地处理并发请求,利用多线程模型提高服务器处理能力。 7. **国际化**:支持多种语言,方便全球范围内的开发者和用户使用。 在部署和使用Apache Tomcat时,开发者需要注意以下几点...
在实际的Web应用开发中,Tomcat还会涉及到更多高级特性,如连接池管理、线程模型、会话管理、安全管理等,这些都是保证Web应用高效、稳定运行的关键。理解并掌握这些原理对于开发和优化基于Tomcat的应用至关重要。
3. **线程模型**:Tomcat使用多线程模型处理并发请求,提高了服务器的响应速度和吞吐量。 4. **连接器(Connector)**:Tomcat通过不同的连接器支持多种协议,如HTTP、AJP等,使得与其他Web服务器集成成为可能。 5...
4. **多线程处理**:Tomcat使用高效的线程模型处理多个并发请求,提高了服务性能。 5. **安全管理**:提供了安全的角色为基础的访问控制和其他安全特性,符合Java EE的安全规范。 6. **部署工具**:内置的管理工具如...
7. **多线程模型**:Tomcat采用工作线程模型,通过线程池管理请求处理,确保高效利用系统资源。 8. **配置文件**:主要的配置文件有`server.xml`、`context.xml`、`web.xml`等,它们定义了Tomcat的行为、应用上下文...
三、Tomcat7的线程模型 Tomcat采用NIO(非阻塞I/O)或BIO(阻塞I/O)模型,Coyote连接器负责这部分实现。NIO模型在高并发环境下表现出色,因为它可以处理大量并发连接,而无需为每个连接创建新线程。 四、Tomcat7...
7. **线程模型**: Tomcat使用Executor线程池来处理请求,相关代码在`org.apache.tomcat.util.thread`包下。 8. **WebSocket支持**: 自Tomcat 7起,它开始支持WebSocket协议,相关的处理逻辑在`org.apache....
9. **多线程模型**:Tomcat使用Coyote Connector处理请求,该连接器支持两种线程模型:BIO(阻塞I/O)和NIO(非阻塞I/O),以及更高效的NIO2。NIO模型通常能提供更好的并发性能。 10. **集群与负载均衡**:Tomcat...
2. **线程模型**:了解Tomcat如何使用线程池来处理并发请求,提高性能和可扩展性。 3. **连接器技术**:Coyote连接器的工作原理,包括它如何处理网络I/O,支持Keep-Alive连接等。 4. **容器概念**:Catalina容器如何...
2. **多线程处理**:Tomcat使用多线程模型来处理并发请求,确保服务器能够高效地响应大量用户。 3. **连接器(Connector)**:Tomcat通过不同的连接器(如 Coyote)与外部世界交互,处理HTTP、AJP等协议的连接。 4...