1

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

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

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

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

这是实际问题还是我错过了其他东西。有没有办法禁用这种缓存?

4

1 回答 1

0

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

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

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

于 2014-01-15T20:28:13.770 回答