ITPub博客

首页 > 应用开发 > Java > tomcat服务器缓存问题

tomcat服务器缓存问题

原创 Java 作者:jaymarco 时间:2020-09-23 09:31:30 0 删除 编辑

1   问题描述

某年某月某日某系统开发商反馈有一个新功能需求上线后,界面没有正常显示出来。却还是呈现出旧的功能,直接影响用户使用。 


2   系统环境

操作系统: Redhat6.4
JDK版本: JDK1.6

Db版本:  Oracle 11.2.0.4  RAC

中间件版本:Apache Tomcat/6.0.33

集群:否


3   故障处理过程

3.1故障 分析

开发商说:该功能是一个webservice接口,新增了一栏 buinessScope值,但代码已经发布到生产系统,但没见功能生效。测试环境有测试过是正常的。

那好让我们来看看效果,直接通过浏览器访问生产系统地址 http://ip:8080/aixs2/webservice/tsfsf?wlsd,确实没有这个buinessScope这一栏代码,再去登录测试系统确实有buinessScope这一栏代码。

生产系统界面


测试系统界面

很奇诡吧

 

分析思路:

1、该功能代码是否有生产,是否现在生产环境代码还是老代码。

2、Tomcat的缓存机制会不会有问题。

接下来我们分析第一种情况

代码文件路径:axis2.war/oracle/apps/po/weServices/entities/OrderInfo.class

找到生产环境和测试环境md5值一致,应该不会存在代码没有上线

[root@ pdcws-vm-szzb entities]# md5sum  OrderInfo.class    <<----- 生产环境

e41d409f073cce04898b8e5b04441256  OrderInfo.class

[tomcat@ pdcws-szzb entities]$ md5sum  OrderInfo.class    <<----- 测试环境

e41d409f073cce04898b8e5b04441256  OrderInfo.class

还是有点怀疑,需要再次确认代码,于是去生产环境将OrderInfo.class下载下来进行反编译检查一下。

看了反编译后的代码,确实这个功能在生产系统已上线,通过以上分析我们可以排除代码问题。

接下来我们分析第二种情况

1、清空浏览器缓存

2、检查tomcat服务是否有设置自动缓存清理机制,检查配置文件conf/server.xml,结果发现没有reloadable=true缓存清理机制。

3、手工清理缓存axis2功能项目

rm –rf  $TOMCAT_HOME\work\Catalina\localhost\axis2

     4、重启tomcat服务后,果然代码已生效,原来是缓存问题导致。


3.2故障原因

其原因是缓存机制出现了问题,对于新增xml,jsp,class代码文件web容器没有对其进行自动重编,最后会导致代码不生效。


4 解决方案

1、设置自动缓存清理机制conf/server.xml,结果发现没有加上reloadable缓存清理机制。

2、发布新功能提前,提前手工清理缓存。

有需要的朋友可以关注我的公众号,文章每日一更


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2723370/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    76
  • 访问量
    37033