OSCache 2.0 Released
使ったことはないですがキャッシュのクラスタリングに興味があります。詳しくはOSCache 2.0 Overviewからたどれば、フィーチャリストやFAQにアクセスできます。
JBoss 3.2.2でHSQLDBマネージャを使う方法
3.2.2からデフォルトの設定ではHSQLDBマネージャを使ってJBossサーバ組み込みのHSQLDBデータベースにアクセスしようとすると接続が拒否されます。これを回避する設定方法をjboss-fan-ml:1816に書きました。
AspectJが生成したコードの逆コンパイル
almadenさんご紹介のDJを使ったら、サクッと逆コンパイルできました。次のコードは以前作ったZipViewタスクにbefore, afterアドバイスを適用したものです:
public void printTree(FileItem root) { FileItem fileitem = root; Object aobj[] = new Object[1]; aobj[0] = fileitem; org.aspectj.lang.JoinPoint joinpoint = Factory.makeJP(ajc$tjp_0, this, this, aobj); try { SVGPrinterAspect.aspectOf().ajc$before$neverbird_tools_ant_zipview_TraceAspect$e7(ajc$tjp_0, joinpoint); // // 元々のコードがここにある。 // } catch(Throwable throwable) { SVGPrinterAspect.aspectOf().ajc$after$neverbird_tools_ant_zipview_TraceAspect$1e9(); throw throwable; } SVGPrinterAspect.aspectOf().ajc$after$neverbird_tools_ant_zipview_TraceAspect$1e9(); }
before、afterアドバイスに相当するメソッドの呼び出しコードが、AspectJ Weaverによって上記printMethodの該当箇所に挿入されているのがわかります。beforeアドバイスではthisJoinPointStaticPartとthisJoinPointを使っているので、printTreeメソッドの中でそれらをbeforeアドバイスに相当するメソッドに対して引数として渡しています。一方、afterアドバイスでは、それらを参照していないので引数は空です。
AspectJに関して本当に知りたいのはmix-inがどのようにバイトコードレベルで実現されているかです。これもそのうち気が向いたら調べてみます。