Используя Tomcat server 8.5.4 в качестве автономной службы (tomcat8w.exe), я получаю следующую ошибку: "logs/tomcat8-stderr.YYYY-MM-DD.txt", когда я останавливаю сервер:
org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error reading request, ignored
java.lang.NullPointerException
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSslSupport(NioEndpoint.java:1349)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:775)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:830)
at org.apache.tomcat.util.net.NioEndpoint$Poller.add(NioEndpoint.java:669)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.registerReadInterest(NioEndpoint.java:1264)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1433)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Мой соединитель следующий:
<Connector SSLEnabled="true" clientAuth="false" keyAlias="xxx" keystoreFile="F:\Programs\apache-tomcat-8.5.4\certificate\xxx.keystore" keystorePass="xxx" maxThreads="150" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation" scheme="https" secure="true" sslEnabledProtocols="all" sslProtocol="SSL"/>
У вас есть какие-то объяснения, что здесь может быть неправильным?
Прежде всего, я сожалею, что написал это здесь, а не в комментарии, но у меня все еще недостаточно репутации для комментариев.
Я не эксперт в конфигурации Tomcat, но могу сказать, что эта ошибка произошла со мной, и это было вызвано номером порта, который я использовал, насколько я могу судить.
У меня был порт 20443, сконфигурированный в разъеме вместе с протоколом Http11Nio, и это вызвало ту же проблему, описанную здесь. Как только я сменил порт на 8443 и перезапустил tomcat, он работал правильно. А при использовании порта 20443, если я использую протокол Http11Nio2, он работает (как описано Etienne).
Таким образом, это выглядит связанным с портом диапазона с протоколом Http11Nio. Я использую хранилище ключей PKCS12, но после нескольких тестов ничего не указывает на привязку к хранилищу ключей.
Это не объясняет основную причину, но в аренде сужает исследование до более конкретной области.
Я создал отчет об ошибке в bugzilla для дальнейшего рассмотрения: https://bz.apache.org/bugzilla/show_bug.cgi?id=61089
Надеюсь, это поможет.
После некоторых исследований выяснилось, что замена "org.apache.coyote.http11.Http11NioProtocol" на "org.apache.coyote.http11.Http11Nio2Protocol" оказывается работать. Я решил свою проблему, но все же, любые комментарии/рекомендации или решения по этому поводу приветствуются.