【经验随笔】 Tomcat多个APP使用相同名称环境变量导致问题
背景介绍
之前遇到一个问题,在一个tomcat下部署了两个APP,其中一个APP不能正常从底层接口获取数据。如果将两个APP分到不同服务器上的tomcat部署,又都正常了。分析了一下:
远程调试跟代码发现是其中一个APP读取的配置文件内容不对
这两个APP都有一个相同名称的配置文件,只是文件中的内容不同。仔细检查了这两个APP的配置文件,文件内容没有什么问题。为什么读出来的结果不就对了呢。
查看读取文件路径变量发现这两个APP读取的是同一个配置文件
也就是说其中一个APP读的配置文件是另一个APP下面的。
定位原因
跟踪代码发现原来APP中读取配置文件的方式是在系统初始化的时候将配置文件的路径写到到一个系统环境变量中,后面使用的时候再从系统环境变量中取出配置文件路径读取:
System.setProperty(配置文件Key, 配置文件路径);
第二个APP项目是直接拷贝第一个项目代码修改的,拷贝后环境变量名称–”配置文件Key”没有修改,导致第二APP初始化时就把第一个APP的配置文件路径覆盖了。解决方法是为两个APP设置不同的KEY,避免覆盖。
使用System全局变量要考虑是否会被其他运行程序覆盖,拷贝代码也要慎重。
【经验随笔】 Tomcat多个APP使用相同名称环境变量导致问题的更多相关文章
- Tomcat启动时为什么要配置CATALINA_HOME环境变量??
CATALINA_HOME的值被设为Tomcat的安装目录,如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令 1.Tom ...
- Tomcat服务器下载、安装、配置环境变量教程(超详细)
请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下上 ...
- Tomcat start.bat闪退:JRE_HOME环境变量配置不对
最近在配置Tomcat上遇到startup.bat启动闪退,在网上找了很多方法,都没解决.后来在网上找到两种问题,更改了两次,解决了.现将我遇到的问题分享,希望对遇到同样问题有帮助. 1.很多初学者对 ...
- tomcat下载与安装..使用和配置环境变量
操作环境: xp, myEclipse6.5 tomcat6.0 正文: 一.下载 tomcat官方网站 http://tomcat.apache.org 在左边Download树形菜单中 点击最新版 ...
- tomcat bin 中startup.sh中的环境变量配置
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre P ...
- Windows Server - Tomcat服务器下载、安装、配置环境变量教程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_40881680/articl ...
- tomcat环境变量的配置(网上摘,全部验证通过)
tomcat环境变量的配置 1.===> 进入bin目录下,双击startup.bat看是否报错.一般肯定会报. 2.===> 右键我的电脑===>高级===>环境变量 ...
- tomcat环境变量详细配置步骤
这篇文章主要为大家详细介绍了tomcat环境变量配置步骤,包括JDK环境变量配置,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了tomcat环境变量的配置教程,供大家参考,具体内容如下 1.=== ...
- Tomcat下JSP、Servlet和JavaBean环境的配置
经常看到jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助. 第一步:下载j2s ...
随机推荐
- WinForm中ClickOnce发布至广域网
ClickOnce智能客户端,是微软提供比较早的一项技术,用于实现WinForm开发的应用程序能够自动更新,省去给每台客户端升级带来的困扰. 从网上的贴子里看,有的说好用,有的说不好用.客观的说,微软 ...
- spring 运行时属性值注入
继续spring学习,今天介绍两种外部属性值注入的方式.当你需要读取配置信息时,可以快速读取. 开始之前先创建属性文件site.properties,放在classpath下面 #数据库配置 ### ...
- REST&RESTFUL
REST(表征性状态传输,Representational State Transfer)指的是一组架构约束条件和原则.是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格 ...
- 在kali安装中文输入法的教程
1终端下vi /etc/apt/sources.list 修改镜像元 (按E进行编辑 具体实例不同可能没有) 按 i进入编辑 擦除原有的几个官方源改为deb http://mirrors.ali ...
- ACdream 1015 Double Kings 树的重心
思路:删除根结点,其最大子树的节点最少.求一次树的重心即可. AC代码 #include <cstdio> #include <cmath> #include <ccty ...
- nyoj585 取石子(六) Nimm博弈
此题数据十分极限,需要优化,否则会超时.关于此题的不足:明明说的每堆石子数不超过100,我开一个105大小的数组想用哈希居然Runtime Error!! 后来看见有人说需要优化输入: void in ...
- keepalived双机热备nginx
nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽 ...
- JVM笔记5-对象的访问定位。
java虚拟机中指定一个栈内存的引用指向了堆内存中的对象.这样说只是笼统的说法.而指向堆内存中的对象就一定是栈引用所需要的那个对象吗?其实并不定. 这就需要知道对象的访问定位方式有两种: 1.使用句柄 ...
- 【前端】Angular2 Ionic2 学习记录
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/angular2_ionic2.html 一.建立项目 ionic start ProductName super ...
- PHPmysqli的 预处理执行查询语句
header( 'Content-Type:text/html;charset=utf-8 '); require 'prepareSrarment.php'; $mysqli=new mysqli( ...