Tomcat คืออะไร? คอนเทนเนอร์ Java servlet ดั้งเดิม

Apache Tomcat เป็นคอนเทนเนอร์ Java แบบโอเพนซอร์สที่มีอายุการใช้งานยาวนานซึ่งใช้ข้อกำหนดหลักของ Java สำหรับองค์กรหลายประการ ได้แก่ Java Servlet, JavaServer Pages (JSP) และ WebSockets APIs

โครงการ Apache Software Foundation Tomcat เปิดตัวครั้งแรกในปี 1998 เพียงสี่ปีหลังจาก Java Tomcat เริ่มต้นจากการใช้งานอ้างอิงสำหรับ Java Servlet API ตัวแรกและข้อมูลจำเพาะ JSP แม้ว่าจะไม่ใช่การใช้งานอ้างอิงสำหรับเทคโนโลยีเหล่านี้อีกต่อไป แต่ Tomcat ยังคงเป็นเซิร์ฟเวอร์ Java ที่ใช้กันอย่างแพร่หลายโดยมีเอ็นจิ้นหลักที่ผ่านการทดสอบและพิสูจน์แล้วพร้อมความสามารถในการขยายที่ดี

ในบทแนะนำสั้น ๆ นี้คุณจะได้เรียนรู้ว่าเหตุใดร้านค้าซอฟต์แวร์หลายแห่งจึงเลือก Tomcat เพื่อใช้งานเว็บแอป Java คุณจะได้รับภาพรวมของ Tomcat และวิธีการใช้งานรวมถึงคำแนะนำในการติดตั้งสำหรับเวอร์ชันล่าสุดในขณะที่เขียนนี้

Tomcat และ Java Servlet API

Tomcat 9 รองรับข้อมูลจำเพาะ Servlet 4.0 และต้องการ JDK 8 หรือสูงกว่า Tomcat 8.5 รองรับคุณสมบัติที่ใหม่กว่าหลายประการเช่น HTTP / 2 แต่ยังคงเป็นคอนเทนเนอร์ Servlet 3

Tomcat เป็นเซิร์ฟเวอร์ประเภทใด

ระบบนิเวศของ Java รองรับแอ็พพลิเคชันเซิร์ฟเวอร์หลายประเภทดังนั้นเรามาแยกความแตกต่างและดูว่า Tomcat เหมาะกับตรงไหน:

  • ภาชนะ servletคือการดำเนินการของสเปค Java Servlet ส่วนใหญ่ใช้สำหรับการเป็นเจ้าภาพ Servlets Java
  • เว็บเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์ที่ออกแบบมาเพื่อให้บริการไฟล์จากระบบท้องถิ่นเช่น Apache
  • Java แอพพลิเคชันเซิร์ฟเวอร์องค์กรเป็นการนำเต็มเป่าของ Java EE (ตอนนี้จาการ์ตา EE) สเปค

หัวใจสำคัญ Tomcat คือคอนเทนเนอร์แบบ servlet และ JSP Java servlet จะห่อหุ้มโค้ดและตรรกะทางธุรกิจและกำหนดวิธีจัดการคำขอและการตอบสนองในเซิร์ฟเวอร์ Java JSP เป็นเทคโนโลยีการแสดงผลมุมมองฝั่งเซิร์ฟเวอร์ ในฐานะนักพัฒนาคุณต้องเขียนหน้า servlet หรือ JSP จากนั้นให้ Tomcat จัดการการกำหนดเส้นทาง

Tomcat ยังมี Coyote engine ซึ่งเป็นเว็บเซิร์ฟเวอร์ ต้องขอบคุณ Coyote เป็นไปได้ที่จะขยาย Tomcat เพื่อรวมข้อกำหนดและความสามารถขององค์กร Java ที่หลากหลายรวมถึง Java Persistence API (JPA) Tomcat ยังมีเวอร์ชันเพิ่มเติมที่เรียกว่า TomEE ซึ่งมีคุณสมบัติสำหรับองค์กรเพิ่มเติม ฉันจะแนะนำ TomEE สั้น ๆ ในภายหลังในบทความนี้

