一尘不染

如何在启动时在Tomcat配置中指定系统属性?

tomcat

我知道可以通过传递带有-D参数的参数来指定Tomcat的系统属性,例如“ -Dmy.prop = value ”。

我想知道是否有更干净的方法通过在context.xml文件或某些其他tomcat配置文件中指定属性值来做到这一点。我想这样做是因为,首先,更容易跟踪我的属性,其次,我有多个运行的上下文,而且我不知道如何通过-
D参数指定特定于上下文的属性。

我正在使用Tomcat 5.5版。


阅读 589

收藏
2020-06-16

共1个答案

一尘不染

(更新:如果我可以删除此答案,尽管可以接受,但我不能。我正在更新说明以提供更好的指导,并劝阻人们不要使用我在原始答案中概述的不良做法。)

您可以通过上下文或环境参数(例如,context.xml)来指定这些参数。请参见本页上标题为“上下文参数”和“环境条目”的部分:

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

正如@netjeff所指出的,这些值将通过Context.lookup(String)方法提供,而不是作为系统参数使用。

指定这些值的另一种方法是在要部署的Web应用程序的web.xml文件中定义变量(请参见下文)。正如@Roberto Lo
Giacco指出的那样,这通常被认为是不好的做法,因为部署的工件不应是特定于环境的。但是,如果您确实要执行以下操作,则下面是配置代码段:

<env-entry>
    <env-entry-name>SMTP_PASSWORD</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>abc123ftw</env-entry-value>
</env-entry>
2020-06-16