TOMCAT_OPTS,环境变量和System.getEnv()
我使用tomcat,我想在我的java代码中获取一个环境变量。
要设置环境变量,我使用此bash命令:
export TOMCAT_OPTS=-Dmy.var=foo
之后我开始tomcat
./startup.sh (in bin folder of tomcat)
在我的java代码中,我尝试获取此变量:
System.getEnv("my.var")
但它返回NULL。
我怎样才能做到这一点 ?
我确切地说,如果我使用maven启动tomcat并使用eclipse环境选项卡,则找到该变量! 但我需要在生产模式下像上面一样启动tomcat。
编辑:当直接使用导出MY_VAR时,它在本地运行但不在我的服务器上运行…
System.getEnv
返回环境变量,如PATH,或者在您的示例中,返回TOMCAT_OPTS)。
使用-Dfoo=bar
调用Java时,不设置环境变量:传递系统属性。 使用System.getProperty
获取foo的值。
我终于在CATALINA_HOME中找到了一个名为tomcat6.conf的配置文件。 我将export my.var = foo添加到文件末尾,System.getenv(“my.var”)现在返回值…
恶梦…
如果您使用的是tomcat7和unbuntu操作系统,则可以编辑/ etc / default / tomcat7文件,只需添加一行yourvar = yourvalue就可以了。
如下:
# Run Tomcat as this user ID. Not setting this or leaving it blank will use the # default of tomcat7. TOMCAT7_USER=tomcat7 # Run Tomcat as this group ID. Not setting this or leaving it blank will use # the default of tomcat7. TOMCAT7_GROUP=tomcat7 IM4JAVA_TOOLPATH=/usr/local/bin/ # The home directory of the Java development kit (JDK). You need at least # JDK version 1.5. If JAVA_HOME is not set, some common directories for # OpenJDK, the Sun JDK, and various J2SE 1.5 versions are tried. #JAVA_HOME=/usr/lib/jvm/openjdk-6-jdk # You may pass JVM startup parameters to Java here. If unset, the default # options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC # # Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved # response time). If you use that option and you run Tomcat on a machine with # exactly one CPU chip that contains one or two cores, you should also add # the "-XX:+CMSIncrementalMode" option. JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m -XX:+UseConcMarkSweepGC"
在Tomcat8中通过解压缩归档安装,有一个名为“ catalina.properties ”的文件
您只需添加即可在此文件中引入环境变量
my.special.variable=some_value
有一个tomcat的配置文件,默认位于/dev/tomcat6/tomcat6.conf
我相信(查看/etc/init.d/tomcat以查看“TOMCAT_CFG”的值是什么。这是“sourced” .
这个文件( . $TOMCAT_CFG
)在tomcat启动(或停止,重启等)之前,所以如果你添加这行:
MY_VAR=somevalue
这应该可用于您的Java应用程序。
我知道这是一个老问题,但也许对其他人有用:)
对于Tomcat7 + Ubuntu:
组:
- 打开
/etc/default/tomcat7
文件 -
添加一行
somekey=value
注意:变量的名称不能包含点。
- 重启Tomcat:
service tomcat7 restart
读:
System.getenv("somekey");
如果要在tomcat中设置环境变量以通过getEnv进入 ,请使用setenv 。
即在tomcat / bin中你有(或应该创建)setenv.sh(或者用于шindoшs的setenv.bat
)并定义
my.var=FOO OTHERVAR=BOO
在它前面set
шindoшs。
既然您已经向我解释过您正在使用基于yum的安装(建议使用Red Hat发行版衍生产品),如果您将Tomcat作为守护程序运行,那么您需要设置“export TOMCAT_OPTS = …”命令在/ etc / profile(对于全局作用域)中,或将其添加到启动Tomcat实例的用户的home中的〜/ .profile或〜/ .bashrc文件中。
您是否在Eclipse IDE上使用Tomcat? 然后你只需要按照以下步骤操作:
- 双击tomcat服务器
- 打开启动配置
- 环境
- 新(名称/价值)