如何知道Spring Boot应用程序是否使用nio?

问题描述 投票:0回答:1

如果我们搜索我们的 Spring Boot 2.0.3 项目源代码(所有文件),没有提到 nio。

根据 spring 文档,nio 默认是禁用的,所以我们希望不使用 nio。

但是,当应用程序启动时,它会显示“restartedMain org.apache.coyote.http11.Http11NioProtocol [] => 初始化 ProtocolHandler ["http-nio-8080"]"

这是否意味着我们正在使用nio? 如果是这样,文档默认不使用它是否错误?

2024-10-23T09:10:56,001Z INFO  restartedMain o.s.b.web.embedded.tomcat.TomcatWebServer [] => Tomcat initialized with port(s): 8080 (http)
2024-10-23T09:10:56,031Z INFO  restartedMain org.apache.coyote.http11.Http11NioProtocol [] => Initializing ProtocolHandler ["http-nio-8080"]
2024-10-23T09:10:56,052Z INFO  restartedMain org.apache.catalina.core.StandardService [] => Starting service [Tomcat]
2024-10-23T09:10:56,052Z INFO  restartedMain org.apache.catalina.core.StandardEngine [] => Starting Servlet Engine: Apache Tomcat/8.5.31
spring-boot nio tomcat8
1个回答
0
投票

Http11NioProtocol
是 Tomcat 的非阻塞 IO (NIO) 连接器。

Tomcat 8 通常使用 http-nio 协议,除非专门配置为使用阻塞 I/O (BIO) 协议 (Http11Protocol)。因此,即使您没有在项目中显式配置 NIO,Tomcat 本身也会默认使用它。

尝试:

server.tomcat.protocol=org.apache.coyote.http11.Http11Protocol

如果您想放弃 NIO,这将强制使用阻塞 IO 连接器。

© www.soinside.com 2019 - 2024. All rights reserved.