This tag specifies that the servlet should be loaded automatically when the web application is started.
The value is a single positive integer, which specifies the loading order. Servlets with lower values are loaded before servlets with higher values (ie: a servlet with a load-on-startup value of 1 or 5 is loaded before a servlet with a value of 10 or 20).
When loaded, the init() method of the servlet is called. Therefore this tag provides a good way to do the following:
- start any daemon threads, such as a server listening on a TCP/IP port, or a background maintenance thread
- perform initialisation of the application, such as parsing a settings file which provides data to other servlets/JSPs
If no <load-on-startup> value is specified, the servlet will be loaded when the container decides it needs to be loaded - typically on it's first access. This is suitable for servlets that don't need to perform special initialisation.
- If you start a thread using this method, remember to call thread.setDaemon(true), and ideally provide a way to ensure the thread stops running when your application is restarted. If this is not done, the old threads will not stop, and a new thread will start each time the application starts, causing havoc with your maintenance (imagine 20 threads all deciding to perform a maintenance task at midday, when you think there is only 1 running!)