首页 文章

Tomcat:使用NIO虽然没有配置?

提问于
浏览
1

根据以下文章:http://java.dzone.com/articles/understanding-tomcat-nio,了解Tomcat实例是否使用NIO(而不是BIO)的方法是查找:

INFO: Initializing ProtocolHandler ["http-nio-8080"]

在我的Tomcat服务器上,我有:

grep "Initializing ProtocolHandler" /opt/tomcat/logs/*
/opt/tomcat/logs/catalina.2015-02-23.log:23-Feb-2015 15:20:00.627 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
/opt/tomcat/logs/catalina.2015-02-23.log:23-Feb-2015 15:20:00.665 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]

但是我的server.xml不包含任何告诉它使用NIO的内容,我的连接器如下所示:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

换句话说,我没有将协议设置为使用org.apache.coyote.http11.Http11NioProtocol,如上文所述 .

服务器似乎还在使用NIO怎么样?

  • 附加信息

  • Tomcat版本:8.0.15.0

  • JVM版本:1.8.0_25-b17

  • 正在使用Spring MVC .

Thx提前

1 回答

  • 3

    但是我的server.xml确实包含任何告诉它使用NIO的东西,

    NIO是Tomcat 8的默认HTTP和AJP连接器实现 .

    默认的HTTP和AJP连接器实现已从Java阻塞IO实现(BIO)切换到Java非阻塞IO实现(NIO) . 仍然可以使用BIO,但使用非阻塞IO的Servlet 3.1和WebSocket 1.0功能将使用阻塞IO,这可能会导致意外的应用程序行为 .

    http://tomcat.apache.org/migration-8.html#Default_connector_implementation

相关问题