Я предполагаю, что все кэшированные элементы находятся в DiskStore, и вы хотите, чтобы они находились в памяти сразу после запуска приложения. В любом случае использование BootStrapCacheLoader и BootstrapCacheLoaderFactory должно быть полезным.
Я просто даю представление, куда мы загружаем DiskStore в память после запуска приложения.
Вы можете реализовать BootstrapCacheLoader, который будет загружать элементы кеша, как показано ниже. Определение метода BootstrapCacheLoader.load(кэш Ehcache) может быть
//CustomBootstrapCacheLoader implements BootstrapCacheLoader
List<?> keys = cache.getKeys();
if ((keys == null) || keys.isEmpty())
{
return;
}
for (Object key : keys)
{
Element el = cache.getQuiet(key);
cache.removeQuiet(key);
cache.putQuiet(el);
}
Вышеупомянутый метод считывает элемент из DiskCache, удаляет его и возвращает обратно, чтобы он оставался в памяти, а версия диска удалялась.
Реализуйте BootstrapCacheLoaderFactory, чтобы
public class CustomBootstrapCacheLoaderFactory extends BootstrapCacheLoaderFactor
{
.
.
@Override
public BootstrapCacheLoader createBootstrapCacheLoader(Properties properties)
{
CustomBootstrapCacheLoader loader = new CustomBootstrapCacheLoader();
loader.setAsynchronous(getAsyncFromProperty(properties));
return loader;
}
.
.
}
Вы можете определить конфигурацию кеша, как показано ниже, с помощью CustomBootstrapCacheLoaderFactory, как показано ниже.
<cache
name="DummyCacheEl"
maxElementsInMemory="3500"
eternal="true"
overflowToDisk="false"
diskPersistent="true"
memoryStoreEvictionPolicy="LRU">
<bootstrapCacheLoaderFactory class="CustomBootstrapCacheLoaderFactory" properties="async=true"/>
</cache>
person
Chandra
schedule
09.05.2012