当网络应用程序也是默认网络应用程序时,如何在网络应用程序的 context.xml 中设置上下文变量?

How set context variable in a web app's context.xml when it's also the default web app?

我有一个 WAR,我在 Tomcat 的 server.xml:

中将其设置为默认网络应用程序

里面Server.xml

<Host...>
    <Context docBase="mywar" path="" />

此外,我有一个 META-INF/context.xml 文件,我在其中设置了一个环境变量。

<?xml version="1.0" encoding="utf-8"?>
<Context debug="0" reloadable="true">
    <Environment
            name="my.name"
            type="java.lang.String"
            value="donrhummy"
    />
</Context> 

但是它抛出异常 javax.naming.NameNotFoundException: Name my.name is not bound in this Context

如何在我的应用程序中获取该上下文变量?

注意:当我转到 http://localhost/mywar

时该变量存在

我能找到的唯一解决方案是:

  1. 将我的 WAR 重命名为 ROOT.war(区分大小写)
  2. 从 server.xml
  3. 中删除 <Context...>

Tomcat 会将其视为根 WAR(即“/”路径)并让它使用它自己的 META-INF 目录的上下文。