我有一个获取错误初始上下文的 jboss 网络服务。我希望它使用服务根目录中 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
有一个构造函数,该构造函数采用 Hashtable
属性,您可以在其中明确指定它们。在这种情况下,这比通过 jndi.properties
进行隐式加载更可取。您始终可以将目标 jndi.properties
加载到 Properties
对象(它是 Hashtable
的子类),并将其传递给构造函数。
关于java - 类路径上多个 jndi.properties 的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367198/