2015-12-08 2 views
0

Я в процессе обновления JavaLite ActiveJDBC от EHCache 2.x до v 3.x. Похоже, API-интерфейсы сильно изменились, и я могу найти эквиваленты того, что мне нужно в v 3.x, за исключением одного: Как очистить все кеши? Например, в версии 2.x я мог бы сделать это:Как очистить EHCache?

net.sf.ehcache.CacheManager cacheManager = net.sf.ehcache.CacheManager.create(); 
//... code 
cacheManager.removalAll(); 

Как это сделать в EHCache 3?

ответ

1

Уточнение: CacheManager.removalAll() - это метод, который не только очищает кеши, но и полностью удаляет их. Он устарел в последней версии и заменен на CacheManager.removeAllCaches(), чтобы лучше указать его цель. Кэши больше не будут жить и больше не могут быть использованы, если вы хотите сохранить ссылку на одну из них.

Эквивалент в Ehcache 3 должен был бы вызывать: CacheManager.close(), который закроет все кеши, а затем освободит все ресурсы, хранящиеся в CacheManager.

Трудно заключить разрыв между тем, что я понимаю заявленной целью (очистить данные от кешей) и используемым методом Ehcache 2 (удалить все кеши), если Ehcache 3 удовлетворяет его.

+0

Спасибо за ответ. Итак, в версии 3 я бы: 'cacheManager.close();' чтобы освободить все кеши. Должен ли я затем потерять ссылку на этот объект? Кроме того, если мне нужно воссоздать его, я бы тогда создал новый экземпляр CacheManager, правильно? – ipolevoy

+0

Нет, в 3 жизненный цикл ясен и правильно обрабатывается. Вы можете просто вызвать CacheManager.init() для его повторного включения, он также будет повторно инициализировать все настроенные в нем кэши. –

+0

Итак, метод 'CacheManager.init()' также очистит существующие кэши? – ipolevoy

 Смежные вопросы

  • Нет связанных вопросов^_^