【发布时间】:2019-05-04 21:18:11
【问题描述】:
从 Spring Boot 2.1.0.RELEASE 更新到 2.1.1.RELEASE 后,所有 HTTPS 请求都失败并出现以下错误:
2018-12-03 14:23:46,089 PID=21726 LEVEL=ERROR THREAD=https-openssl-nio-443-exec-2 LOGGER=org.apache.tomcat.util.net.NioEndpoint METHOD=log:175 MESSAGE="java.lang.UnsatisfiedLinkError: org.apache.tomcat.jni.SSL.renegotiatePending(J)I
at org.apache.tomcat.jni.SSL.renegotiatePending(Native Method) ~[tomcat-embed-core-9.0.13.jar!/:9.0.13]
at org.apache.tomcat.util.net.openssl.OpenSSLEngine.getHandshakeStatus(OpenSSLEngine.java:1021) ~[tomcat-embed-core-9.0.13.jar!/:9.0.13]
at org.apache.tomcat.util.net.openssl.OpenSSLEngine.wrap(OpenSSLEngine.java:457) ~[tomcat-embed-core-9.0.13.jar!/:9.0.13]
at java.base/javax.net.ssl.SSLEngine.wrap(SSLEngine.java:471) ~[na:na]
at org.apache.tomcat.util.net.SecureNioChannel.handshakeWrap(SecureNioChannel.java:440) ~[tomcat-embed-core-9.0.13.jar!/:9.0.13]
at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:211) ~[tomcat-embed-core-9.0.13.jar!/:9.0.13]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1394) ~[tomcat-embed-core-9.0.13.jar!/:9.0.13]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.13.jar!/:9.0.13]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) [na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.13.jar!/:9.0.13]
at java.base/java.lang.Thread.run(Thread.java:844) [na:na]
"
恢复到 2.1.0.RELEASE 解决了这个问题。
- 操作系统:Ubuntu 18.04.1 LTS
- Java:OpenJDK 运行时环境(构建 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
- libtcnative:1.2.16-1build1
怀疑这与:https://github.com/spring-projects/spring-boot/issues/15261
显式锁定对 tomcat-embed-core 9.0.12 的依赖解决了该问题。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.12</version>
</dependency>
</dependencies>
</dependencyManagement>
怀疑 libtcnative 更新也会解决这个问题,但 Ubuntu LTS 的当前版本是 1.2.16-1build1,因此我们认为这是 Spring Boot 中的回归。
https://packages.ubuntu.com/search?keywords=libtcnative-1
使用上面列出的依赖锁解决了问题。
【问题讨论】:
标签: java spring spring-boot tomcat