我知道可以通过传递带有-D参数的参数来指定Tomcat的系统属性,例如“ -Dmy.prop = value ”。
我想知道是否有更干净的方法通过在context.xml文件或某些其他tomcat配置文件中指定属性值来做到这一点。我想这样做是因为,首先,更容易跟踪我的属性,其次,我有多个运行的上下文,而且我不知道如何通过- D参数指定特定于上下文的属性。
我正在使用Tomcat 5.5版。
(更新:如果我可以删除此答案,尽管可以接受,但我不能。我正在更新说明以提供更好的指导,并劝阻人们不要使用我在原始答案中概述的不良做法。)
您可以通过上下文或环境参数(例如,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>