Java Tomcat JNDI查找问题

Java Tomcat JNDI查找问题,java,tomcat,jndi,Java,Tomcat,Jndi,我试图在Tomcat中读取属性值。我的计划是使用System.getProperty(“LOGPATH”)访问该值,其中LOGPATH是我的属性名称。但是,我没有找到在Tomcat中设置系统属性值的方法 有没有办法在Tomcat中设置系统属性 由于我没有得到任何关于设置系统属性的文档,所以我考虑使用JNDI访问该值。因此,我添加了以下条目 <Environment name="LOGPATH" type="java.lang.String" value="c:/temp" /> 当

我试图在Tomcat中读取属性值。我的计划是使用
System.getProperty(“LOGPATH”)
访问该值,其中
LOGPATH
是我的属性名称。但是,我没有找到在Tomcat中设置系统属性值的方法

有没有办法在Tomcat中设置系统属性

由于我没有得到任何关于设置系统属性的文档,所以我考虑使用JNDI访问该值。因此,我添加了以下条目

<Environment name="LOGPATH" type="java.lang.String" value="c:/temp" />
当我执行上述代码时,我得到了以下错误消息

javax.servlet.ServletException: Name LOGPATH is not bound in this Context
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
然后我在web.xml中添加了一个条目

 <resource-env-ref>
     <resource-env-ref-name>LOGPATH</resource-env-ref-name>
 <resource-env-ref-type>java.lang.String</resource-env-ref-type>
 </resource-env-ref>

我现在做错了什么?谢谢您的帮助。

在web.xml中将其作为init参数,并通过ServetContext访问它。

我在conf/Catalina/localhost下的上下文文件中编码了我的环境字符串,并将其命名为与我的webapp相同。然后我使用Spring的JndiObjectFactoryBean来检索它。希望这对您有所帮助。

您还需要在web应用程序的上下文中提供一个资源链接。上下文通常放在META-INF/context.xml中,如下所示:

<Context>
    <Resource name="LOGPATH" global="LOGPATH" type="java.lang.String" />
</Context>

请注意,所有web应用程序都可以使用系统属性,其中每个web应用程序都可以控制as JNDI条目。

我不想这样做,因为每次部署时,它都会迫使我更改/编辑每个环境的web应用程序。
 <resource-env-ref>
     <resource-env-ref-name>LOGPATH</resource-env-ref-name>
 <resource-env-ref-type>java.lang.String</resource-env-ref-type>
 </resource-env-ref>
javax.naming.NamingException: Cannot create resource instance
org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceEnvFactory.java:99)
<Context>
    <Resource name="LOGPATH" global="LOGPATH" type="java.lang.String" />
</Context>
LOGPATH=C:/temp