将用户定义的环境变量传递给tomcat

c9qzyr3d  于 2022-11-13  发布在  其他
关注(0)|答案(8)|浏览(191)

我正在使用eclipse进行Web应用程序编码。在这个程序中,我传递了如下环境变量:
1.项目--〉运行方式--〉运行配置。然后选择环境选项卡。
1.添加名为APP_MASTER_PASSWORD新环境变量及其值
我可以在java代码中以System.getenv("APP_MASTER_PASSWORD")的形式访问这个值。
但现在我想把这个环境变量传递给Tomcat,并在应用程序中访问它,而不是通过Eclipse传递。
那么我如何将这样的变量传递给tomcat呢?
我在谷歌上搜索了一下,但没有找到任何解决办法。

368yc8dk

368yc8dk1#

您可以使用setenv.bat.sh将环境变量传递给Tomcat。
创建CATALINA_BASE/bin/setenv.bat.sh文件,并在其中放入以下行,然后启动Tomcat。
在Windows上:

  1. set APP_MASTER_PASSWORD=foo

在类似Unix的系统上:

  1. export APP_MASTER_PASSWORD=foo
oxalkeyp

oxalkeyp2#

在这种情况下,您应该使用System属性而不是环境变量。编辑JAVA_OPTS的Tomcat脚本,并添加如下属性:
-DAPP_MASTER_PASSWORD=foo
并在代码中编写
System.getProperty("APP_MASTER_PASSWORD");
您也可以在Eclipse中执行此操作,而不是在JAVA_OPTS中,将VM参数中的行复制到运行配置中。

gajydyqb

gajydyqb3#

<Environment>标记指定的环境条目是JNDI,可使用java:/comp/env下的InitialContext.lookup访问。您可以通过对InitialContext构造函数和应用程序资源文件使用环境参数来指定JNDI的环境属性。
System.getEnv()是关于tomcat进程本身的系统环境变量。
要使用bash命令设置环境变量,请执行以下操作:export TOMCAT_OPTS=-Dmy.bar=foo并启动Tomcat:./startup.sh要检索系统属性bar的值,请使用System.getProperty()System.getEnv()可用于检索环境变量,例如TOMCAT_OPTS

ca1c2owp

ca1c2owp4#

环境变量可以通过在tomcat安装目录的bin文件夹中创建一个setenv.bat(windows)或setenv.sh(unix)文件来设置。但是,环境变量不能从您的代码中访问。
系统属性由java进程的-D参数设置。您可以在环境变量JAVA_OPTS中定义java起始参数。

我的建议是结合这两种机制。在你的apache-tomcat-0.0.0\bin\setenv.bat中写上:

  1. set JAVA_OPTS=-DAPP_MASTER_PASSWORD=password1

并在Java代码中编写:

  1. System.getProperty("APP_MASTER_PASSWORD")
ki1q1bka

ki1q1bka5#

对于Unix和Mac系统,请转到tomcat文件夹内的/bin/setenv.sh
添加下面的行
export JAVA_OPTS="$JAVA_OPTS -DAPP_MASTER_PASSWORD=mypass"
现在,System.getProperty("APP_MASTER_PASSWORD")将返回"mypass"

hk8txs48

hk8txs486#

如果您从Eclipse(“服务器”视图)启动Tomcat,那么您应该有一个名为“Apache Tomcat / Tomcat..."的“运行/运行配置”(菜单)条目。当您在运行配置列表中选择此条目时,您会看到一个带有几个选项卡的窗口,其中一个选项卡标记为“环境”。在此您可以为Tomcat配置环境变量。请确保在此之后重新启动Tomcat。

pbwdgjma

pbwdgjma7#

在Windows中,如果找不到setenv.bat,请在catalina.bat的第2行(在@echo off之后)添加以下内容:
设置应用程序主密码=foo
可能不是最好的方法,但很有效

1yjd4xko

1yjd4xko8#

我的解决方法是:

  1. DID NOT WORK〉〉设置为系统环境变量:我已经在mac bash_profile中设置了环境变量,但是Tomcat没有看到该变量。
    1.不工作〉〉setenv.sh:Apache的建议是在setenv.sh文件中有用户定义的环境变量,我做到了。
    1.THIS WORKED!!〉〉在对Tomcat启动脚本进行了一些研究之后,我发现使用setenv.sh设置的环境变量在启动过程中会丢失。因此,我不得不根据Apache的建议编辑我的catalina.sh,这样就成功了。
    catalina.sh的run命令中添加-DUSER_DEFINED变量。
  1. eval exec "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
  2. -classpath "\"$CLASSPATH\"" \
  3. -Djava.security.manager \
  4. -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
  5. -Dcatalina.base="\"$CATALINA_BASE\"" \
  6. -Dcatalina.home="\"$CATALINA_HOME\"" \
  7. -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
  8. -DUSER_DEFINED="$USER_DEFINED" \
  9. org.apache.catalina.startup.Bootstrap "$@" start

这个问题可能是我的电脑本地的。其他人会有不同的问题。把我的答案添加到这篇文章中,以防有人在尝试了所有推荐的方法后仍然面临Tomcat看不到环境变量的问题。

展开查看全部

相关问题