การอัพเกรดแอพพลิเคชันเดิมที่รันบน Tomcat 7 ไปเป็น Tomcat 10 นั้นจะพบปัญหาสำคัญหลายอย่างได้แก่

  • Tomcat 7 ใช้ Java7 เป็น Java Runtime Environment (JRE) หรือ JRE7 แต่ Tomcat 10 ยอมรับ JRE ตั้งแต่เวอร์ชัน JRE11 เป็นต้นไปเท่านั้น (กรณีของ Tomcat 11 ที่คาดว่าจะออกเวอร์ชัน Stable ปีหน้า 2024 จะยอมรับ JRE ตั้งแต่เวอร์ชัน JRE21 เป็นต้น)
  • ใน Tomcat 9 ยังคงใช้ JavaEE 8 แพคเกจ javax.servlet แต่ใน Tomcat 10 ใช้ JavaEE 9 ยึดตามแพคเกจ jakarta.servlet ซึ่งทำให้แอพพลิเคชันเดิมเกือบทั้งหมดที่พัฒนายืนพื้นอยู่บน Java 2 หรือ Java EE ที่ใช้ javax.servlet ใช้งานกับ Tomcat 10 เป็นต้นไปไม่ได้

หลังจากการค้นหาแนวทางที่ใช้ในการ Migrate ระบบมาเป็น Tomcat 10 พบวิธีการดังต่อไปนี้

  • หากท่านมีซอร์สโค้ด ให้แก้ไขซอร์สโค้ดที่บริเวณ import javax.servlet ให้เป็น import jakarta.servlet ทั้งหมด
  • จากการสืบค้นพบว่าที่ Stack Overflow https://stackoverflow.com/questions/72302174/tomcat-10-upgrade-cant-find-javax-servlet-jsp-reference ใช้วิธีการแก้ไขไฟล์ context.xml (ปกติไฟล์นี้วางไว้ที่ <war>/WEB-INF/context.xml หรือ <war>/META-INF/context.xml) ให้ใส่ <Loader jakartaConverter="TOMCAT" /> ** หมายเหตุ – จากทดลองพบว่าวิธีนี้ยังใช้งานไม่ได้
  • จากการสืบค้นพบ Migration Guide ของ Tomcat 10 พบว่าให้สร้างโฟลเดอร์ <web>/webapps-javaee และวางไฟล์ war ไว้ในโฟลเดอร์นี้เพื่อ deploy จากเดิมที่เคยวางไวที่ <web>/webapps วิธีนี้พบว่าสามารถใช้งานได้ทันที เมื่อสตาทร์ Tomcat 10 ขึ้นมา ไฟล์ war ที่อยู่ใน <web>/webapps-javaee จะถูกดัดแปลงอัตโนมัตให้กลายเป็น war ที่ไปใช้ jakarta.servlet เอง และสามารถใช้งานได้ทันที

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *