キャッシュされたすべての要素がDiskStoreにあり、アプリケーションが起動するとすぐにそれらをメモリ内に配置することを想定しています。いずれにせよ、BootStrapCacheLoaderとBootstrapCacheLoaderFactoryを使用すると役立つはずです。
アプリケーションの起動後にDiskStoreをメモリにロードする場所を示しています。
以下のようにキャッシュ要素をロードするBootstrapCacheLoaderを実装できます。メソッドBootstrapCacheLoader.load(Ehcache cache)の定義は次のようになります。
//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>