为Tomcat 6 Servlet设置环境variables

我正在使用Ubuntu的默认安装的Tomcat 6.我正在部署一个ROOT.war,并试图设置一个特定于它的环境variables,即可以从Servlet.init(config)中的System.getenv()访问。

根据文档( http://tomcat.apache.org/tomcat-6.0-doc/config/context.html ),我可以在conf / Catalina / localhost / ROOT.xml的Context元素中指定。 我已经创build了这些内容:

<Context> <Environment name="FOO" value="bar" type="java.lang.String" override="false"/> </Context> 

我像往常一样部署webapp,即webapps / ROOT.war。

Servlet.init(config)中的Server.getenv(“FOO”)仍然返回null。 我错过了什么?

从Tomcat用户邮件列表:

从Tomcat文档中不完全清楚,但是您不创build可以使用System.getenv检索的环境variables。 相反,您正在将条目放入JNDI上下文中。

你会想要像这样检索它们:

//获取我们的环境命名上下文Context initCtx = new InitialContext(); Context envCtx =(Context)initCtx.lookup(“java:comp / env”);

String FOO =(String)envCtx.lookup(“FOO”);

//现在FOO应该有你的值“bar”

JNDI资源的文档可以在这里find: http : //tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html

希望有帮助, – – 时刻