Регистрация Ehcache получить запросы - PullRequest
1 голос
/ 31 октября 2011

Я пытаюсь написать класс, который бы отслеживал все запросы Ehcache GET. Для зацикленной производительности - это будет включено только для целей отладки.

Я вижу следующие три варианта:

1) написать реализацию net.sf.ehcache.event.CacheEventListener. Это был бы мой предпочтительный способ, но он имеет только PUT / REMOVE / etc. крючки. Нет ПОЛУЧИТЬ. Doh!

2) написать реализацию net.sf.ehcache.statistics.CacheUsageListener. Проблема с этим подходом состоит в том, что этот интерфейс больше предназначен для статистики и даже не предоставляет доступа к таким вещам, как текущий ключ / элемент кэша, поэтому мне пришлось бы совершать ужасные хаки (подумайте: совместное использование состояния через ThreadLocal), чтобы добиться того, что Я хочу. Тьфу!

3) написать оболочку Ehcache и направить через нее все запросы. Это довольно болезненно, так как мы используем Ehcache по-разному (с Hibernate и без него), что означает, что мне придется писать разные оболочки для всех этих разных случаев. Добавляет трудности обслуживания и не совсем точен, так как невозможно узнать, например, попала ли операция GET в устаревшую запись или нет.

Есть ли другие варианты, которые я пропустил?

1 Ответ

1 голос
/ 01 ноября 2011

Четвертый вариант - включить ведение журнала уровня отладки для net.sf.ehcache.Cache и включить статистику кеша для кешей, для которых вы хотите отслеживать информацию. Затем вы получите «Cache:» + getName () + «попадание в хранилище для« + key »или« configuration.getName () + «попадание в кеш, но элемент истек») в лог-операторах ... Так же и для промахов.

...