我有一个jboss Web服务正在获取错误的初始上下文。我希望它使用服务根目录中java.naming.factory.initial
的{{1}}而不是jboss jndi.properties
中jndi.properties
的{{1}}。在ant构建文件中,我将NamingContextFactory
放在类路径中,并确保将其复制到存档,但服务仍然会获得jndi.properties
。如何判断使用哪个NamingContextFactory
以便正确设置工厂?
不幸的情况是我有一个第三方jar我必须使用它希望它的初始上下文工厂是在其打包的jndi.properties
文件中指定的那个,但是当我在jboss中运行它时它得到{{1 }}。如果没有破坏,我无法更改jboss jndi.properties
文件。
答案 0 :(得分:2)
如果类路径的根目录中有多个jndi.properties
文件,那么InitialContext
会尝试合并这两个文件,但哪一个获胜或多或少都是偶然的。
如果你想确定,那么InitialContext
有一个带有Hashtable
属性的构造函数,你可以在其中明确指定它们。在这种情况下,这比通过jndi.properties
隐式加载更可取。您始终可以将目标jndi.properties
加载到Properties
对象(Hashtable
的子类)中,并将其传递给构造函数。