哪些servlet是预初始化的好成员



通过在web.xml中设置<load-on-startup>-1</load-on-startup>属性,我们使servlet在服务器启动时加载。

我知道预初始化的servlet在第一次请求时更快。

我的问题是哪种servlet适合这种设置。具体来说,它对哪种功能有用?

load-on-startup基本上控制servlet的init()方法何时被调用。

所以,从逻辑上讲,如果你有一个具有init()方法的servlet,它做昂贵和耗时的东西,如解析XML配置文件和/或从一些数据库填充一些应用程序范围的数据,那么它可能是一个好主意,在启动时做,而不是在第一次请求。

如果你甚至没有init()方法,那么你就不需要关心load-on-startup

参见:

  • servlet是如何工作的?实例化、会话、共享变量和多线程

在启动时加载对于任何执行耗时操作的servlet来说都是一个很好的实践。例如,需要建立到数据库的连接的servlet。

正如您所指出的,servlet将能够更快地响应它的第一个请求——因为它已经初始化了。

如您所知,servlet是在第一次请求时加载的。这意味着它在第一次请求时消耗更多的时间。如果您在web.xml中指定启动时加载,servlet将在项目部署时或服务器启动时加载。因此,响应第一个请求将花费更少的时间。

因此,如果您有任何servlet在初始化期间花费大量时间。连接数据库,读取文件等。最好为这些类型的servlet指定启动时加载,以便在应用程序启动时初始化它们。因此,第一个请求是更快的。

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

最新更新