เริ่มต้นด้วยการใช้ Tomcat เพื่อโฮสต์ servlets และ JSPs

ดาวน์โหลดและติดตั้ง Tomcat

ด้วยความที่เป็นยุคโบราณของโลกซอฟต์แวร์จึงมีเวอร์ชัน Tomcat ให้เลือกใช้มากมาย ข้อมูลเกี่ยวกับความแตกต่างของเวอร์ชันมีอยู่ในโฮมเพจ Tomcat โดยปกติคุณสามารถเลือกเวอร์ชันเสถียรล่าสุดได้

เพื่อจุดประสงค์ของเราดาวน์โหลด Tomcat เวอร์ชันล่าสุดซึ่งปัจจุบันคือ Tomcat 9 คุณสามารถเลือกดาวน์โหลด Tomcat เป็นไฟล์เก็บถาวร ( .zipหรือtar.gz) หรือเป็นบริการที่ติดตั้ง ทางเลือกที่ดีที่สุดขึ้นอยู่กับคุณ - เว้นแต่คุณจะไม่ได้ทำงานบน Windows ซึ่งในกรณีนี้คุณจะต้องใช้ไฟล์เก็บถาวร เราจะใช้ที่เก็บถาวรสำหรับบทความนี้

การติดตั้ง Windows สำหรับ Tomcat

หากคุณใช้ Windows และต้องการใช้โปรแกรมติดตั้งเพียงดาวน์โหลดไฟล์. exe และเรียกใช้งาน Tomcat จะติดตั้งตัวเองเป็นบริการโดยมีค่าเริ่มต้นที่สมเหตุสมผล จากนั้นจะแจ้งให้คุณทราบว่าการติดตั้งอยู่ที่ใดและคุณสามารถดำเนินการต่อได้ราวกับว่าคุณได้คลายไฟล์ที่เก็บถาวรไว้ที่นั่น

ขั้นตอนที่ 1. การติดตั้งบรรทัดคำสั่ง

ไปที่บรรทัดคำสั่งและพิมพ์ตามด้วยgunzip apache-tomcat-9.0.19.tar.gz tar -xf apache-tomcat-9.0.19.tarสิ่งนี้สร้างไดเร็กทอรีต่อไปนี้:

  • / binมีสคริปต์สำหรับเรียกใช้งาน Tomcat
  • / webappsคือตำแหน่งที่คุณจะปรับใช้แอปของคุณ
  • / logsคือที่ที่ Tomcat ส่งออกบันทึกของมัน โปรดทราบว่าบันทึกของ Tomcat จะเข้าสู่/logs/catalina.outโดยค่าเริ่มต้น คุณสามารถใช้ไฟล์นี้เพื่อแก้ไขปัญหาร่วมกับไฟล์บันทึกเฉพาะแอป
  • / libคือที่ที่ Tomcat มองหา JAR นี่คือที่ที่คุณจะจัดเก็บแพ็คเกจเพิ่มเติมที่ไม่รวมอยู่ใน Tomcat เช่น JPA
  • / confคือ config XML สำหรับ Tomcat ซึ่งคุณสามารถทำสิ่งต่างๆเช่นการเพิ่มผู้ใช้และบทบาทสำหรับ Tomcat

ขั้นตอนที่ 2. เริ่ม Tomcat

หากคุณติดตั้ง Tomcat เป็นบริการแสดงว่ากำลังทำงานอยู่ มิฉะนั้นให้เริ่มต้นใช้งานโดยป้อน./catalina.sh startที่บรรทัดคำสั่ง (พิมพ์./catalina.shโดยไม่มีอาร์กิวเมนต์เพื่อดูคำสั่งทั้งหมดที่มี) ตอนนี้คุณควรจะสามารถเรียกดูหน้าจอต้อนรับของ Tomcat ในเบราว์เซอร์ได้

Matthew Tyson

การปรับใช้แอปพลิเคชันใน Tomcat

