2010-03-02 64 views
2

我有一個jboss web服務,它獲取了錯誤的初始上下文。我希望它使用服務根目錄中的jndi.properties中的java.naming.factory.initial,而不是使用NamingContextFactory中的jboss jndi.properties中的那個。在ant構建文件中,我將jndi.properties放在類路徑中,並確保將其複製到存檔中,但該服務仍取而代之獲得NamingContextFactory。我怎麼知道哪個jndi.properties被使用,以便工廠正確設置?在類路徑上排序多個jndi.properties

不幸的情況是,我有一個第三方的jar我必須使用預計其初始上下文工廠將在其包裝jndi.properties文件中指定的,但是當我在JBoss中運行這個它得到NamingContextFactory。我無法更改jboss jndi.properties文件,沒有任何問題。

+0

您可能需要執行一些JBoss類加載操作。 JAR是EAR還是WAR的一部分? – skaffman 2010-03-02 22:44:17

+1

它是EAR的一部分。 – insipid 2010-03-03 13:27:22

回答

2

如果在類路徑的根目錄中有多個jndi.properties文件,那麼InitialContext會嘗試合併這兩個文件,但哪一個文件或多或少都是偶然事件。

如果你想確定,那麼InitialContext有一個構造函數,需要一個Hashtable的屬性,你可以明確地指定它們。在這種情況下,這比通過jndi.properties的隱式加載更可取。您始終可以將您的目標jndi.properties加載到Properties對象(它是Hashtable的子類)中,並將其傳遞給構造函數。

+0

編輯我的帖子,包括我不控制第三方庫的初始上下文請求... :( – insipid 2010-03-02 22:26:36