2014-01-13 4 views
1

Я разрабатываю новый компонент в папке ofbiz.Конфликт с разворачиванием/кешем Ofbiz

Что касается рабочего процесса, когда новые изменения сделаны в классах .java, я запускаю команду компонента ant build с другого терминала.

После завершения перестройки журнал сообщает мне, что Controller перемонтировал мой компонент. Однако внесенные изменения не отражают в приложении.

Однако есть один случай, когда классы правильно перезагружены, а поведение приложения соответствует изменениям. Если класс никогда не был загружен ClassLoader (он никогда не был доступен), модификации видны. Это заставило меня подумать, что классы/jar кэшируются где-то в приложении, и новые изменения не принимаются во внимание (таким образом, полностью преодолевая идею горячего развертывания в первую очередь).

Это настоящая проблема, или я пропустил что-то еще. Есть ли способ отключить это кэширование?

ответ

0

OFBiz использует загрузчик классов кэширования, что, вероятно, вы используете (см. CachedClassLoader.java). Однако в зависимости от того, как вы работаете в OFBiz, могут возникнуть другие проблемы с загрузчиком базового класса.

Каталог горячего развертывания в OFBiz не является истинным горячим развертыванием, это скорее автоматическое развертывание для каталогов компонентов в нем. В общем, с OFBiz большинство ресурсов больше похожи на скрипт, и, как правило, лучше писать код в сценариях Groovy или simple-method, а затем они будут обновляться автоматически (с настройками кеша по умолчанию, с настройками кеша производства, для которых требуется ручной кеш-память в веб-браузере webapp).

В зависимости от того, как вы развертываете перезагрузку OFBiz, некоторые скомпилированные классы не будут работать вообще, потому что они распределяются между webapps, поэтому вы смотрите на перезагрузку ресурсов classpath, находящихся за пределами webapp. Это сильно отличается от идеи быстрого развертывания простых webapps или файлов WAR с изолированным загрузчиком классов.