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");
}
} |
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 |
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を指定するのは、間違いです。っと
勝手ながら参考にさせていただきました。
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.