為什麼 Tomcat 會被影響 ?

Apache Tomcat 實作了 Jakarta EE (原名為 Java EE) 規範的 Jakarta Servlet, Jakarta Standard Tag Library(JSTL), Jakarta WebSocket, Jakarta Authentication 4塊規範。其中 Tomcat Servlet container為了讓 Jakarta Servlet 原生有檔案上傳的功能,所以 Copy & Rename “Apache Commons FileUpload” 套件程式碼在 Tomcat 中

package 要 javax.* 改到 jakarta.* ?

因為 Oracle 開源授權問題讓 Eclipse 自立 “Jakarta EE” , package name 從 javax.* 改到 jakarta.* 的轉換是漸進式。 在 Jakarta EE 8 時, 命名空間 javax.* jakarta.* 兩者是兼容的。 在 Jakarta EE 9 之後僅允許 jakarta.servlet.Servlet,完全移除 javax

Tomcat 10 開始是 Jakarta EE 9 規範,所以 v10 是僅允許 jakarta.servlet.Servlet Tomcat 7 中,支援的是Java EE 6 規範的 Servlet 和 JSP 技術,原生使用的 package name 是 javax, Tomcat 7 本身原生沒有支援 package name 為 Jakarta 的原生 servlet 規範

file upload 改了什麼 ?

commons-fileupload 改的程式碼是需要多呼叫 setFileCountMax(long) 限制 Request 檔案上傳的數量 github commit changes

Tomcat 7 有沒有影響 ?

(1) 如果使用 Java EE 技術,因不需要將 javax package name 改寫成 jakarta 所以此情境沒有影響。

(2) 如果使用的是 Jakarta EE 包裝的相關技術如框架套件等 dependency (可能如 spring, struts 等 jar libs..), 也可以在 Tomcat 7 上正常執行,所以這裡如果有間接引用也須更新

(3) 如果有使用 commons-fileupload jar. 也須更新

Tomcat 7 的 EOL 是 2021/3/21,對照現在 2023 是不好的,建議提升版本