2009-11-29 123 views
2

我想這很簡單 - 但我無法找到正確的搜索條件組合來獲得答案。如果我有一個多模塊應用程序,我怎麼在模塊A豆提供給模塊B.豆從其他模塊使用彈簧豆?

項目設置看起來有點像這樣:

project.ear/module-a.jar/resources/beans.xml 
project.ear/module-a.jar/java/foo/bar.class 
project.ear/module-b.war/java/foo/barFactory.class 

的beans.xml文件無法通過類路徑或文件系統訪問。有沒有辦法做到這一點?或者我應該以不同的方式做所有事情

回答

1

我認爲比上面提到的這三位skaffman更容易解決。

  1. 放入一個模塊b.war/WEB-INF/web.xml中這些行:

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

    classpath*:/resources/beans.xml

    </param-value>

    </context-param>

    這能使來自任何一塊類路徑的每加載/resources/beans.xml(即任何類路徑上的jar),這對你來說已經足夠了。

  2. 您應該加載一個module-a.jar作爲module-b.war(module-a.jar駐留在module-b.war/WEB-INF/lib位置)的一部分。

我已經在我的項目非常相似粒度:企業logic.jar其bean的配置和frontend.war它使用通過REF =‘someBean’以前的一個配置的bean。有用。

3

您的應用程序服務器可能對您的EAR中的每個模塊使用不同的類加載器,從而阻止一個模塊在另一個模塊中看到資源。這是JavaEE類加載器的默認行爲。

您可能需要

  • 重新配置應用程序服務器使用在整個EAR「統一」的類加載器(這是高度應用服務器特有的,但偉大的,如果你能得到它的工作),或
  • 將所有內容打包成一個模塊(例如,您的WAR可以包含所有內容),或者爲WAR模塊聲明一個正式清單,允許它聲明其對各個JAR模塊的依賴關係,這應該允許WAR查看資源在JAR模塊中。