第7章 PojoCache

第7章 PojoCache

シェルを立ち上げたら、シェルスクリプトを実行するためにsourceRelative("aop.bsh");とタイプします。aop.bsh はキャッシュのインスタンス化、設定、各エントリの生成のステップを説明してくれます。 以下はコードの一部です。

import org.jboss.cache.PropertyConfigurator;
         import org.jboss.cache.aop.PojoCache;
         import org.jboss.cache.aop.test.Person;
         import org.jboss.cache.aop.test.Address;
         show(); // bean shellをverbose モードでmode for bean shell
         PojoCache tree = new PojoCache();
         PropertyConfigurator config = new PropertyConfigurator(); // tree cacheの設定.
         config.configure(tree, "META-INF/replSync-service.xml");
         Person joe = new Person(); // joeという名のPersonオブジェクトをインスタンス化
         joe.setName("Joe Black");
         joe.setAge(31);
         Address addr = new Address(); // addという名のAddressオブジェクトをインスタンス化
         addr.setCity("Sunnyvale");
         addr.setStreet("123 Albert Ave");
         addr.setZip(94086); joe.setAddress(addr); // address参照をセット
         tree.startService(); // tree cacheを起動
         tree.putObject("/aop/joe", joe); 
         // aop 適用オブジェクト(とそのサブオブジェクト)をキャッシュに追加します。
         // aop 適用されたので、get/set メソッドの呼び出しは自動的に         // キャッシュの内容に反映されます。
         joe.setAge(41);
      

オブジェクト(および、その依存オブジェクト)をキャッシュに入れるために必要なAPIはputObjectであることに留意ください。 です。 2つ目のウィンドウの実行が終了したら、1つ目のGUI ウィンドウに /aop/joe/address というエントリが現れたことを確認してください。ツリーのノードをクリックすると、そのノードに関連付けられた値が表示されます。

AOPの動作を見るための次のステップとして、キャッシュにそれを入れたことをまったく気にせずに get/set メソッドの実行が可能です。例えば、シェル上で joe.setAge(20); とすることが可能で、GUI上のageフィールドの表示が自動的に更新されることが確認できます。もしそうでないなら、クリックして、GUI内容をリフレッシュします。次にオブジェクトグラフのレプリケーションのデモです。 Joeのaddressは変更可能で、キャッシュは自動的にその内容を変更することがわかります。例えば、addr.setCity("San Jose");と対話シェル上でタイプすればGUI上でaddressが変更されたことを見ることができます。

最後に PojoCacheがコレクションクラス(List、 Map、 Setなど)の get/set にも対応しています。例えば、シェルコマンドライン上で以下をタイプします。

ArrayList lang = new ArrayList();
         lang.add("Ensligh");
         lang.add("Mandarin");
         joe.setLanguages(lang);