一、错误描述
最近将springboot从2.x升级到3.x后,服务后台一直报javax.net.ssl.SSLException: closing inbound before receiving peer‘s close_notify 异常,但是服务可以正常访问。
二、原因分析
升级springboot3.x后,项目使用的mysql驱动版本未进行调整,因此分析原因可能是SpringBoot3.x与MYSQL驱动不兼容导致,大多数网友给的解决方案都是数据库连接添加 useSSL=false 的设置,如果不需要SLL认证的话可以这样处理。但是大多数情况下本身就是要求我们用SSL方式连接数据库,那么需要使用SSL方式连接数据库我们应该怎么解决呢?
三、解决方案
1、如果不要求使用SSL方式连接,参考广大网友的方案,数据库连接添加 useSSL=false 的设置即可。
2、如果需要使用SSL方式连接,则需要解决SpringBoot3.x与MYSQL版本不兼容的问题,我们将mysql-connector-java包进行替换即可。
替换前
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.13</version>
</dependency>
替换后
<!-- mysql -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
<version>8.3.0</version>
</dependency>
注意:不只是版本的替换,groupId和artifactId也不一样!
注意:不只是版本的替换,groupId和artifactId也不一样!
注意:不只是版本的替换,groupId和artifactId也不一样!
通过上述依赖包替换后,控制台不再报javax.net.ssl.SSLException: closing inbound before receiving peer‘s close_notify 异常,问题成功解决!