2012-12-04 21 views
0

我有一個EAR項目,我使用getContextClassLoader.getResource加載資源。但是,當我的WAR模塊和EJB(.jar)模塊具有相同名稱(但內容不同)的資源時,我總是從EJB獲取資源,而不是從Web模塊(與EJB相同名稱的資源覆蓋.WAR中的資源)獲取資源。有多少上下文類加載器有一個EAR?

這個東西是否與上下文類加載器有關?

UPD: 項目結構:

-EAR 
    -- WEBAPP.WAR 
        ---classes 
          ----my.properties 

    -- EJB.JAR 
        ---classes 
          ---- my.properties 

webapp.warejb.jar我有相同的文件(my.properties)。

但是當我使用

Thread.currentThread().getContextClassLoader().getResourceAsStream("My.properties")

webapp.war我總是從EJB.JARMy.properties

+0

您正在使用哪個應用程序服務器? –

+0

@NarendraPathai WAS 7 – MyTitle

+0

請問您可以添加項目結構嗎?否則很難評論確切的問題。並使用'getContextClassLoader.getResouce()'' –

回答

0

您將有耳朵的類路徑或依賴改爲WEBAPP.WAR其次EJB.JAR

由於它看起來像當您使用使用ClassLoader for EAR的Context Class Loader並嘗試使用其Classpath查找資源My.properties並首先在EJB.jar中查找依賴關係並因此使用其文件。

因此,您必須將訂單更改爲WEBAPP.war,然後將EJB.jar更改爲

+0

您是否嘗試更新ear文件的類路徑? –

+0

如果在EAR的META-INF目錄中有一個MANIFEST.MF文件,請將其更新爲包含'Class-Path:webapp.war ejb.jar'。如果不存在,則在META-INF目錄中創建一個MANIFEST.MF文件。 –

相關問題