2009-11-23 67 views
0

我目前正在開發基於Struts2的Web應用程序&在公司製作的框架中將Spring組件與一組層庫結合在一起。在eclipse中強制使用Tomcat 5.5的類路徑優先級

這些庫通過嵌入到提供的jar文件中的blahblah.xml文件來公開一組spring bean。

我需要用我自己的類來替換通過這樣的bean聲明公開的一些實現類,以便在提供的處理中添加額外的東西。

人誰設計的公司製造的框架選擇暴露blahblah.xml文件通過特定的監聽器&的WebApplicationContext定義這樣configLocations到春季:

ConfigurableWebApplicationContext cwac = new XmlWebApplicationContext(); 
cwac.setConfigLocation("classpath*:<somePath>/blahblah.xml"); 

目前我看到的只有一個方法來實現(但也許我錯了,請讓我知道!):在僞造的目錄結構中將blahblah.xml的副本從jar中移出,修改副本中某些bean的實現類,然後將該文件夾其中包含webapp類路徑中的假結構以便「隱藏」原始結構。

這就是我在Eclipse 5.0中用於開發的TOMCAT 5.5的類路徑中能夠強制優先的問題。

儘管我在eclipse 3.3下的Tomcat服務器啓動配置的Classpath選項卡中添加了包含假結構的目錄,但注入的對象仍然是原來的而不是我的。 我想我的文件夾放在TOMCAT運行的類路徑中的WEB-INF/lib罐子裏,但我沒辦法抓住它。

任何想法?

回答

1

Tomcat的用於web應用類加載優先級是大致如下:第一引導/系統(JRE/lib,然後server.loader),則web應用程序庫(WEB-INF/classes,然後WEB-INF/lib),則公共庫(common.loader,然後Tomcat/lib),最後webapp共享庫(shared.loader)。

我會先將此文件添加到WEB-INF/classes(在Eclipse中:只是將文件放入src文件夾中,它將被自動考慮在內)。

請注意,如果不使用某些重定製的類加載器,則無法控制類加載優先級。你只需要知道默認的類加載順序並明智地使用它。

+0

Wooow它完美的作品;把我的假結構放在src文件夾中完成這項工作!非常感謝你。 – 2009-11-24 17:20:18

+0

不客氣。 – BalusC 2009-11-24 17:23:35