0

EAR プロジェクトがあり、getContextClassLoader.getResource. しかし、WAR モジュールと EJB (.jar) モジュールに同じ名前 (ただし内容は異なる) のリソースがある場合、Web モジュールからではなく、常に EJB からリソースを取得します (EJB からの同じ名前のリソースは、.WAR からのリソースをオーバーライドします)。

これはcontext classloaderに関連していますか?

UPD : プロジェクト構造:

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

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

webapp.warと に同じejb.jarファイル ( my.properties) があります。

しかし、私が使用するとき

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

fromwebapp.war私はいつもMy.propertiesfrom から取得しEJB.JARます。

4

1 に答える 1

0

ear のクラスパスまたは依存関係を、WEBAPP.WARに続いてEJB.JARに変更する必要があります。

My.propertiesEAR用のClassLoaderを使用し、そのクラスパスを使用してリソースを検索しようとし、最初にEJB.jarで依存関係を見つけてそのファイルを使用するContext Class Loaderを使用しているときのように見えます。

そのため、順序を WEBAPP.war に変更してから EJB.jar に変更する必要があります。

于 2012-12-04T11:42:12.120 に答える