webappsไดเรกทอรีของ Tomcat คือที่ที่คุณปรับใช้แอปพลิเคชัน คุณสามารถวาง.warไฟล์ที่นั่นแล้ว Tomcat จะเรียกใช้งาน ไฟล์ WAR เป็นแพ็กเกจมาตรฐานสำหรับทรัพยากรเว็บแอ็พพลิเคชัน: ไฟล์ JAR พร้อมไฟล์เพิ่มเติมบางไฟล์ที่บอกคอนเทนเนอร์ (ในกรณีนี้คือ Tomcat) ว่าจะเรียกใช้

นอกเหนือจากบรรจุภัณฑ์มาตรฐานแล้วยังมีอีกสามวิธีในการปรับใช้เนื้อหาใน Tomcat

การปรับใช้ที่ระเบิด

เว็บแอป "ระเบิด" คือแอปพลิเคชันที่ไม่ได้บีบอัดลงในไฟล์ WAR ซึ่งหมายความว่ายังคงมีองค์ประกอบทั้งหมดที่จัดวางไว้ในไดเรกทอรีและไฟล์ ไฟล์เก็บถาวร Tomcat ที่คุณคลายแพ็กมาพร้อมกับตัวอย่างมากมายที่ปรับใช้ในลักษณะนี้ซึ่งคุณจะพบใน/webapps/examplesไดเร็กทอรี ข้อดีของการปรับใช้แบบระเบิดคือคุณสามารถดูไฟล์ที่นั่นได้โดยไม่ต้องกังวลกับการบีบอัด

หากคุณไปที่//localhost:8080/examples/คุณจะพบรายการลิงก์ หน้านี้แสดงโดย Tomcat จาก/webapps/examples/index.htmlไฟล์ Tomcat ให้บริการไฟล์ HTML จากระบบไฟล์ซึ่งเป็นอินสแตนซ์ของเครื่องมือ Coyote ของ Tomcat ที่ทำหน้าที่เป็นเว็บเซิร์ฟเวอร์

คุณมีอิสระที่จะสำรวจตัวอย่างที่นำเสนอซึ่งให้ภาพรวมที่ดีเกี่ยวกับความสามารถของ Tomcat ในการให้บริการ servlets, JSPs และ WebSockets

Tomcat ยังมีแอปการจัดการโดยค่าเริ่มต้นซึ่งอยู่ภายใต้/managerเส้นทาง เหนือสิ่งอื่นใดแอปนี้ช่วยให้คุณสามารถเริ่มหยุดและปรับใช้แอปอีกครั้งจากเว็บคอนโซล

แสดงเนื้อหาคงที่

เป็นไปได้ที่จะให้บริการไฟล์จากระบบไฟล์หรือส่งต่อจาก Tomcat ไปยังเซิร์ฟเวอร์ HTTP อื่นเช่น Apache การตั้งค่าทั่วไปอีกอย่างหนึ่งคือการวางไฟล์เซิร์ฟเวอร์เช่น Apache หรือ Nginx ไว้หน้า Tomcat จากนั้นส่งต่อคำขอ API ของคุณไปยัง Tomcat ในกรณีเหล่านี้ไลบรารี mod_JK ใช้เพื่อกำหนดค่า Tomcat และ Apache (หรือแม้แต่เว็บเซิร์ฟเวอร์อื่นเช่น IIS) เพื่อสื่อสาร

เพื่อประสิทธิภาพที่ดีขึ้นโดยหลักแล้วในการนำเสนอเนื้อหาแบบคงที่ Tomcat ยังมีตัวห่อเนทีฟสำหรับ Windows และ Linux สิ่งนี้เรียกว่าTomcat APRและดูข้อมูลเพิ่มเติมได้ที่นี่ สิ่งเหล่านี้ไม่จำเป็นสำหรับกรณีการใช้งานทั่วไป แต่ควรทราบ

Tomcat ในตัว

