9.1. CacheLoaderを使用したローカルキャッシュ
このデモではCacheLoaderを使用したローカルなTreeCacheAopをお見せします。 POJOをキャッシュに挿入すると、その POJOが透過的にCacheLoader によって保存ブされます。
これを実行するには、jboss-cache/output/etc/META-INF/oodb-service.xml
を変更する必要があります。 CacheLoaderConfig
を変更して有効なディレクトリを指定してください(無ければ作ってください)。
<attribute name="CacheLoaderConfig"> location=c:\\tmp\\oodb </attribute>
その後、beanshell を起動してoodb.bsh
を読み込みます。キャッシュからPOJOを生成あるいは取得するために、既にoodb.bsh
はコード含んでいることに留意してください。自分でPersonインスタンスを生成すると決めたときには、それらをコメントアウトすることを忘れないでください。
bela@laptop /cygdrive/c/jboss-cache $ ./runShellDemo.sh BeanShell 1.3.0 - by Pat Niemeyer (pat@pat.net) bsh % sourceRelative("oodb.bsh"); interceptor chain is: class org.jboss.cache.interceptors.CallInterceptor class org.jboss.cache.interceptors.CacheLoaderInterceptor class org.jboss.cache.interceptors.TransactionInterceptor <null> bsh %
次に、Personインスタンスを生成し、addressや他のフィールドもセットします。
bsh % p=new Person(); <name=null, age=0, hobbies=, address=null, skills=null, languages=null> bsh % p.age=3; <3> bsh % p.name="Michelle"; <Michelle> bsh % addr=new Address(); <street=null, city=null, zip=0> bsh % addr.city="San Jose"; <San Jose> bsh % addr.zip=95124; <95124> bsh % addr.street="1704 Almond Blossom Lane"; <1704 Almond Blossom Lane> bsh % p.setAddress(addr); bsh % tree.putObject("/person/me", p); bsh % p; <name=Michelle, age=3, hobbies=, address=street=1704 Almond Blossom Lane, city=San Jose, zip=95124, skills=null, languages=null> bsh %
そのフィールドとサブオブジェクトのすべてを持つPerson
オブジェクトは保存されました。beanshellを終了して再起動してみましょう。この時点で生成したPerson
インスタンスは"p"と名付けられたので、またそれを取得することが可能です。
bela@laptop /cygdrive/c/jboss-cache $ ./runShellDemo.sh BeanShell 1.3.0 - by Pat Niemeyer (pat@pat.net) bsh % sourceRelative("oodb.bsh"); interceptor chain is: class org.jboss.cache.interceptors.CallInterceptor class org.jboss.cache.interceptors.CacheLoaderInterceptor class org.jboss.cache.interceptors.TransactionInterceptor <null> bsh % tree; </>
ここで興味深い点は、キャッシュは最初の時点では空("/")であったということです。"p"をロードして初めて、それは生成されました(遅延ロード)。以前保存したデータストアから"p"の値が読み込まれたことを確認できます。