シェルを立ち上げたら、シェルスクリプトを実行するために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);