当网络应用程序也是默认网络应用程序时,如何在网络应用程序的 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
时该变量存在
我能找到的唯一解决方案是:
- 将我的 WAR 重命名为
ROOT.war
(区分大小写)
- 从 server.xml
中删除 <Context...>
Tomcat 会将其视为根 WAR(即“/”路径)并让它使用它自己的 META-INF
目录的上下文。
我有一个 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
时该变量存在我能找到的唯一解决方案是:
- 将我的 WAR 重命名为
ROOT.war
(区分大小写) - 从 server.xml 中删除
<Context...>
Tomcat 会将其视为根 WAR(即“/”路径)并让它使用它自己的 META-INF
目录的上下文。