【weblogic ——程序改动之后不生效(weblogic缓存问题导致)】

项目场景:

java web项目部署在weblogic上,weblgoic共有两个服务,AdminServer和部署程序的server0。


问题描述

某次,根据需求对一个mapper.xml文件做了一些改动,重新发布程序之后发现改动并没有生效,查看日志发现还是执行的之前的老sql,但是加在程序里的代码都生效了。

原因分析:

排查原因:
1、程序正常启动,未发生异常。
2、其它功能都正常,未发生异常。
3、查看weblogic日志,未发现任何异常。
4、上网查看博客,初步怀疑是weblogic缓存导致。


解决方案:

怀疑是缓存导致,那么删除缓存试一试。
1、停掉weblogic
2、找到部署程序的server0文件夹,删除该目录下的/tmp文件夹和/cache文件夹。
在这里插入图片描述

3、重启weblogic
重启之后发现执行的还是老sql,配置并没有生效!非常奇怪,为了继续排查原因,我决定远程调试一下,看看究竟是为什么。

远程调试需要给server配置一下参数,下面说一下怎么远程调试。(不想看可以跳过此步骤)

4、打开weblogic控制台,找到server0配置页面,点击锁定编辑,加入以下参数然后点击保存并释放配置。

//参数
-Dlog4jLevel=debug -Djava.awt.headless=true -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=7703,server=y,suspend=n

在这里插入图片描述
5、配置idea远程调试,马赛克部分为服务器ip,jvm中加入以下参数:

//jvm参数
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7703

在这里插入图片描述

6、经过远程调试发现,xml文件加载的是这个文件: [/xxx/xxxp/oracle/fmw/12.1.3/user_projects/domains/base_domain/servers/AdminServer/tmp/.appmergegen_1689918509997_xxx.war/WEB-INF/classes/com/xxx/xxx/dao/xxxDao.xml]
注意:程序是部署在server0上的,程序运行时加载的文件居然是AdminServer/tmp目录下的文件
7、所以仅仅删除/server0的/tmp和/cache文件夹是不够的,还需要删除/AdminServer目录下的/tmp文件夹和/cache文件夹
8、删除之后重启weblogic,发现新的改动已生效。

总结:
weblogic很容易出现缓存问题,程序如果出现异常或者各种摸不着头脑的问题时,记得查看weblogic日志,看看有没有类似/.tmp文件夹里的内容找不到或者加载不了的问题,如果有这类异常信息,大部分原因就是缓存导致的,可以试试删除adminserver和部署程序的server目录下的/tmp文件夹和/cache文件夹。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值