2012-12-04 19 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文件。 –

相关问题