*これはなんですか？

Tomcatにはクラスを静的なフィールドにキャッシュする箇所があります。
S2のHotdeploy時にはAOPがリクエストごとに適用されるので、エンハンスされたクラスはリクエストごとに違うクラスになります。
そのため、ヒープが開放されずOutOfMemoryErrorが発生してしまうことがあります。
それを、リクエストごとにキャッシュをクリアするようにして軽減させます。

また、これはあくまでも開発用のものなので本番運用時には使わないでください。


*つかいかた

1)$CATALINA_HOME/server/lib に、このjarファイルをコピーしてください。
2)$CATALINA_HOME/conf/server.xml の engine ディレクティブに <Valve> の設定を追加してください。

    <Engine defaultHost="localhost" name="Catalina">
        :
      <Valve className="org.seasar.cubby.tomcat55.valves.StaticReferenceCleanerValve"
          methods="org.apache.tomcat.util.IntrospectionUtils#clear,org.apache.commons.modeler.util.IntrospectionUtils#clear"
          maps="org.apache.commons.el.BeanInfoManager#mBeanInfoManagerByClass" />
        :
    </Engine>

いまのところ、リクエスト終了時に呼び出すメソッド、クリアするMap型のフィールドを指定できます。


*動作環境

Tomcat5.5用です。
5.5.12以降なら大丈夫だと思います。
5.5.23で動作を確認しました。
