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

Tomcat work 目錄不是快取:深度解析 JSP 編譯工作目錄機制與常見誤區

     編輯:Java 綜合教學

Tomcat work 目錄不是快取:深度解析 JSP 編譯工作目錄機制與常見誤區

許多開發者習慣稱 work 目錄為「快取」,實則不準確。work 是 JSP 編譯工作目錄,存放 JSP 轉換生成的 .java 與 .class 檔案。本文揭示其真實運作機制、定時掃描策略與大檔案限制。

JSP 處理流程

  1. 瀏覽器請求 index.jsp
  2. Tomcat 在 work/Catalina/localhost//org/apache/jsp/ 生成 index_jsp.java
  3. javac 編譯為 index_jsp.class
  4. 類載入器載入類,實例化 Servlet,執行 _jspService() 響應

定時掃描與熱部署

  • Tomcat 定期(預設間隔)掃描部署目錄 JSP 檔案 最後修改時間。
  • 發現時間變化 → 重新生成 .java → 重新編譯 .class → 重新載入。
  • 非即時: 修改 JSP 後需等待下次掃描(通常幾秒到幾分鐘)才生效。

實務技巧: 修改 JSP 後手動清空 work 目錄可強制立即重新編譯,但生產環境慎用(會導致當前用戶 Session 中斷、類卸載風險)。

64KB 方法體限制

  • JVM 限制單一方法位元組碼不超過 64KB。
  • JSP 編譯後 _jspService() 包含所有模板文字與邏輯,極易超限。
  • 解決: 業務邏輯抽離至 Java 類(靜態方法/Bean),JSP 僅調用;JS/CSS 抽離為獨立靜態檔案。

目錄結構示例

work/
└── Catalina/
    └── localhost/
        └── myapp/
            └── org/
                └── apache/
                    └── jsp/
                        ├── index_jsp.java
                        ├── index_jsp.class
                        └── ...

正確認知總結

誤區事實
work 是快取目錄work 是 JSP 編譯產物輸出目錄(工作目錄)
可隨意刪除 work 加速刪除會觸發全量 JSP 重編譯,短期內增加 CPU/IO 壓力
work 內容可手動修改屬編譯產物,下次掃描會被覆蓋,修改無效

理解 work 真實角色,能避免誤操作導致的服務抖動與除錯誤導。

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