我有一个名为“-Dfolder”的虚拟机参数的webProject
我在applicationContext上使用这个参数是这样的:
<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value>
在Eclipse中,为了testing,我使用“运行configuration”来设置这样的值:
-Dfolder=Dev
现在,我想在Apache Tomcat上testing我的web应用程序,所以我需要设置/发送虚拟机参数文件夹。
我怎么做?
我必须使用setenv.sh? 怎么样?。 有人可以给我和例子吗?
感谢和抱歉我的英语
我不知道你使用的是什么版本的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 =开发”
编辑:
对于Windows应该是这样的set CATALINA_OPTS="-Dfolder=Dev"
编辑:
在Spring配置中,您可以像使用$ {propertyname}一样使用系统属性,也可以包含带有属性定义的文件,并使用context:property-placeholder
,并且在该文件属性中定义的所有属性也都可以在配置中使用。
例如,您具有基本集属性:config.properties和具有db连接设置(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" />
或者,您可以创建不同的构建配置,并在每个构建配置中仅包含一个属性(DEV,UAT,PROD)。 在applicationConfig中设置如下:
<context:property-placeholder location="classpath*:*.properties" />
转到$ CATALINA_HOME并通过添加参数值来编辑setenv.sh
文件。 如果要批量多个参数,请使用space
分隔它们
例如
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
通过在catalina.bat和startup.bat(如catalina.bat中推荐的)相同的目录中生成setenv.bat文件,并将其放入.bat的内容,使其在Windows中工作。
set CATALINA_OPTS="-DyourVariableName=yourValue"
就这样。 我喜欢这种方式,因为它看起来很干净