Ofbiz热部署/缓存冲突

时间:2014-01-13 07:41:20

标签: ofbiz hotdeploy

我正在thebiz的hot-deploy文件夹中开发一个新组件。

关于工作流程,当在.java类中进行新的修改时,我从另一个终端运行组件的ant build命令。

重建完成后,日志会通知我Controller已重新装入我的组件。但是,所做的更改并未反映在应用程序中。

但是,有一种情况是正确地重新加载类并且应用程序行为符合修改。如果该类从未被ClassLoader加载(它从未被访问过),则修改是可见的。这让我认为类/ jar被缓存在应用程序的某个地方并且没有考虑新的更改(因此首先完全违背了热部署的想法)。

这是实际问题还是我遗漏了别的东西。有没有办法禁用此缓存?

1 个答案:

答案 0 :(得分:0)

OFBiz确实使用了缓存类加载器,这可能是你遇到的(参见CachedClassLoader.java)。但是,根据您运行OFBiz的方式,底层类加载器可能存在其他问题。

OFBiz中的热部署目录不是真正的热部署,它更多的是自动部署其中的组件目录。通常使用OFBiz,大多数资源都更像脚本,通常更好的是用Groovy或简单方法脚本编写代码,然后它们会自动更新(使用默认缓存设置,生产缓存设置需要手动缓存清除在webtools webapp中。)

根据您部署OFBiz的方式,重新加载某些已编译的类通常不会起作用,因为它们在Web应用程序之间共享,因此您正在查看重新加载Web应用程序之外的类路径资源。这与使用隔离类加载器的热部署简单webapps或WAR文件的想法非常不同。