アプリケーションサーバ起動時にServletを起動するよう指定する

通常、Servletは初回アクセスがあった際にインスタンス化されるそうです。
外部リソース(設定ファイルとか)の読み込み等の初期化処理がある場合、
アプリケーションサーバ起動時にインスタンス化してしまいたいですねぇ。

これはweb.xmlに「load-on-startup」を指定することで実現可能です。
ただ、JavaEE7になってServletの設定がアノテーションで記述できるようになりました。
こんな感じで。

@WebServlet(
        name = "HogeServlet",
        urlPatterns = {"/*"},
        loadOnStartup = 2)
public class HogeServlet extends HttpServlet {
    ....

ソースに設定を記述することで「設定全体の見通しが悪くなる」というデメリットもあります。
そのためにServlet設計書(urlPatterns, loadOnStartup, 依存性、利用している外部リソースなど)を書くか?というと難しいところです。
初期段階では作れるけど、メンテナンスしてもらえなさそう。。。

web.xmlに一律記述すると「設定全体の見通し」の問題は解決しますが(xml読みづらい。。。)、
ソースからの視認性は下がります。

どっちがよいかは宗教の問題かもしれません。
だから2つの実装が許容されているのかも。
個人的にはアノテーションの方が好きです。 実装寄りかな。 ただ設計書も書きたいですね。設計段階では設計書で議論したい派です。
根拠はソースに求めるけど。

ソースからアノテーション部分の内容をgrepして綺麗に成形できるスキルがあるといいなぁ。


わかりやすいJavaEEウェブシステム入門

新品価格
¥3,456から
(2015/7/23 11:55時点)