大年二十七,公司马上要放假了,结果接到客户反馈前不久更新的服务数据库链接异常,报错信息为ORA-01017。引起这个报错通常可能是下面的原因:
Oracle用户过期
Oracle用户被锁定
配置文件密码错误
配置文件的编码异常,无法正确被解析
对这些问题一一排查后,竟然都是正常的!瞬间我整个人不正常了,到底是什么问题呢??????
补充一下项目部署目录的文件结构:
|-app.jar |-application.yml |-application-prod.yml |-start.sh
application.yml和application-prod.yml都和app.jar同级,并且application.yml中的active就是prod。
我们知道在springboot项目中外置的yml文件优先级如下:
最终抱着死马当活马医的态度,我准备将程序的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也是一样的。这个问题后续有空会好好研究一下,后续结果后更新~