オンデマンドデプロイのすすめ
JavaでAnnotationがついたクラスがあったら、それに対して処理したい場合は、Seasar2のコンポーネント自動登録で使っているように、ファイルシステムまたは Jar ファイルを全走査してクラスロードする方法もあります。
ファイルシステムまたは Jar ファイルを全走査してクラスロードしてください。が結論です。
Seasar だったら、
org.seasar.framework.util.ClassTraversal
を読むべし。
でも、これは、Seasar2.3時代(3年前)の話で、技術としてはちょっと古い。
HOT deployなどと組み合わせると、リクエストのたびに全コンポーネントをデプロイする必要があるので、コンポーネントの数が増えると実用的には使えないのです。
そこで、考え出したのが、Seasar2のONDEMAND deploy。コンポーネントの定義を見に行って、あればそれを使う、なければ、その場でデプロイする方法。
ONDEMAND deployだと、リクエストで必要なコンポーネントしかデプロイされないので、コンポーネントの数がいくら増えても平気です。
ONDEMAND deployを理解するには、いまならSlim3 Containerを見るのが一番簡単です。
をみれば、きっと理解できるでしょう。4つのクラスを見るだけなので簡単。
PrototypeBeanFactoryでDisposableを実装していますが、Disposableは、HOT deployを実現するためのキークラスです。Disposable#disponse()は、HOT deployのときには、リクエストの最後、COOL deploy(HOT deployじゃないもの)のときには、アプリケーションが終了するタイミングで呼び出されます。
このdisposeメソッドで、キャッシュしているメタデータを開放するようにしてあげれば、HOT deployに対応できるだけでなく、COOL deployのときは、キャッシュが利くので、パフォーマンスが劣化しません。
HOT deployとCOOL deployをうまく両立させるためには、それなりのノウハウが必要です。Seasar2の2年間のノウハウの蓄積を学ばない手はないですよね。
時代は、ONDEMAND deployですよ。
普通にJavaで開発するときに出てくる技術的な課題は、Seasar2で、ほとんど解決できていると思うので、わかんないことがあれば、きいてください。いくらでも教えますよ。