Tomcat load-on-startup 0が最速は嘘 (実験編)

2010-10-26 追記: 現在のバージョンでは0が最速になっているとのことです。以下古い情報なのでご注意を。 一番最初に起動させたいServletの load-on-startup を0にするのが嘘かどうかを試してみた。 id:smeghead:20070327:loadonstartup ではソースを見てみたが、簡単な実験で試してみた。 初期化時に自分の名前を出力するサーブレットとweb.xmlを用意した。 windows tomcat5.0 java1.4.2 の環境でeclipse上で試した。

InitServlet.java

package inittest;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class InitServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public void init() throws ServletException {
        System.out.println(this.getServletName());
        super.init();
    }
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {
            PrintWriter writer = res.getWriter();
            writer.println("test");
        }
}

web.xml

    init0
    inittest.InitServlet
    0
 
    init1
    inittest.InitServlet
    1
 
    init2
    inittest.InitServlet
    2
 
    init-1
    inittest.InitServlet
    -1
tomcat起動時の出力は以下。

出力

情報: コンテキスト設定ファイルのURL file:C:\Program Files\Apache Software Foundation\Tomcat 5.0\conf\Catalina\localhost\loadonstartup.xml を処理しています
init1
init2
init0
init-1は、サーブレットを呼出したときに、初期化が行なわれた。
init-1
結論: web.xmlでload-on-startupに0を指定した場合、起動時の一番最後に起動される。 1が最初に初期化された。 0は起動時の最後に初期化された。 マイナスの値は、実行時に初期化された。 一番最初に起動させたいServletの load-on-startup に0を指定するのは、間違いです。っと

3件のコメント

  • 勝手ながら参考にさせていただきました。
    0と指定した場合は1よりも先にメモリーにロードされる
    ものとばかり思っていました。
    -1と指定した場合は記述しないのと一緒!?のようですね。
    ありがとうございます。

  • 私も以前、0と指定するのが一番最初にロードされると思ってましたが、違ってました。
    1から指定するようにしておけば大丈夫だと思いますが、この情報も今となっては古いので、ご注意を。

  • The subsequent time I read a blog, I hope that it doesnt disappoint me as a lot as this one. I mean, I do know it was my option to learn, however I actually thought youd have one thing fascinating to say. All I hear is a bunch of whining about something that you could possibly fix when you werent too busy searching for attention.

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください