将VM Argument传递给Apache Tomcat

时间:2012-09-13 13:15:19

标签: java apache tomcat

我有一个名为“-Dfolder”的虚拟机参数的webProject

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

<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value>

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

-Dfolder=Dev

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

我是怎么做到的?

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

谢谢,对不起我的英文

3 个答案:

答案 0 :(得分:24)

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

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

<context:property-placeholder location="classpath*:app.properties" />

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.

示例:

CATALINA_OPTS =“ - Dfolder = Dev”

修改

对于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"

和applicationConfig.xml

<context:property-placeholder location="classpath*:${build}.properties, classpath*:config.properties" />

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

<context:property-placeholder location="classpath*:*.properties" />

答案 1 :(得分:14)

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

分隔它们

E.g。

cd /opt/tomcat/bin/ 
sudo nano setenv.sh 

编辑

CATALINA_OPTS="${CATALINA_OPTS}" 

CATALINA_OPTS="${CATALINA_OPTS} -Dparam=value -Dparam2=value2" 

重启tomcat:

service tomcat restart

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

ps aux | grep tomcat

答案 2 :(得分:3)

通过在与catalina.bat和startup.bat相同的目录中生成setenv.bat文件(在catalina.bat中推荐),使其在Windows中正常工作 并输入.bat:

的内容
set CATALINA_OPTS="-DyourVariableName=yourValue"

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