Ehcache Cache Server + BlockingCache? - PullRequest
       5

Ehcache Cache Server + BlockingCache?

2 голосов
/ 11 февраля 2012

Можно ли использовать Ehcache Cache Server и настроить его на blockingCache?Кажется, я не могу найти, как настроить это в файле ehcache.xml ... только программно.

Ответы [ 2 ]

6 голосов
/ 13 мая 2014

Чтобы использовать BlockingCache в качестве декоратора по умолчанию для вашего кэша через ehcache.xml, сначала вы должны реализовать собственный CacheDecoratorFactory, скажем, DefaultCacheDecoratorFactory:

public class DefaultCacheDecoratorFactory extends CacheDecoratorFactory {
    @Override
    public Ehcache createDecoratedEhcache(Ehcache cache, Properties properties) {
        return new BlockingCache(cache);
    }

    @Override
    public Ehcache createDefaultDecoratedEhcache(Ehcache cache, Properties properties) {
        return new BlockingCache(cache);
    }
}

затем настройте его как часть определения вашего кэша, например:

<cache name="CACHE_NAME" more values here.../>
    <cacheDecoratorFactory class="whatsoever.DefaultCacheDecoratorFactory"/>
</cache>

И использование cacheManager.getEhCache () для доступа к кешу, отличному от cacheManager.getCache (), потому что он возвращает только ноль для вашего оформленного кеша.

1 голос
/ 21 февраля 2012

Вы можете объявить декорированные кэши программно, но также и в конфигурации, см .: http://ehcache.org/documentation/apis/cache-decorators#by-configuration

Вам нужно добавить реализацию net.sf.ehcache.constructs.CacheDecoratorFactory, которая делает то, что вам нужно.Я предполагаю, что в вашем случае он может выполнить какое-либо сопоставление с шаблоном Ehcache, переданным в net.sf.ehcache.constructs.CacheDecoratorFactory # createDecoratedEhcache, и вернуть либо ноль, либо экземпляр кэша, оформленный BlockingCache.

Однако следует предостеречь, чтобы при пропущенных действиях вы всегда возвращали (даже ноль) в кеш, иначе блокировка записи для этого ключа / сегмента не будет разблокирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...