2014-01-13 52 views
1

我正在開發一個新的組件在ofbiz的hot-deploy文件夾中。Ofbiz熱部署/緩存衝突

關於工作流程,當在.java類中進行新的修改時,我從其他終端運行組件的ant build命令。

重建完成後,日誌告訴我,Controller已重新安裝了我的組件。但是,所作的更改未反映在應用程序中。

但是,有一種情況是類正確重新加載並且應用程序行爲符合修改。如果該類從未由ClassLoader加載(它從未被訪問過),修改是可見的。這導致我認爲類/ jar被緩存在應用程序的某個地方,並且沒有考慮新的變化(因此完全擊敗了熱部署的想法)。

這是實際的問題還是我錯過了別的東西。有沒有辦法禁用此緩存?

回答

0

OFBiz確實使用了一個緩存類加載器,這可能是您正在運行的內容(請參閱CachedClassLoader.java)。但是,根據您運行OFBiz的方式,底層類加載器可能存在其他問題。

OFBiz中的熱部署目錄不是真正的熱部署,它更像是對其中組件目錄的自動部署。通常對於OFBiz來說,大多數資源更像腳本,通常在Groovy或簡單方法腳本中編寫代碼會更好,然後它們會自動更新(使用默認緩存設置,並且需要生產緩存設置,它們需要手動緩存清除在webtools webapp中)。

根據部署OFBiz重新加載的方式,某些編譯類通常不起作用,因爲它們是在webapps之間共享的,因此您正在尋找重新加載webapp外部的classpath資源。這與使用隔離類加載器熱部署簡單webapps或WAR文件的想法完全不同。