一尘不染

将VM参数传递给Apache Tomcat

tomcat

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

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

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

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

-Dfolder=Dev

现在,我想在Apache Tomcat上测试我的Web应用程序,因此我需要设置/发送文件夹VM Argument。

我该怎么做?

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

谢谢,抱歉我的英语


阅读 233

收藏
2020-06-16

共1个答案

一尘不染

我不知道您使用的是哪个版本的Tomcat,但是在Tomcat
7的catalina.sh文件中,您可以指定变量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中使用。

例如,您具有基本集属性: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" />
2020-06-16