在classpath上排序多个jndi.properties

时间:2010-03-02 22:08:31

标签: java jboss jndi

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

不幸的情况是我有一个第三方jar我必须使用它希望它的初始上下文工厂是在其打包的jndi.properties文件中指定的那个,但是当我在jboss中运行它时它得到{{1 }}。如果没有破坏,我无法更改jboss jndi.properties文件。

1 个答案:

答案 0 :(得分:2)

如果类路径的根目录中有多个jndi.properties文件,那么InitialContext会尝试合并这两个文件,但哪一个获胜或多或少都是偶然的。

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