【发布时间】:2013-07-14 10:23:47
【问题描述】:
我想知道如何从 ServletContext (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html) 中删除 EventListener。后者提供了一个addListener 方法,但没有删除监听器。听众是否可能被弱引用所持有,并且可以通过失去所有强引用来取消注册?或者如果我的应用程序未部署会发生什么?监听器是否仍然处于活动状态?
【问题讨论】:
-
为什么以及何时需要从上下文中删除 eventlistner ?场景是什么?
-
我写了一个自定义的
Servlet,它需要知道所有创建的会话。因此,我在Servlet的init方法中以编程方式添加了SessionListener。现在我想确保这个监听器不会在 Servlet 中存活,并想在Servlet的destroy方法上取消注册监听器。 -
你的方法是错误的。 SessionListener 用于 webApp 而不是 servlet。即使您访问其他一些 servlet,也会创建一个会话。
-
好吧,我的
Servlet是手动部署的,即在正在运行的服务器中并通过addServlet方法。 servlet 本身独立于任何其他应用程序。因此,没有其他办法。如果你的回答是对的,那么addListener这个方法就不应该存在了。
标签: java servlets listener servlet-3.0 servlet-listeners