根据以下文章: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?
- 补充资料
提前谢谢
答案 0 :(得分:3)
但是我的server.xml确实包含任何告诉它使用NIO的内容,
NIO是Tomcat 8的默认HTTP和AJP连接器实现。
默认的HTTP和AJP连接器实现已从中切换 Java阻塞IO实现(BIO)到Java非阻塞IO 实施(NIO)。仍然可以使用BIO,但Servlet 3.1和 使用非阻塞IO的WebSocket 1.0功能将使用阻塞 相反,IO可能会导致意外的应用程序行为。
http://tomcat.apache.org/migration-8.html#Default_connector_implementation