servlet <load-on-startup>值表示什么

Vin*_*ini 173 web.xml servlets java-ee

我在这里有点困惑.在我们的应用程序中,我们定义了一些servlet.以下是web.xml其中一个servlet 的摘录:

<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> 
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它的值<load-on-startup>必须是一个正整数才能自动加载.我在谷歌上查了一下,但我遇到的回复只会增加我的困惑.

Edd*_*die 183

Resin 3.0记录了这种行为:

load-on-startup可以指定(可选)整数值.如果值为0或更大,则表示要加载servlet的顺序,具有较高编号的servlet在具有较低编号的servlet之后加载.

JSP 3.1规范(JSR 340)说,这14-160页:

该元素load-on-startup表示应该在Web应用程序启动时加载(实例化并调用其init()).此元素的元素内容必须是一个整数,指示应加载servlet的顺序.如果值是负整数,或者元素不存在,则容器可以随时加载servlet.如果值为正整数或0,则容器必须在部署应用程序时加载并初始化servlet.容器必须保证在标记有更高整数的servlet之前加载标有较低整数的servlet.容器可以选择具有相同load-on-startup值的servlet的加载顺序.

您可能不仅要检查JSR,还要检查Web容器的文档.可能存在差异

  • 未指定启动时加载会发生什么? (3认同)

小智 129

简答:value> = 0表示在部署Web应用程序或服务器启动时加载servlet.value <0:只要容器有问题,就会加载servlet.

答案很长(来自规范):

load-on-startup元素指示应该在Web应用程序的启动时加载(实例化并且调用其init()).这些元素的可选内容必须是一个整数,表示servlet的加载顺序.如果值是负整数,或者元素不存在,则容器可以随时加载servlet.如果值为正128或0,则容器必须在部署应用程序时加载并初始化servlet.容器必须保证在标记有更高整数的servlet之前加载标有较低整数的servlet.容器可以选择具有相同加载启动值的servlet的加载顺序.


cle*_*tus 11

它表示在请求尝试访问它之前不会启动servlet.

如果load-on-startup大于或等于零,那么当容器启动时,它将按照您放在那里的启动时的负载的升序开始该servlet(即0,1然后2然后5然后10等等) .

  • 零也会导致加载.只有负值不会被保证:"[...]如果值是正整数或0,则容器必须在部署应用程序时加载并初始化servlet.[...]" (7认同)

sou*_*els 8

Servlet生命周期

servlet的生命周期由部署了servlet的容器​​控制.当请求映射到servlet时,容器执行以下步骤.

  1. 如果servlet的实例不存在,则Web容器:

    一个.加载servlet类

    创建servlet类的实例

    C.通过调用init方法初始化servlet实例(初始化在创建和初始化Servlet中介绍)

  2. 容器调用服务方法,传递请求和响应对象.写作服务方法中讨论了服务方法.

0值load-on-startup表示当请求到达该servlet时执行第1点.其他值表示在容器启动时执行第1点.