Click FrameworkのHOT deploy対応は難しい

最近、Click Frameworkがとても気に入っています。今後、JavaでWeb開発を新規に始めるときはClickを使うつもりでいます。
SeasarにはS2Clickというプロダクトがあって、これを使えばS2とClickを組み合わせることができます。が、S2ClickはHOT deployに対応していません。

せっかくS2を使うのだからと、ClickをHOT deployに対応させるべくいろいろ頑張ってみましたが、結局うまく行きませんでした。
Clickは、ページのクラスをキーにした内部キャッシュを持っています。このキャッシュは、アプリケーションの初期化時に、全ページを対象にして一度だけ構築されます。
HOT deployで新しいリクエストが発生すると、クラスローダが変わってページクラスが別物になるので、キャッシュがヒットしなくなり、全体の挙動がおかしくなってしまいます。

HOT deploy時に問題が起きないようにキャッシュの振る舞いを変更するためには、Clickのコードを大幅に書き換える必要があります。外付けで拡張できるようになっていればまだ良いのですが、キャッシュを管理しているnet.sf.click.ClickAppがデフォルトアクセスレベルになっていて、簡単にはいじれません。

そんな訳で、ClickのHOT deploy化は結構困難だと思います。Teedaのように、最初からHOT deployを念頭に置いて開発されたフレームワークでないと、対応は難しそうです。