【经验随笔】 Tomcat多个APP使用相同名称环境变量导致问题

背景介绍

之前遇到一个问题,在一个tomcat下部署了两个APP,其中一个APP不能正常从底层接口获取数据。如果将两个APP分到不同服务器上的tomcat部署,又都正常了。分析了一下:

远程调试跟代码发现是其中一个APP读取的配置文件内容不对

这两个APP都有一个相同名称的配置文件,只是文件中的内容不同。仔细检查了这两个APP的配置文件,文件内容没有什么问题。为什么读出来的结果不就对了呢。

查看读取文件路径变量发现这两个APP读取的是同一个配置文件

也就是说其中一个APP读的配置文件是另一个APP下面的。

定位原因

跟踪代码发现原来APP中读取配置文件的方式是在系统初始化的时候将配置文件的路径写到到一个系统环境变量中,后面使用的时候再从系统环境变量中取出配置文件路径读取:

System.setProperty(配置文件Key, 配置文件路径);

第二个APP项目是直接拷贝第一个项目代码修改的,拷贝后环境变量名称–”配置文件Key”没有修改,导致第二APP初始化时就把第一个APP的配置文件路径覆盖了。解决方法是为两个APP设置不同的KEY,避免覆盖。

使用System全局变量要考虑是否会被其他运行程序覆盖,拷贝代码也要慎重。

上一篇:Javascript里的那些距离们


下一篇:ios 类似的效果淘宝商品详细页面