首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ServletContextListener 不生效?檢查 web.xml 註冊與類別實作

     編輯:程式設計綜合問答

常見原因

  1. 未在 web.xml 註冊:必須在 <listener> 宣告完整類別名。
  2. 類別未實作介面:需 implements ServletContextListener 並覆寫 contextInitialized、contextDestroyed。
  3. 拼寫錯誤:<listener-class> 路徑與實際包名不符。
  4. 伺服器未重新部署:修改 web.xml 需重啟應用。

正確 web.xml 範例

<web-app>
    <listener>
        <listener-class>com.example.listener.MyContextListener</listener-class>
    </listener>
    <servlet>...</servlet>
</web-app>

Servlet 3.0+ 註解替代

@WebListener
public class MyContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // 初始化邏輯
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // 銷毀邏輯
    }
}

原始碼潛在問題

提供的 init 類別建構子執行緒池初始化,但 contextInitialized 中 TimerTask 未排程 (timer.schedule(...)),導致任務不執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved