Jong Kim
2017-11-22 14:24:14 UTC
Tomcat version: 8.0.47
OS: SUSE Linux Enterprise Server 12 (SP3)
I have a Tomcat installation where server.xml defines two connectors - NIO2 connector on port 8443 and AJP connector on port 8009 - The two connector definitions are shown below.
<Connector SSLEnabled="true" URIEncoding="UTF-8" clientAuth="false" keystoreFile="/mycerts/keystore" keystorePass="xxx" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" scheme="https" secure="true" sslProtocol="TLS" acceptCount="0" sslEnabledProtocols="TLSv1.2" ciphers="HIGH:!3DES:!EXP:!aNULL:!MD5"/>
<Connector URIEncoding="UTF-8" maxThreads="200" port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false"/>
We disable non-secure http access on port 8080 by removing the connector definition.
However, when we start and run this Tomcat, it creates three protocol handler rather than expected two (as shown below).
17-Nov-2017 19:13:21.790 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-auto-1-46276"]
17-Nov-2017 19:13:21.796 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-8443"]
17-Nov-2017 19:13:21.797 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
And then, when I look at the connector thread pool, it creates a set of threads with this name pattern - "http-nio-auto-1-exec-<number>" - in addition to the two thread pools used by NIO2 and AJP connectors.
So, the question - What is this so-called "auto" connector for? And why is Tomcat creating it when I did NOT configure the system to create a non-secure http connector? Also, the listening port number used by this "auto" connector seems random (46276 in this case) and changes from run to run, so how could it be ever used for anything?
Thanks in advance for help
/Jong
OS: SUSE Linux Enterprise Server 12 (SP3)
I have a Tomcat installation where server.xml defines two connectors - NIO2 connector on port 8443 and AJP connector on port 8009 - The two connector definitions are shown below.
<Connector SSLEnabled="true" URIEncoding="UTF-8" clientAuth="false" keystoreFile="/mycerts/keystore" keystorePass="xxx" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" scheme="https" secure="true" sslProtocol="TLS" acceptCount="0" sslEnabledProtocols="TLSv1.2" ciphers="HIGH:!3DES:!EXP:!aNULL:!MD5"/>
<Connector URIEncoding="UTF-8" maxThreads="200" port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false"/>
We disable non-secure http access on port 8080 by removing the connector definition.
However, when we start and run this Tomcat, it creates three protocol handler rather than expected two (as shown below).
17-Nov-2017 19:13:21.790 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-auto-1-46276"]
17-Nov-2017 19:13:21.796 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-8443"]
17-Nov-2017 19:13:21.797 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
And then, when I look at the connector thread pool, it creates a set of threads with this name pattern - "http-nio-auto-1-exec-<number>" - in addition to the two thread pools used by NIO2 and AJP connectors.
So, the question - What is this so-called "auto" connector for? And why is Tomcat creating it when I did NOT configure the system to create a non-secure http connector? Also, the listening port number used by this "auto" connector seems random (46276 in this case) and changes from run to run, so how could it be ever used for anything?
Thanks in advance for help
/Jong