Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat中的JNDI配置_Java_Tomcat_Tomcat7_Jndi - Fatal编程技术网

Java Tomcat中的JNDI配置

Java Tomcat中的JNDI配置,java,tomcat,tomcat7,jndi,Java,Tomcat,Tomcat7,Jndi,我正在尝试在web应用程序中设置JNDI查找,以便在Tomcat7中部署。我在jndi.properties文件中指定了以下属性: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces, java.naming.provider.url=localhost:1199 但是当我获取初始上

我正在尝试在web应用程序中设置JNDI查找,以便在Tomcat7中部署。我在
jndi.properties
文件中指定了以下属性:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces, java.naming.provider.url=localhost:1199


但是当我获取初始上下文并检查其属性时,发现
java.naming.factory.initial
更改为
org.apache.naming.java.JavaURLContextFactory
,并且所有其他属性与
jndi.properties
文件中的属性相同。我不明白为什么这个属性会发生更改?如何防止这种情况并强制tomcat使用我指定的属性?

我认为JNDI属性应该是特定于供应商的,您试图放置的是Jboss JNDI属性,可能已经恢复到特定于tomcat的属性。尽管您可以尝试以编程方式覆盖它们,但可能无法正常工作。

您应该将所有这些内容放入META-INF/context.xml文件中的资源元素中,并通过java:comp/env URL查找该资源。这就是Tomcat试图在这里设置的:一个用于该名称空间的对象工厂。

我认为您应该将您的属性附加到catalina.properties文件中,它位于$Tomcat_home/conf下。

我已经这样做了,通过编程修改了属性,它可以工作,但我的问题是,为什么它们不能直接从jndi.properties工作?因为我编写了一个独立的客户端,它使用jndi.properties,并且运行良好,但是相同的代码和相同的jndi.properties文件在Tomcat中不起作用。虽然我指定了NamingContextFactory,但它将初始上下文工厂更改为JavaURLContextFactory。我也尝试了这一点,它也起了作用。但由于我正在查找远程jndi树,并且我的Tomcat应用程序是一个客户端,我认为在Tomcat中配置资源不是一个好主意。还有一件事是jndi.properties应该工作,无论我在客户端中配置了什么资源,因为我并没有查看客户端的jndi树,而是服务器的jndi树。类似: