注册为ServletContextListener的类的生命周期是什么

时间:2011-01-06 15:12:24

标签: java java-ee web.xml

我知道ServletContextListener是什么以及如何在web.xml中实现/注册它。

但问题如下。在Web应用程序开始时,将创建每个javaVM的单个侦听器实例。然后调用它的contextInitialized()方法。

在关闭应用程序时,会调用listeDesner的contextDestroyed()方法。但这是听众的同一个例子吗?或者可以销毁第一个实例并为contextDestroyed()调用创建新实例?

2 个答案:

答案 0 :(得分:4)

明确的证据必须来自Servlet规范。我不确定它是否能为您的问题提供明确的答案,但它确实提供了强有力的提示:

  

SRV.10.3.3听众注册
  Web容器创建的实例   每个监听器类并注册它   用于事件通知之前   处理第一个请求   应用

这意味着禁止在处理第一个请求后创建实例。

答案 1 :(得分:1)

如何在contextInitialized()和contextDestroyed()中添加一些代码。

这样的事情:

System.out.println(this.toString())

假设您没有覆盖Object的默认toString方法,您应该在十六进制(@ 8104b1)中看到对象的hashCode,并且通过这样做,您可以检查它是否是同一个对象。