九 load-on-startup

servlet默认是延迟加载的,直到servlet容器接收到一个对应servelt的请求。这会导致首次访问改servlet延迟。

为了避免首次访问延迟,可以在web.xml中使用<load-on-startup>标签强制容器在服务启动时加载(初始化并调用init()方法)servlet。

 

怎样使用<load-on-startup>?

这里是一个例子:

<web-app>
…

<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

…
</web-app>

 

如果没有指明<load-on-startup>,web容器不会加载servlet直到接收到DemoServet 这个servlet对应的请求。因为这里已经指明了其值大于0,所以这个servlet(DemoServlet)在启动时就被加载。

值大于0意味着当webapp被部署或者当服务器开启时加载,如果值小于0,这个 servlet将在容器需要它的任何时候。

 

怎么使用<load-on-startup>指明servlet载入顺序?

 

<web-app>
…

<servlet>
<servlet-name>MyServlet1</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet1</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>

<servlet>
<servlet-name>MyServlet2</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet2</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>

<servlet-name>MyServlet3</servlet-name>
<servlet-class>com.beginnersbook.DemoServlet3</servlet-class>
<load-on-startup>-2</load-on-startup>
</servlet>

…
</web-app>

在本例中,我们在web.xml文件中指定了三个servlet,因为servlet类MyServlet1和MyServlet2具有启动时加载的值大于0,它们将在服务器启动时立即加载。但是servlet类MyServlet2将在DemoServlet1类之前加载,因为它在启动时的加载值更低。

Servlet类MyServlet3不会在启动时加载,因为它具有负的启动时加载值。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章