Play FrameworkではデフォルトのキャッシュとしてEhcacheを使用しています。
ただ、設定の値などを確認するにはいくつかのステップが必要となります。
そのための手順をまとめてみました。
なお、今回はPlay Framework 2.0.x(Java)で確認をしています。
app/Global.java
作成したCacheManagerをManagementService#registerMBeansに登録する必要があります。
Global.javaのonStartあたりに追加しておきます。
参考
- http://ehcache.org/generated/2.9.0/html/ehc-all/#page/Ehcache_Documentation_Set%2Fco-jmx_jconsole_example.html%23
- http://d.hatena.ne.jp/Kazuhira/20130811/1376214898
- http://stackoverflow.com/questions/17682536/how-to-clear-all-cache-in-play-framework-2-1
import net.sf.ehcache.CacheManager; import net.sf.ehcache.management.ManagementService; import play.api.cache.EhCachePlugin; public class Global extends GlobalSettings { @Override public void onStart(Application app) { CacheManager cacheManager = Play.application().plugin(EhCachePlugin.class).manager(); MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); ManagementService.registerMBeans( cacheManager, mBeanServer, false, false, true, true); }
http://d.hatena.ne.jp/Kazuhira/20130811/1376214898
にあるように、registerMBeansのbooleanの4つの引数は
- CacheManagerをMBeanとして登録する
- CacheをMBeanとして登録する
- Cacheの設定情報をMBeanとして登録する
- Cacheの統計情報をMBeanとして登録する
となります。今回は設定情報と統計情報のみを有効にしました。
PlayのCacheManagerの呼び方は
http://stackoverflow.com/questions/17682536/how-to-clear-all-cache-in-play-framework-2-1
を参考にしています。
Playのアプリケーションを起動しています。
jconsole
以下のコマンドでjconsoleを起動します。クラスパスにehcache-coreのパスを追加しています。
export JAVA_HOME=`/usr/libexec/java_home -v "1.6"` PATH=${JAVA_HOME}/bin:${PATH} jconsole -J-Djava.class.path=$JAVA_HOME/lib/jconsole.jar:$JAVA_HOME/lib/tools.jar:/play-2.0.4/repository/local/net.sf.ehcache/ehcache-core/2.5.0/jars/ehcache-core.jar
jconsoleが起動したら、
sbt-launch.jar run
を選択してMBeanのタブを開くとnet.sf.ehcacheが表示されているので、そこからCacheの設定情報及び統計情報が確認できます。
Play FrameworkのCache設定を上書きする方法
さて、設定を上書きする方法ですが、
conf/ehcache.xmlに以下の様なファイルを配置します。(下のパラメータ値はPlay Frameworkのデフォルト設定値です)
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false"> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> </ehcache>
ちなみに以下の様な設定にするとtimeToIdleSecondsおよびtimeToLiveSecondsがEhcacheのデフォルト値「0」の設定に上書きされるので注意が必要です。
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false"> <defaultCache maxElementsInMemory="1000000" /> </ehcache>
参考
Play FrameworkにおけるEhcacheの設定
- http://blog.mwsoft.jp/article/70589384.html
- http://qiita.com/rabitarochan/items/8db2b343c2c82c4ca892
- http://treeapps.hatenablog.com/entry/20110908/p1
- https://gist.github.com/oscarrenalias/5063249
- http://alvinalexander.com/java/jwarehouse/play-framework-2.3/framework/src/play-cache/src/main/resources/ehcache-default.xml.shtml
- https://lihaimei.wordpress.com/2014/11/03/ehcache-configuration-in-play-framework/
- http://qiita.com/opengl-8080/items/f42664769740674176ff
- http://ehcache.org/documentation/2.6/configuration/cache-size#local-heap
- http://alvinalexander.com/java/jwarehouse/play-framework-2.3/framework/src/play-cache/src/main/resources/ehcache-default.xml.shtml
各パラメータの内容
- http://news.mynavi.jp/articles/2010/05/19/ehcache/
- http://shrkw.hatenablog.com/entry/20091002/1254485293
- http://takezoe.hatenablog.com/entry/20100516/p1
Ehcacheの統計情報を、JMXで取得する
- http://d.hatena.ne.jp/Kazuhira/20130811/1376214898
- http://ehcache.org/generated/2.9.0/html/ehc-all/#page/Ehcache_Documentation_Set%2Fco-jmx_jconsole_example.html%23