[jakarta-ee] 서블릿 <start-on-startup> 값은 무엇을 의미합니까

나는 여기에 약간 혼란스러워지고있다. 우리의 응용 프로그램에서 우리는 몇 가지 서블릿을 정의했습니다. 다음은 web.xml서블릿 중 하나 에서 발췌 한 것입니다 .

<servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-class>com.foo.framework.axis2.http.FrameworkServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet> 

내 이해에 따라 값을 <load-on-startup>자동으로로드 하려면 값 이 양의 정수 여야합니다. 나는 구글을 찾았지만 내가 본 응답은 혼란에 추가되었습니다.



답변

Resin 3.0 은이 동작을 문서화합니다 :

시작시로드는 (선택적) 정수 값을 지정할 수 있습니다. 값이 0 이상인 경우 서블릿이로드되는 순서를 나타내며 숫자가 높은 서블릿은 숫자가 작은 서블릿 뒤에로드됩니다.

JSP 3.1 스펙 (JSR 340) 페이지 14-160에서이 말한다 :

요소 load-on-startup는이 서블릿이 웹 애플리케이션 시작시로드 (인스턴스화되고 init ()가 호출 됨)되어야 함을 나타냅니다. 이 요소의 요소 내용은 서블릿이로드되는 순서를 나타내는 정수 여야합니다. 값이 음의 정수이거나 요소가 없으면 컨테이너는 선택할 때마다 서블릿을 자유롭게로드 할 수 있습니다. 값이 양의 정수 또는 0 인 경우, 애플리케이션이 배치 될 때 컨테이너가 서블릿을로드하고 초기화해야합니다. 컨테이너는 더 높은 정수로 표시된 서블릿보다 낮은 정수로 표시된 서블릿이로드되도록 보장해야합니다. 컨테이너는 서블릿의 로딩 순서를 동일한 load-on-startup값으로 선택할 수 있습니다 .

JSR뿐만 아니라 웹 컨테이너의 문서도 확인하고 싶을 것입니다. 차이가있을 수 있습니다


답변

Short Answer : value> = 0은 웹앱이 배포되거나 서버가 시작될 때 서블릿이로드됨을 의미합니다. value <0 : 컨테이너가 느껴질 때마다 서블릿이로드됩니다.

긴 답변 (사양에서) :

시작시로드 요소는이 서블릿이 웹 응용 프로그램 시작시로드 (인스턴스화되고 init ()가 호출되어야 함)를 나타냅니다. 이 요소의 선택적 내용은 서블릿이로드되는 순서를 나타내는 정수 여야합니다. 값이 음의 정수이거나 요소가 없으면 컨테이너는 선택할 때마다 서블릿을 자유롭게로드 할 수 있습니다. 값이 양의 128 정수 또는 0이면, 컨테이너는 애플리케이션이 배치 될 때 서블릿을로드하고 초기화해야합니다. 컨테이너는 더 높은 정수로 표시된 서블릿보다 낮은 정수로 표시된 서블릿이로드되도록 보장해야합니다. 컨테이너는 시작시로드 값이 동일한 서블릿로드 순서를 선택할 수 있습니다.


답변

요청이 액세스를 시도 할 때까지 서블릿이 시작되지 않음을 나타냅니다.

시작시로드가 0보다 크거나 같은 경우 컨테이너가 시작되면 시작시로드시로드 값의 오름차순으로 해당 서블릿을 시작합니다 (예 : 0, 1, 2, 5, 10 등). .


답변

서블릿 수명주기

서블릿의 라이프 사이클은 서블릿이 배포 된 컨테이너에 의해 제어됩니다. 요청이 서블릿에 매핑되면 컨테이너는 다음 단계를 수행합니다.

  1. 서블릿의 인스턴스가 존재하지 않으면 웹 컨테이너는 :

    ㅏ. 서블릿 클래스를로드

    비. 서블릿 클래스의 인스턴스를 만듭니다.

    씨. init 메소드를 호출하여 서블릿 인스턴스를 초기화합니다 (초기화는 서블릿 작성 및 초기화 에서 다룹니다 ).

  2. 컨테이너는 서비스 메소드를 호출하여 요청 및 응답 오브젝트를 전달합니다. 서비스 방법은 서비스 방법 작성 에서 설명 합니다.

값이 0이면 load-on-startup요청이 해당 서블릿에 도달 할 때 포인트 1이 실행됨을 의미합니다. 다른 값은 컨테이너 시작시 지점 1이 실행됨을 의미합니다.


답변

다른 답변 과이 시작시로드 기사 0에 허용 된대로 다른 서블릿이 없으면 배포 중로드 및로드에 우선합니다. load-on statup을 가장 잘 사용하는 것은 첫 번째 요청이 연결 풀을 생성하거나 네트워크 호출을하거나 대량의 리소스를 보유하는 서블릿과 같이되기 전에 초기화하는 데 더 오랜 시간이 걸리는 서블릿을로드하는 것입니다. 이렇게하면 처음 몇 개의 요청에 대한 응답 시간이 크게 줄어 듭니다.


답변

  1. 두 서블릿에 대해 값이 동일하면 web.xml 파일 내에 선언 된 순서대로로드됩니다.
  2. 컨테이너가로드 할 때 서블릿보다 0 또는 음수 인 경우로드됩니다.
  3. 웹 컨테이너에 의한 서블릿의 init () 메소드의 로딩, 초기화 및 호출을 보장합니다.
  4. 서블릿에 대한 요소가 없으면 웹 컨테이너가 서블릿을로드하기로 결정할 때로 드됩니다.

답변

예. 동일한 값을 가질 수 있습니다 …. 시작시로드에 숫자를주는 이유는 서버가 모든 서블릿을로드하는 시퀀스를 정의하기 때문입니다. 시작시로드 값이 0 인 서블릿이 먼저로드되고 그 후에 값이 1 인 서블릿이로드됩니다.

두 개의 서블릿이 시작시로드에 대해 동일한 값을 가지면 web.xml에서 위에서 아래로 선언되는 방식으로로드됩니다. web.xml에서 처음 나오는 서블릿이 먼저로드되고 그 후에 다른 서블릿이로드됩니다.