背景と問題点
ehcache2(2.10.4)を初めて使ったのですが、デフォルトの設定が「ディスク保存有効」になっていてちょっとはまりました。
何か問題かというか、この設定が有効の場合、オブジェクトがシリアル化可能(Serializable)でない場合は、キャッシュに失敗します。失敗しても、実行時例外は送出されず、適切なログ出力設定をしていないとログも出力されないので何がおきているのか理解するまでに時間を要しました。
対策
今回のユースケースではオンメモリキャッシュが使えればよく、ディスク保存は不要(メモリが不足したら所定のルール~既定はLRU~で廃棄)なので、ディスク保存を無効化したかったのですが、若干手間取りました。
無効化手順
公式ドキュメント(Ehcache - Turning off DiskStores)では、「コメント化すればOK(comment out the diskStore element in ehcache.xml.
)」と書いてあるので、ehcache.xmlに記載していた<diskStore>
要素の定義を削除しました。
が、これだとデフォルトの設定(=diskStore有効)が効いてしまいます。
結局、path
属性を空にすることで意図した結果(シリアル化できないオブジェクトのキャッシュ可能)が得られました。
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path=""/>
</ehcache>