org.apache.coyote.AbstractProtocol $ ConnectionHandler.process错误读取请求,被忽略

时间:2016-09-19 15:50:42

标签: java tomcat connector tomcat-valve

使用Tomcat服务器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"/>

您对此处可能出现的问题有任何解释吗?

2 个答案:

答案 0 :(得分:2)

首先,我很抱歉在这里写这篇文章而不是评论,但我仍然没有足够的声誉来评论。

我不是Tomcat配置的专家,但是我可以告诉我同样的错误发生在我身上,这是由我所使用的端口号引起的。

我在连接器中配置了端口20443以及协议Http11Nio,这导致了此处描述的相同问题。一旦我将端口更改为8443并重新启动tomcat,它就能正常工作。当使用端口20443时,如果我改为使用协议Http11Nio2,它可以工作(如Etienne所述)。

因此,这看起来与协议Http11Nio的范围端口有关。我使用的是密钥库PKCS12,但经过多次测试后,没有任何内容与密钥库有关。

这并不能解释根本原因,但至少可以将研究范围缩小到更具体的范围。

我在bugzilla中创建了一个错误报告,以供进一步审核:https://bz.apache.org/bugzilla/show_bug.cgi?id=61089

我希望这会有所帮助。

答案 1 :(得分:1)

经过一番研究,我发现替换了#org.apache.coyote.http11.Http11NioProtocol&#39;与&#39; org.apache.coyote.http11.Http11Nio2Protocol&#39;结果工作。 我解决了我的问题,但仍然欢迎任何评论/建议或解决方案。