将VM Argument传递给Apache Tomcat

Mar*_*mix 25 java apache tomcat

我有一个名为"-Dfolder"的VM参数的webProject

我在applicationContext上使用这个参数,如下所示:

<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value>
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,为了进行测试,我使用"运行配置"来设置如下值:

-Dfolder=Dev
Run Code Online (Sandbox Code Playgroud)

现在,我想在Apache Tomcat上测试我的webapp,所以我需要设置/发送文件夹VM Argument.

我怎么做的?

我必须使用setenv.sh?怎么样?.有人可以给我和榜样吗?

谢谢,抱歉我的英语

use*_*873 27

我不知道您使用的是哪个版本的Tomcat,但在文件catalina.sh中的Tomcat 7中,您可以指定变量CATALINA_OPTS,此变量将传递给jvm.

但是设置环境变量可能不是实现目标的最佳方式.也许最好的是创建单独的"app.properties"文件,并将其包含在applicationContext中,如下所示:

<context:property-placeholder location="classpath*:app.properties" />
Run Code Online (Sandbox Code Playgroud)

和catalina.sh的解决方案

#   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
#                   "run" or "debug" command is executed.
#                   Include here and not in JAVA_OPTS all options, that should
#                   only be used by Tomcat itself, not by the stop process,
#                   the version command etc.
#                   Examples are heap size, GC logging, JMX ports etc.
Run Code Online (Sandbox Code Playgroud)

例:

CATALINA_OPTS = " - Dfolder =开发"

编辑:

对于Windows应该是这样的 set CATALINA_OPTS="-Dfolder=Dev"

编辑:

在Spring配置中,您可以像$ {propertyname}一样使用系统属性,也可以包含带有属性定义的文件context:property-placeholder,并且在该文件中定义的所有属性也可以在配置中变为可用.

例如,您具有基本集属性:config.properties,以及具有数据库连接设置的文件集(DEV.properties,UAT.properties,PROD.properties).那么,如何为不同的环境包含不同的属性?它可以通过多种方式完成,例如,在catalina.bat中设置系统属性

set CATALINA_OPTS="-Dbuild=DEV"
Run Code Online (Sandbox Code Playgroud)

并在applicationConfig.xml中

<context:property-placeholder location="classpath*:${build}.properties, classpath*:config.properties" />
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建不同的构建配置,并在最终WAR中仅为每个构建配置包含一个属性(DEV,UAT,PROD).在applicationConfig中设置如下:

<context:property-placeholder location="classpath*:*.properties" />
Run Code Online (Sandbox Code Playgroud)


bin*_*iam 15

转到$ CATALINA_HOME并setenv.sh通过添加带有值的参数来编辑文件.如果要批量化多个参数,请使用它们分开space

例如

cd /opt/tomcat/bin/ 
sudo nano setenv.sh 
Run Code Online (Sandbox Code Playgroud)

编辑该行

CATALINA_OPTS="${CATALINA_OPTS}" 
Run Code Online (Sandbox Code Playgroud)

CATALINA_OPTS="${CATALINA_OPTS} -Dparam=value -Dparam2=value2" 
Run Code Online (Sandbox Code Playgroud)

重启tomcat:

service tomcat restart
Run Code Online (Sandbox Code Playgroud)

你现在应该能够看到运行时传递给tomcat的参数:

ps aux | grep tomcat
Run Code Online (Sandbox Code Playgroud)

  • 赞成,因为该用户展示了一个带有多个参数的示例。我习惯使用 Tomcat 配置 gui,从那里看参数是空格分隔的并不明显。 (2认同)

Osm*_*mar 6

使其在Windows中工作,通过在与catalina.bat和startup.bat相同的目录中生成setenv.bat文件(按照catalina.bat中的建议)并放入.bat的内容:

set CATALINA_OPTS="-DyourVariableName=yourValue"
Run Code Online (Sandbox Code Playgroud)

就这样。我喜欢这种方式,因为它看起来很干净