【问题标题】:Nio2Endpoint.Nio2SocketWrapper.getSslSupport Exception in springboot applicationSpringboot 应用程序中的 Nio2Endpoint.Nio2SocketWrapper.getSslSupport 异常
【发布时间】:2020-01-21 11:05:19
【问题描述】:

我为 Spring Boot 应用程序实现了自签名 ssl 证书。尽管结果如期而至,但我得到了以下异常。 使用 Springboot:2.1.8 和 Tomcat:9.0.24

我尝试将协议从“org.apache.coyote.http11.Http11NioProtocol”更改为“org.apache.coyote.http11.Http11Nio2Protocol”。但仍然出现异常。

抛出的异常。

@Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
        tomcatServletWebServerFactory.setProtocol("org.apache.coyote.http11.Http11Nio2Protocol");
        return tomcatServletWebServerFactory;
    }
    at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper.getSslSupport(Nio2Endpoint.java:1581) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1685) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1087) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.tomcat.util.net.SecureNio2Channel$HandshakeReadCompletionHandler.failed(SecureNio2Channel.java:104) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.tomcat.util.net.SecureNio2Channel$HandshakeReadCompletionHandler.completed(SecureNio2Channel.java:97) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at org.apache.tomcat.util.net.SecureNio2Channel$HandshakeReadCompletionHandler.completed(SecureNio2Channel.java:92) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) [na:1.8.0_201]
    at sun.nio.ch.Invoker$2.run(Invoker.java:218) [na:1.8.0_201]
    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) [na:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_201]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.24.jar:9.0.24]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]

【问题讨论】:

标签: java spring-boot ssl tomcat ssl-certificate


【解决方案1】:

这是 Tomcat 9.0.24 中的 known bug。当您尝试在启用 TLS 的连接器上使用纯文本时会触发它。在最近发布的 9.0.26 中修复了该错误。

【讨论】:

  • 是的。我在 Bugzilla 中发现了同样的情况。但是目前在升级到 tomcat 9.0.26 之后,当我尝试执行创建的 Jar 时,我得到“端口可能已经在使用或连接器”异常。这只会在执行 jar 时发生,而不是通过 bootRun。
  • 这只发生在 9.0.26 tomcat 上。相同的代码适用于 9.0.24。不知道为什么?
猜你喜欢
  • 2017-10-20
  • 1970-01-01
  • 2021-08-28
  • 2017-05-02
  • 2017-07-02
  • 2019-07-26
  • 2020-04-26
  • 2016-09-15
  • 1970-01-01
相关资源
最近更新 更多