StatisticsCollector

lf13102005-11-24


SQLの実行時間集計機能の追加完了。最小、平均、最大を集計している。
これだけあれば、とりあえず「遅い!」ってなった時に、どこが遅いのか切り分けられるだろう。あとは、OracleのStatsPackなどを使ってDB側の統計情報と合致しているかテストして完了予定。

今回のHackでStatisticsCollector仕組みが理解できた。
java.sql.Connection、Statement、PreparedStatementをインプリメントしたダミークラスを経由して、各メソッドで統計情報を取得してから、本物にディスパッチしている。なるほど・・・。


以下見送り事項

  • EJB3対応にするにはInterceptorの親クラスを org.jboss.ejb.plugins.AbstractInterceptorからorg.jboss.aop.advice.Interceptorに変更する必要あり。下位互換を考慮すると両バージョン必要になるが、#JBAS-1436JCAに統計情報の追加がされるようだ。StatisticsCollectorはとりあえずJ2EE1.4用としておいていいだろう。
  • メソッドの実行時間測定は、Interceptorアーキテクチャ上、自分自身を通過したらおしまいなので難しい。つまりInterceptorをかます方法では、Interceptor Stack全体の実行時間は測れない。


本家Wikiのtodoに加えて見た目が悪い(^^;等、まだ気になる所はあるが、また別の機会に。