Tomcat load-on-startup 0が最速は嘘 (実験編)
2007/03/29
2010/10/26
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を指定するのは、間違いです。っと
勝手ながら参考にさせていただきました。
0と指定した場合は1よりも先にメモリーにロードされる
ものとばかり思っていました。
-1と指定した場合は記述しないのと一緒!?のようですね。
ありがとうございます。
私も以前、0と指定するのが一番最初にロードされると思ってましたが、違ってました。
1から指定するようにしておけば大丈夫だと思いますが、この情報も今となっては古いので、ご注意を。