对加载启动值感到困惑

时间:2013-05-15 19:01:59

标签: servlets

当我们在web.xml中将任何servlet作为loadOnStartup提及时,在应用程序启动时调用其init方法。

<web-app xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd     version="3.0">       
      <servlet>         
            <servlet-name>SimpleServlet</servlet-name>         
            <servlet-class>app01c.SimpleServlet</servlet-class>         
            <load-on-startup>10</load-on-startup>     
      </servlet>      
     <servlet-mapping>         
              <servlet-name>SimpleServlet</servlet-name>         
              <url-pattern>/simple</url-pattern>     
      </servlet-mapping>        
</web-app>

<load-on-startup>10</load-on-startup>

这里,10值是什么意思?如果我改变它 5,会发生什么?价值较低会使它更早加载吗?如果是,如果它是0,它是最早的吗?我很困惑,因为我遇到了一些谷歌搜索在启动加载时的正值,使其在启动时加载。 这个正数是否大于0?在启动加载时0值是否相同?

2 个答案:

答案 0 :(得分:3)

0是最高优先级。

如果你只有一个servlet,你就看不出差异

ServletName load-on-start-up_value

Servlet1            4(3)

Servlet2            6(4)

Servlet3            3(2)

Servlet4            2(1)

首先创建Servlet4对象,然后创建Servlet3对象,然后创建Servlet1和Servlet2对象。

如果您提供-1,则会被忽略

答案 1 :(得分:1)

默认情况下,在对servlet发出第一个请求时会创建servlet对象,但是如果要在加载时(或启动时)创建servlet对象,则可以提供<load-on-startup></load-on-startup>值的的web.xml

<load-on-startup></load-on-startup>是servlet明智的。如果应用程序中有2个servlet,则需要为每个servlet提供<load-on-startup></load-on-startup>值。

<load-on-startup></load-on-startup>值为0或任何正整数。如果你将<load-on-startup>10</load-on-startup>值设置为10,并且你只有一个servlet,那么它不会影响任何东西,但是你有超过1个servlet然后0值是最高优先级然后依此类推。