簡體   English   中英

從ServletContext中刪除偵聽器

[英]Remove listener from ServletContext

我想知道如何從ServletContext刪除EventListenerhttp://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html )。 后者提供了addListener方法,但沒有刪除偵聽器的方法。 聽眾是否可以通過弱引用來保留,並且可以通過丟失所有強引用來取消注冊? 或者如果我的應用程序被取消部署會發生什么? 聽眾仍然活躍嗎?

這不是問題的答案,我只想說幾點。

后者提供了addListener方法,但沒有刪除偵聽器的方法。

因為您需要首先決定是否有聽眾。 看看Javadoc

用於接收有關ServletContext生命周期更改的通知事件的接口。

為了接收這些通知事件,實現類必須在Web應用程序的部署描述符中聲明,使用WebListener注釋,或者通過ServletContext上定義的addListener方法之一注冊。

addListener()為您提供了注冊多種類型的偵聽器的規定,而不僅僅是ServletContextListener 它只是一種方法,如果您選擇不在web.xml中預先聲明偵聽器,您可以使用它。

給定的偵聽器必須是以下一個或多個接口的實例:

  1. ServletContextAttributeListener
  2. ServletRequestListener
  3. ServletRequestAttributeListener
  4. HttpSessionListener
  5. HttpSessionAttributeListener

如果我的應用程序被取消部署會發生什么

所有偵聽器對象都將與應用程序一起銷毀。 在部署Web應用程序時,將在Web容器中實例化並注冊監聽器。

使用listener元素在Web應用程序部署描述符中聲明監聽器類。 它們按類名按其調用順序列出。 在Web應用程序執行期間,將按其注冊順序調用偵聽器。 在應用程序關閉時,偵聽器以REVERSE順序通知其聲明,並在向上下文偵聽器發出通知之前向會話偵聽器發送通知。 在上下文偵聽器收到應用程序關閉通知之前,必須通知會話偵聽器會話失效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM