[英]Remove listener from ServletContext
我想知道如何從ServletContext
刪除EventListener
( http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html )。 后者提供了addListener
方法,但沒有刪除偵聽器的方法。 聽眾是否可以通過弱引用來保留,並且可以通過丟失所有強引用來取消注冊? 或者如果我的應用程序被取消部署會發生什么? 聽眾仍然活躍嗎?
這不是問題的答案,我只想說幾點。
后者提供了addListener方法,但沒有刪除偵聽器的方法。
因為您需要首先決定是否有聽眾。 看看Javadoc :
用於接收有關ServletContext生命周期更改的通知事件的接口。
為了接收這些通知事件,實現類必須在Web應用程序的部署描述符中聲明,使用WebListener注釋,或者通過ServletContext上定義的addListener方法之一注冊。
addListener()為您提供了注冊多種類型的偵聽器的規定,而不僅僅是ServletContextListener
。 它只是一種方法,如果您選擇不在web.xml中預先聲明偵聽器,您可以使用它。
給定的偵聽器必須是以下一個或多個接口的實例:
- ServletContextAttributeListener
- ServletRequestListener
- ServletRequestAttributeListener
- HttpSessionListener
- HttpSessionAttributeListener
如果我的應用程序被取消部署會發生什么
所有偵聽器對象都將與應用程序一起銷毀。 在部署Web應用程序時,將在Web容器中實例化並注冊監聽器。
使用listener元素在Web應用程序部署描述符中聲明監聽器類。 它們按類名按其調用順序列出。 在Web應用程序執行期間,將按其注冊順序調用偵聽器。 在應用程序關閉時,偵聽器以REVERSE順序通知其聲明,並在向上下文偵聽器發出通知之前向會話偵聽器發送通知。 在上下文偵聽器收到應用程序關閉通知之前,必須通知會話偵聽器會話失效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.