九 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不會在啓動時加載,因爲它具有負的啓動時加載值。

 

 

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