为 Tomcat 6 Servlet 设置环境变量

为 Tomcat 6 Servlet 设置环境变量

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

根据文档(http://tomcat.apache.org/tomcat-6.0-doc/config/context.html),我可以在 conf/Catalina/localhost/ROOT.xml 中的 Context 元素中指定这一点。我使用以下内容创建了它:

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

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

Servlet.init(config) 中的 Server.getenv("FOO") 仍返回 null。我遗漏了什么?

答案1

来自 Tomcat 用户邮件列表:

Tomcat 文档中没有完全说明这一点,但是您没有创建可以使用 System.getenv 检索的环境变量。相反,您将条目放入 JNDI 上下文中。

您将需要像这样检索它们:

// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

String FOO = (String)envCtx.lookup("FOO");

// now FOO should have the value "bar" from your <Environment>

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

希望有帮助,

  • -克里斯

相关内容