เป็นเวลานาน Jetty เป็นเซิร์ฟเวอร์เดียวที่สามารถทำงานเป็นเซิร์ฟเวอร์ฝังตัวได้ ที่เปลี่ยนไปและตอนนี้ Tomcat ยังสามารถเรียกใช้แบบฝัง แนวคิดในการใช้เซิร์ฟเวอร์ฝังตัวคือแทนที่จะเป็นเซิร์ฟเวอร์ที่มีไฟล์แอปพลิเคชันดังที่คุณเห็นจนถึงตอนนี้คุณมีแอปพลิเคชันที่มีคลาสหลัก (นั่นคือแอป Java แบบสแตนด์อโลน) ที่เรียกใช้ความสามารถของเซิร์ฟเวอร์จาก ภายในฐานรหัส โดยรวมแล้วสิ่งนี้นำเสนอรูปแบบการพัฒนาที่เรียบง่ายและพกพาได้ง่ายขึ้นและกลายเป็นบรรทัดฐานอย่างรวดเร็ว ตัวอย่างเช่น Spring Boot ใช้อินสแตนซ์ Tomcat แบบฝังที่ทำงานในโหมด dev

การรันเซิร์ฟเวอร์แบบฝังสามารถทำให้เกิดความเรียบง่ายในแง่ของการดำเนินการเนื่องจากตอนนี้คุณกำลังจัดการกับส่วนประกอบเดียว (แอป) แทนที่จะจัดการกับทั้งแอปและการปรับใช้เซิร์ฟเวอร์ ในทางกลับกันการตั้งค่าที่ Tomcat ทำงานเป็นโฮสต์อิสระยังคงเป็นเรื่องปกติ

TomEE

เป็นไปได้ที่จะใช้ความสามารถมาตรฐาน Java EE (หรือ Jakarta EE) กับ Tomcat ได้มากขึ้นโดยการเพิ่มไลบรารีเหล่านั้นใน Tomcat เองหรือในการอ้างอิงแอปพลิเคชันของคุณ อีกทางเลือกหนึ่งคือเซิร์ฟเวอร์ TomEE TomEE เป็นเอนจิ้น Tomcat เดียวกับที่รองรับ Java สำหรับองค์กรเพิ่มเติมรวมถึง JPA และ CDI (Contexts and Dependency Injection) API ที่เป็นที่นิยม ข้อมูลจำเพาะของ TomEE ขึ้นอยู่กับโปรไฟล์เว็บ Java EE ดังนั้นจึงให้คุณได้มากกว่า Tomcat แต่ไม่ใช่เซิร์ฟเวอร์แอป Java EE แบบเต็มรูปแบบเช่น WildFly หรือ Glassfish

ความพร้อมใช้งานสูงและการทำคลัสเตอร์

Tomcat รองรับความพร้อมใช้งานสูงและการทำคลัสเตอร์ ความพร้อมใช้งานสูงโดยพื้นฐานแล้วคือความสามารถในการล้มเหลวไปยังอินสแตนซ์อื่นของเซิร์ฟเวอร์และสร้างเซสชันใหม่ราวกับว่าไม่มีอะไรผิดพลาด การทำคลัสเตอร์คือความสามารถในการสร้างเซิร์ฟเวอร์เดียวกันหลายเวอร์ชันเพื่อรองรับการรับส่งข้อมูลปริมาณมาก

สรุป

Tomcat ยังคงพัฒนาอย่างต่อเนื่องก้าวทันการเปลี่ยนแปลงและนำเสนอแพลตฟอร์มที่มั่นคงและเชื่อถือได้สำหรับการปรับใช้เว็บแอป ทั้งความนิยมอย่างต่อเนื่องและทางเลือกในฐานะแพลตฟอร์ม Java เริ่มต้นสำหรับระบบ PaaS จำนวนมากเป็นพยานถึงความสำเร็จอย่างต่อเนื่อง

เรื่องนี้ "Tomcat คืออะไรคอนเทนเนอร์ Java servlet ดั้งเดิม" เผยแพร่ครั้งแรกโดย JavaWorld