Java 类路径上多个jndi.properties的排序

Java 类路径上多个jndi.properties的排序,java,jboss,jndi,Java,Jboss,Jndi,我有一个jboss web服务,它获取了错误的初始上下文。我希望它使用服务根目录中的jndi.properties中的java.naming.factory.initial,而不是jbossjndi.properties中的NamingContextFactory中的。在ant构建文件中,我将jndi.properties放在类路径中,并确保它复制到归档文件中,但服务仍然获得NamingContextFactory。如何判断使用了哪个jndi.properties,以便正确设置工厂 不幸的情况是

我有一个jboss web服务,它获取了错误的初始上下文。我希望它使用服务根目录中的
jndi.properties
中的
java.naming.factory.initial
,而不是jboss
jndi.properties中的
NamingContextFactory
中的
。在ant构建文件中,我将
jndi.properties
放在类路径中,并确保它复制到归档文件中,但服务仍然获得
NamingContextFactory
。如何判断使用了哪个
jndi.properties
,以便正确设置工厂


不幸的情况是,我必须使用一个第三方jar,它期望它的初始上下文工厂是在其打包的
jndi.properties
文件中指定的,但是当我在jboss中运行它时,它会得到
NamingContextFactory
。我无法更改jboss
jndi.properties
文件而不破坏所有内容。

如果类路径的根目录中有多个
jndi.properties
文件,则
InitialContext
将尝试合并这两个文件,但哪一个获胜多少是个机会


如果您想确保,那么
InitialContext
有一个构造函数,它接受属性的
哈希表,您可以在其中显式指定它们。在这种情况下,这比通过
jndi.properties
隐式加载更可取。您始终可以将目标
jndi.properties
加载到
properties
对象(它是
哈希表的子类)
,并将其传递给构造函数。

编辑了我的帖子,其中包括我不控制第三方库所做的初始上下文请求…:(您可能需要执行一些JBoss类加载练习。JAR是耳朵的一部分还是战争的一部分?