我有一个名为“-Dfolder”的虚拟机参数的webProject
我在applicationContext上使用这个参数,如下所示:
<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value>
在Eclipse中,为了进行测试,我使用“运行配置”来设置如下值:
-Dfolder=Dev
现在,我想在Apache Tomcat上测试我的webapp,所以我需要设置/发送文件夹VM Argument。
我是怎么做到的?
我必须使用setenv.sh吗?怎么样?。有人可以给我和榜样吗?
谢谢,对不起我的英文
答案 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"
这就是全部。我喜欢这种方式,因为它看起来很干净