java.io.eofexception在org.apache.tomcat.util.net.nioendpoint(tomcat 9& openjdk 8)
我正在为一个项目升级Tomcat和OpenJDK版本。目标:Tomcat 9.0.63和OpenJDK-8U322-B06。
但是,使用Tomcat 9.0.63和OpenJDK-8U322-B06时获得EofException。
我不知道该如何解决。
调查结果:
错误发生如果使用Tomcat9.0。 63 和OpenJDK-8U 252 -b09 或更高版本。
如果使用Tomcat9.0。 35 和OpenJDK-8U 322 -b06,则不会发生错误。
如果使用tomcat9.0。 63 和OpenJDK-8U 242 -b08 或以前的版本,则不会发生错误。
[https-jsse-nio-443-exec-2] org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.failed Connection [1], Stream [0], Frame type [null], Error
java.io.EOFException
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState.run(NioEndpoint.java:1659)
at org.apache.tomcat.util.net.SocketWrapperBase$OperationState.start(SocketWrapperBase.java:1068)
at org.apache.tomcat.util.net.SocketWrapperBase.vectoredOperation(SocketWrapperBase.java:1487)
at org.apache.tomcat.util.net.SocketWrapperBase.read(SocketWrapperBase.java:1330)
at org.apache.tomcat.util.net.SocketWrapperBase.read(SocketWrapperBase.java:1302)
at org.apache.coyote.http2.Http2AsyncParser.readConnectionPreface(Http2AsyncParser.java:55)
at org.apache.coyote.http2.Http2UpgradeHandler.init(Http2UpgradeHandler.java:253)
at org.apache.coyote.http2.Http2AsyncUpgradeHandler.init(Http2AsyncUpgradeHandler.java:41)
at org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch(Http2UpgradeHandler.java:328)
at org.apache.coyote.http2.Http2AsyncUpgradeHandler.upgradeDispatch(Http2AsyncUpgradeHandler.java:41)
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
tomcat Server.xml
<Connector port="9443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
keystoreFile="path" keystorePass="xxxx">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
端口443
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
keystoreFile="path" keystorePass="xxxx">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
端口8080
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="9443"
useBodyEncodingForURI="true" />
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443"
useBodyEncodingForURI="true" />
I am upgrading the tomcat and openjdk version for a project. Target: Tomcat 9.0.63 and openjdk-8u322-b06.
However, getting EOFException when using Tomcat 9.0.63 and openjdk-8u322-b06.
I don't know how to fix it.
Findings:
Error occurs if using Tomcat 9.0.63 and openjdk-8u252-b09 or later version.
No errors occurs if using Tomcat 9.0.35 and openjdk-8u322-b06.
No errors occurs if using Tomcat 9.0.63 and openjdk-8u242-b08 or previous version.
[https-jsse-nio-443-exec-2] org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.failed Connection [1], Stream [0], Frame type [null], Error
java.io.EOFException
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState.run(NioEndpoint.java:1659)
at org.apache.tomcat.util.net.SocketWrapperBase$OperationState.start(SocketWrapperBase.java:1068)
at org.apache.tomcat.util.net.SocketWrapperBase.vectoredOperation(SocketWrapperBase.java:1487)
at org.apache.tomcat.util.net.SocketWrapperBase.read(SocketWrapperBase.java:1330)
at org.apache.tomcat.util.net.SocketWrapperBase.read(SocketWrapperBase.java:1302)
at org.apache.coyote.http2.Http2AsyncParser.readConnectionPreface(Http2AsyncParser.java:55)
at org.apache.coyote.http2.Http2UpgradeHandler.init(Http2UpgradeHandler.java:253)
at org.apache.coyote.http2.Http2AsyncUpgradeHandler.init(Http2AsyncUpgradeHandler.java:41)
at org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch(Http2UpgradeHandler.java:328)
at org.apache.coyote.http2.Http2AsyncUpgradeHandler.upgradeDispatch(Http2AsyncUpgradeHandler.java:41)
at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Tomcat server.xml
<Connector port="9443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
keystoreFile="path" keystorePass="xxxx">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
port 443
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false"
compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
keystoreFile="path" keystorePass="xxxx">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
port 8080
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="9443"
useBodyEncodingForURI="true" />
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443"
useBodyEncodingForURI="true" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已解决。 Tomcat 9.0.36+和OpenJDK 8_252+不支持HTTP2和Nioprotocol。它必须使用APR协议=“ org.apache.coyote.http11.http11aprprotocol”,然后更改服务器.xml,
如果使用协议=” org.apache.coyote.chttp11.http11.http11nioprotocol“ className =“ org.apache.coyote.http2.http2 protocol” /&gt; < /code>,只会出现错误,而仅发生HTTP1.1。
Solved. Tomcat 9.0.36+ and openjdk 8_252+ not support http2 and NioProtocol at the same time. It must be use apr protocol="org.apache.coyote.http11.Http11AprProtocol" and change the server.xml
If using protocol="org.apache.coyote.http11.Http11NioProtocol", it needs to remove
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
, no error occurs but http1.1 only.