javax.net.ssl.SSLHandshakeException: No appropriate protocol

服务跑不起来(关于配置文件):

报错:

Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
	at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171) ~[?:1.8.0_321]
	at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:106) ~[?:1.8.0_321]
	at sun.security.ssl.TransportContext.kickstart(TransportContext.java:237) ~[?:1.8.0_321]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:405) ~[?:1.8.0_321]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:384) ~[?:1.8.0_321]
Caused by: com.mysql.cj.core.exceptions.CJCommunicationsException: Communications link failure

原因:数据库配置(增加useSSL=false)

#spring.datasource.url=jdbc:mysql://ip:3306/dbuser?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
spring.datasource.url=jdbc:mysql://ip:3306/dbuser?useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true&useSSL=false&tinyInt1isBit=false

解释代码

这是一个Spring Boot应用程序的配置文件中的一行代码,用于设置数据库连接信息。具体解释如下:

  1. spring.datasource.url:这是Spring Boot中用于配置数据源URL的属性。
  2. jdbc:mysql://ip:3306/dbuser:这是JDBC URL,用于指定数据库的类型(MySQL)、主机地址(ip)、端口号(3306)以及数据库名称(dbuser)。
  3. useUnicode=true:这个参数表示使用Unicode字符集。
  4. characterEncoding=utf8:这个参数表示使用UTF-8字符编码。
  5. allowPublicKeyRetrieval=true:这个参数表示允许从服务器获取公钥。
  6. useSSL=false:这个参数表示不使用SSL加密连接。
  7. tinyInt1isBit=false:这个参数表示将TINYINT类型映射为Java的byte类型,而不是boolean类型。

另外:

远程数据库连接之前正常连接,运行几次项目后(状态:启动失败)后被远程数据库拒绝连接应该也是这个原因

Error number 1129
Host 'ip' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

PS:两个配置文件都要修改->clean->pakeage(修改配置文件后需要打包)

重新clean和package操作的情况:

在IDEA项目中,以下几种情况可能需要执行重新clean和package操作:

  1. 代码变更:当项目中的源代码发生了修改,需要将这些变更反映到最终的构建产物中时,应该执行重新clean和package操作。这样可以确保新的代码被编译并包含在内。
  2. 依赖更新:如果项目的依赖关系发生了变化,比如添加或移除了依赖库,或者依赖库的版本发生了更改,通常需要重新执行构建过程以获取正确的构建结果。
  3. 配置文件修改:对于项目中的配置文件进行了修改,这些改动需要反映到打包文件中,以确保运行时环境能够正确加载配置。
  4. 构建脚本更新:如果项目的构建脚本(如pom.xml对于Maven项目)有所更改,比如改变了插件版本、添加了新的构建步骤等,需要重新执行构建以确保这些更改生效。
  5. 解决构建错误:在构建过程中遇到错误或异常,清除之前的构建产物可以帮助解决某些由于残留文件导致的问题。
  6. 准备部署:在将项目部署到服务器或发布环境之前,通常需要执行一次完整的构建过程,以确保部署的是最新且经过完整构建的产物。
  7. 多模块项目变更:对于包含多个模块的项目,任何一个模块的变更都可能需要重新clean和package整个项目,以确保所有模块之间的依赖关系得到正确处理。
  8. 环境切换:在不同的开发环境(如开发环境、测试环境、生产环境)之间切换时,可能需要重新构建项目,以适应不同环境的配置和需求。
  9. CI/CD流程:在持续集成/持续部署(CI/CD)的自动化流程中,每次代码提交都会触发自动构建,这通常包括clean和package步骤,以确保生成的构件是最新的。
  10. 性能优化或重构:在进行性能优化或重构代码后,需要重新构建项目以确保性能提升或重构的结果被正确集成。
  11. 版本升级:升级项目所使用的框架或库的版本后,可能需要重新构建以适应新版本的特性和要求。

总之,任何可能影响最终构建产物的情况,都可能需要执行重新clean和package操作。这样做可以确保项目的稳定性和可靠性,避免因为旧的构建产物导致的不一致问题。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值