9.1. CacheLoaderを使用したローカルキャッシュ

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"の値が読み込まれたことを確認できます。