JSF 2.0ではアノテーションによって環境設定ファイルを書かなくてよくなった。
ただ、そのアノテーションがついたファイルはどこから探し出すのだろうか。
全部検索していたら当たり前だが、遅い。
また、知らないうちに勝手に管理対象Beanとして登録されるのも避けたい。バックドアが出来てしまうかもしれないためだ。
SpringやT2のコンポーネントスキャンのルートパッケージ指定はJSF2にもあった。ただし、ここは実装依存のようだ。
RIのMojarraでは「com.sun.faces.annotationScanPackages」をコンテキストパラメータに書くことによって制御可能だ。ホワイトスペース区切りで複数個所も指定可能。また、特定のjarの中の特定のパッケージとか細かい設定が出来る。
jarファイル指定の場合以下のようにコロンで区切る。
jar:「jarファイル名」:「パッケージ名」
jarファイル名を指定した場合のパッケージ名はカンマ区切りで複数指定可能だ。
WEB-INF/classesのなか全てを検索したい場合は
*
とするとよい。アスタリスクはワイルドカードでこれはjarファイル名やjarファイルの中のパッケージ名でも使える。
デフォルトではWEB-INF/classesの中のみならずすべてのjarファイルの中を全部探しに行くようだ。スタートアップの時間が問題になるGoogle App Engineでは積極的に使用していきたい。というか、普段でも設定したほうがいいかも。
JavaEE標準APIだけならばlibファイルはほとんどないため、問題になることは少ないと思うがTomcatのようなサーブレットエンジンしか持たないようなやつとかだとブート時間は増えていくだろうし。
というわけでGAEのサンプルもパッケージ指定しておいた。これで3つのファイルしかスキャンしない。負荷が少しでも減ってくれれば。