关于java通过System.setProperty设置环境变量作用范围验证
一、场景
在部署java应用时有时需要通过System.setProperty的方式设置环境变量用来存储一下常用的参数。但是在实际使用中发现当多个java应用同时以此方式设置系统变量,变量名相同,且都部署在同一个server里时,这几个java应用在引用该变量时会相互干扰。
二、验证
新建两个javaweb项目,并且都在web.xml中配置自启动servlet。用以当服务启动时,对应的servlet会在初始化的时候获取并修改系统变量参数,从而判断是否会相互干扰。
servlet代码如下:
public class Test extends HttpServlet{/*** */private static final long serialVersionUID = 1L;public Test() {System.out.println("1-初始化开始");String abc = System.getProperty("abc");System.out.println("1-当前abc环境变量:"+abc);System.out.println("1-修改abc变量");System.setProperty("abc", "3333");System.out.println("1-初始化完毕");abc = System.getProperty("abc");System.out.println("1-当前abc环境变量:"+abc);}}
public class Test extends HttpServlet{/*** */private static final long serialVersionUID = 1L;public Test() {System.out.println("2-初始化开始");String abc = System.getProperty("abc");System.out.println("2-当前abc环境变量:"+abc);System.out.println("2-修改abc变量");System.setProperty("abc", "3333");System.out.println("2-初始化完毕");abc = System.getProperty("abc");System.out.println("2-当前abc环境变量:"+abc);}}
将两个javaweb应用同时部署到同一个tomcat中启动,如果两个应用彼此的系统变量相互没有干扰,则应该在控制台输出:
2-初始化开始
2-当前abc环境变量:null
2-修改abc变量
2-初始化完毕
2-当前abc环境变量:3333
1-初始化开始
1-当前abc环境变量:null
1-修改abc变量
1-初始化完毕
1-当前abc环境变量:3333
然而实际情况为:
2-初始化开始
2-当前abc环境变量:null
2-修改abc变量
2-初始化完毕
2-当前abc环境变量:3333
1-初始化开始
1-当前abc环境变量:3333
1-修改abc变量
1-初始化完毕
1-当前abc环境变量:3333
可见当在同一个server里部署多个应用且同时需要修改系统变量时,是会存在相互干扰的情况的。经测试多个java应用部署到WebSphere的同一个server里时同样会出现这种情况。
三、结论
对于同一个server里部署多个应用且同时需要修改系统变量时,如果待修改的系统变量名相同,则会出现相互干扰的情况。
四、建议
在java应用中尽可能不用系统变量来存储参数,如果必须使用,则需要注意对于同一个server,多个应用设置的系统变量名不能相同,否则可能会出现相互干扰的情况。
关于java通过System.setProperty设置环境变量作用范围验证相关推荐
- 在Java程序设计中,设置环境变量path和classpath的作用分别是什么?
在Java程序设计中,设置环境变量path和classpath的作用分别是什么? asd79308 10级 分类: 编程开发 被浏览344次 2013.07.22 额,你这问题问的有够" ...
- Java初学者福音——自动设置环境变量
刚开始编程尤其是以开始就接触Java时,往往对path和classpath不太理解.无论从理论还是实践都有些文章都能讲得很通透.但是即便如此,对于新手,依然有存在不会设置的. 不会设置这两个变量,基本 ...
- Java - 安装jdk并设置环境变量
前言 双十一买了台新的笔记本,需要重新安装下Java,这里记录下安装的过程,毕竟万事开头难,就算是老手也不一定能一次就把Java安装成功. 安装jdk 作为一名Java开发,当然是要安装jdk了,如果 ...
- java基础:JDK的安装及设置环境变量
jdk介绍 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA ...
- windows通过脚本批量设置环境变量(env、path)实战:java环境、scala环境、maven环境、gradle环境、nodejs、git等
windows通过脚本批量设置环境变量(env.path)实战:java环境.scala环境.maven环境.gradle环境.nodejs.git等 目录
- java 代码里设置环境变量_如何在一个java程序里设置环境变量
展开全部 环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如path,当要62616964757a686964616fe4b893e5b19e313333613064 ...
- 设置JAVA环境设置_Java为什么要设置环境变量、JAVA_HOME
1. 为什么要说这个问题? 想起来两年前刚学习Java时,被要求先要设置环境变量,自然不解,随后网上找答案. 现在想来感觉当时看到的答案都是神神叨叨,含糊不清,没有几个说的明明白白的.当然也有可能是当 ...
- 最全:mac设置环境变量(Python/ Java/ Mysql/Allure)
每次需要在mac上设置环境变量时,总是要重新上网搜索该怎么设置,而且只依葫芦画瓢,没搞懂每个步骤,今天痛定思痛,一定要搞清楚,一劳永逸.好,我们开始 为什么要设置环境变量? 背景 在cmd中想要执行n ...
- centos7/8使用yum/dnf安装java并设置环境变量
1.首先可执行命令,检测系统是否已经存在java版本 yum list installed |grep java 已安装的话,会显示对应版本,如果已安装的版本可以满足使用,则不需要进行之后的操作,直接 ...
最新文章
- shell中字符串截取的几种方法
- R将dataframe数据保存为csv文件
- 技术分享丨数据仓库的建模与ETL实践技巧
- 超算简史:练飞天之技,登峰一战后,终有落地日 | 凌云时刻
- 阿里云云计算 36 PolarDB MySQL的管理步骤
- 微信小程序开发(后端 Java)
- html叫编程语言吗,html是编程语言吗
- Base64编码简介
- 【本科生科研入门】英文科技论文写作-绘图篇
- 【BZOJ5077】【UOJ198】【CTSC2016】时空旅行
- Day2 QT常用基础类型(自用)
- html高度塌陷问题
- ArcGIS Desktop、Arcengine、ArcObjects_SDK for NET.Framework安装教程
- 医院医生护士都不愿说的医学小常识
- numpy中mgrid()和meshgrid()函数
- 如何用 CSS 制作动画圆环图形图标
- CentOS下的rpm命令使用
- 10月23日,相约全球边缘计算大会·上海站
- vim替换命令(转)
- win10设置程序开机自启
热门文章
- org.postgresql.util.PSQLException: 不良的类型值 long : \x
- 解析大型.NET ERP系统架构设计 Framework+ Application 设计模式
- ABP天坑--UOW自动保存修改
- Eureka之使用详解
- 中国大豆产业的“退化”路径
- 计算机休眠和睡眠的区别
- likely和unlikely
- 【Android】线程间通信——Handler消息机制
- 简单的锁键盘锁鼠标的C++病毒代码
- PAT甲级题库参考答案(c++)