今天有朋友问,他在WebLogic 10上部署了一个应用,最近作了更新并重新部署,但是从运行测试的反映来看,这些更新并没有体现,变现出来的情况还是更新前的情形。也就是说,WebLogic很可能还在用着之前旧版程序,它还在用着旧的缓存。
这个问题从很早的版本就遇过了,其他品牌的应用服务器也同样有类似的问题。不负责人的说,出现这样的情况肯定有bug的存在,至于是应用服务器还是应用程序还是哪里的bug就不得而知了。
解决方法也不复杂,如下:
- 登录WebLogic的管理Console,停止并删除应用;
- 停止WebLogic;
- 删除域目录中的servers\XXXServer\cache和servers\XXXServer\tmp两个目录;
- 重新启动WebLogic;
- 部署新版应用。
如果嫌麻烦不想停止和重启WebLogic,还可以试一下这样:
- 停止并删除应用;
- 在servers\XXXServer\tmp\_WL_user目录中找到你的应用的相应目录,然后删掉它;
- 部署新版应用。
我不确定这样是否和上边的方法同样“干净”,留给大家各自尝试了。
题外话:大家一定刚觉判断应用程序是否有更新,应用新版本不是特复杂的事情,为什么多个有名的产品都会有问题?我只能说实际情况比想象的复杂,我遇过一个情况,管理员重部署应用失败,后来反复找原因原来是原应用被停用后还有一个文件被占用着,以至于原应用的一个相关目录无法删除,这个占用文件不被释放的正是大名鼎鼎的log4j(应用程序用了它),我记得被占用的文件是一个它要读的properties文件。
大家可以自己判断一下类似的情况对应用服务器要做的事情是不是有影响,谁知道哪个类包哪个应用是不是有什么bug呢?