1. 정의

web.xml 에서 서블릿 설정시 들어가는 숫자

해당 서블릿의 init() 메소드가 호출되는 시기와 순서를 정하는 것


보통의 서블릿은 반드시 '해당 서블릿'에 최초 요청이 들어올 때에만 해당 인스턴스화 초기 설정을 하게 되는데, 시간이 너무 오래 걸리기 때문에 Context의 웹 애플리케이션이 톰캣에 의해 인식되는 시점에 서블릿이 초기화 되도록 설정하는 것

(애노테이션이나 web.xml에 설정한 이름으로 서블릿을 호출하기 전에, 미리 톰캣 시작될 때 해당 서블릿을 호출하는 기술)



2. 방법

음수 : 톰캣 실행시 자동으로 서블릿이 호출되지 않고 load-on-startup을 설정하지 않은 서블릿과 동일해짐(일반 서블릿)

양수 : 0에 가까울수록 먼저 초기화됨. 같은 숫자가 mapping되었을 경우 먼저 작성된 서블릿부터 초기화됨



3. 예시
    1) web.xml 에 mapping하는 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
 
    <display-name>Customer Support Application</display-name>
 
    <servlet>
        <servlet-name>TicketServlet</servlet-name>
        <servlet-class>/tickets</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
</web-app>
cs


2) 애노테이션으로 mapping하는 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.wrox;
 
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.Map;
 
//loadOnStartup : tomcat 실행시 무조건 실행(서블릿 실행시가 아니라)
//                숫자가 0보다 크면 서버가 시작될 때 무조건 해당 서블릿을 초기화
//                (숫자가 0에 가까울 수록 먼저 초기화, 숫자 중복시 먼저 작성된 서블릿부터 초기화)
//                숫자가 음수일 경우 톰캣 호출시 서블릿이 호출되지 않고 그냥 보통의 서블릿으로 적용됨
//                web.xml에서 설정 가능
@WebServlet(name = "TicketServlet", urlPatterns = { "/tickets" }, loadOnStartup = 1)
public class TicketServlet extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
cs


+ Recent posts