我知道ServletContextListener是什么以及如何在web.xml中实现/注册它。
但问题如下。在Web应用程序开始时,将创建每个javaVM的单个侦听器实例。然后调用它的contextInitialized()方法。
在关闭应用程序时,会调用listeDesner的contextDestroyed()方法。但这是听众的同一个例子吗?或者可以销毁第一个实例并为contextDestroyed()调用创建新实例?
答案 0 :(得分:4)
明确的证据必须来自Servlet规范。我不确定它是否能为您的问题提供明确的答案,但它确实提供了强有力的提示:
SRV.10.3.3听众注册
Web容器创建的实例 每个监听器类并注册它 用于事件通知之前 处理第一个请求 应用
这意味着禁止在处理第一个请求后创建实例。
答案 1 :(得分:1)
如何在contextInitialized()和contextDestroyed()中添加一些代码。
这样的事情:
System.out.println(this.toString())
假设您没有覆盖Object的默认toString方法,您应该在十六进制(@ 8104b1)中看到对象的hashCode,并且通过这样做,您可以检查它是否是同一个对象。