ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

外置application.yml读取异常Bug记录

2022-01-30 23:02:44  阅读:155  来源: 互联网

标签:配置文件 xxx jar 外置 application yml


外置application.yml读取异常Bug记录

排查问题

大年二十七,公司马上要放假了,结果接到客户反馈前不久更新的服务数据库链接异常,报错信息为ORA-01017。引起这个报错通常可能是下面的原因:

  1. Oracle用户过期

  2. Oracle用户被锁定

  3. 配置文件密码错误

  4. 配置文件的编码异常,无法正确被解析

对这些问题一一排查后,竟然都是正常的!瞬间我整个人不正常了,到底是什么问题呢??????

补充一下项目部署目录的文件结构:

|-app.jar
|-application.yml
|-application-prod.yml
|-start.sh

application.yml和application-prod.yml都和app.jar同级,并且application.yml中的active就是prod。

springboot配置文件读取优先级

我们知道在springboot项目中外置的yml文件优先级如下:

  1. file:./config/ ,即优先读取jar包外的config目录中的配置文件
  2. file:./ ,即第二顺序读取jar包外的config目录同级的配置文件
  3. classpath:/config/ ,即第三顺序读取jar包内classpath下/config文件夹内的配置文件
  4. classpath:/ ,即第四顺序读取jar包内classpath中的配置文件

解决办法

最终抱着死马当活马医的态度,我准备将程序的jar包解压,把外置配置文件替换到jar包内重新启动,解压后的目录结构如下:

# 解压jar包 到xxx目录
unzip xxx.jar -d xxx

# 也可以使用jar命令解压,但是jar命令无法指定解压到的目录
jar -xvf xxx.jar

解压后的文件目录如下:

|-BOOT-INF
|--classes
|--lib
|-META-INF
|-org

其中/BOOT-INF/classes内存放的是yml文件,将外置的yml文件复制到此目录下进行覆盖操作。

使用jar命令将文件压回

# 进入存放BOOT-INF、META-INF、org三个文件夹的目录
cd /xxx

# 压缩三个目录为jar包,取名为xxx.jar
jar cfM0 xxx.jar *

将jar包打包放到服务器,删除所有外置文件重新启动

奇迹发生了,程序一切正常~~~~~~~终于可以安心过年了。。。。。。。。。。。

后续我又在测试环境检查了外置文件,默认读取的确实是外置的文件,甚至使用md5sum命令计算了两个jar包的MD5也是一样的。这个问题后续有空会好好研究一下,后续结果后更新~

标签:配置文件,xxx,jar,外置,application,yml
来源: https://www.cnblogs.com/zhangruifeng/p/15857781.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有