2016-09-19 5 views
1

Используя Tomcat server 8.5.4 в качестве автономной службы (tomcat8w.exe), я получаю следующую ошибку в 'logs/tomcat8-stderr.YYYY- ММ-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"/> 

есть ли у вас какие-либо объяснения о том, что может быть не так?

ответ

1

После некоторого исследования выяснилось, что замена «org.apache.coyote.http11.Http11NioProtocol» на «org.apache.coyote.http11.Http11Nio2Protocol» получается работать. Я решил свою проблему, но все равно, любые комментарии/рекомендации или решения по этому поводу приветствуются.

0

Прежде всего, я сожалею, что написал это здесь, а не в комментарии, но у меня все еще недостаточно репутации для комментариев.

Я не являюсь экспертом в конфигурации Tomcat, но могу сказать, что эта ошибка произошла со мной, и это было вызвано номером порта, который я использовал, насколько я могу судить.

У меня был порт 20443, сконфигурированный в разъеме вместе с протоколом Http11Nio, и это вызвало проблему, описанную здесь. Как только я сменил порт на 8443 и перезапустил tomcat, он работал правильно. А при использовании порта 20443, если я использую протокол Http11Nio2, он работает (как описано Etienne).

Таким образом, это похоже на порт диапазона с протоколом Http11Nio. Я использую хранилище ключей PKCS12, но после нескольких тестов ничего не указывает на привязку к хранилищу ключей.

Это не объясняет первопричину, но в аренде сужает исследование до более конкретной области.

Я создал отчет об ошибке в Bugzilla для дальнейшего рассмотрения: https://bz.apache.org/bugzilla/show_bug.cgi?id=61089

Я надеюсь, что это помогает.

+0

Команда Apache ответила на мой отчет bugzilla и пометила его как дубликат ошибки [60030] (https://bz.apache.org/bugzilla/show_bug.cgi?id=60030), объяснение - ошибка для Apache Tomcat версии 8.0.x, и он был решен в версии 8.5.5 и выше. Проблема связана с поддержкой указателя имени сервера (SNI). Вот цитата из резолюции Марка Томаса с командой Apache: «Это было исправлено в следующих ветвях: - 9.0.x для 9.0.0.M10 и далее - 8.5.x для 8.5.5 и выше 8.0.x и ранее не затрагиваются, поскольку они не поддерживают SNI. ". – hesparza