Tomcat เป็นโครงการหลักในโครงการจาการ์ตาของ Apache Software Foundation ได้รับการพัฒนาร่วมกันโดย Apache, Sun และบริษัทอื่นๆ และบุคคลทั่วไป เนื่องจากการมีส่วนร่วมและการสนับสนุนของ Sun ข้อกำหนดล่าสุดของ Servlet และ JSP จึงสามารถสะท้อนให้เห็นใน Tomcat ได้เสมอ เนื่องจาก Tomcat มีเทคโนโลยีขั้นสูง มีเสถียรภาพ และใช้งานได้ฟรี จึงได้รับความนิยมอย่างมากจากผู้ที่ชื่นชอบ Java และได้รับการยอมรับจากนักพัฒนาซอฟต์แวร์บางราย จึงกลายเป็น Web Application Server ยอดนิยม จึงได้รับความนิยมอย่างมากเนื่องจากใช้เวลาเพียงเล็กน้อย ทรัพยากรระบบเมื่อทำงาน มี scalability ที่ดีและรองรับฟังก์ชันที่ใช้กันทั่วไปในระบบแอปพลิเคชันการพัฒนา เช่น load balancing และบริการอีเมล และมีการปรับปรุงและปรับปรุงอย่างต่อเนื่อง ใครก็ตามที่สนใจโปรแกรมเมอร์สามารถเปลี่ยนหรือเพิ่มฟังก์ชันใหม่ลงไปได้
อาปาเช่ Tomcat เวอร์ชัน 6.0.20
บันทึกประจำรุ่น
-
ปัญหาที่ทราบในรุ่นนี้:
-
*การเปลี่ยนแปลงการพึ่งพา
* แอปพลิเคชันที่ใช้ JNI
* API ที่แถมมา
* การโหลดแอปพลิเคชันบนเว็บและฟิลด์คงที่ในไลบรารีที่แชร์
* Tomcat บน Linux
* เปิดใช้งานการสนับสนุน SSI และ CGI
* URL ผู้จัดการความปลอดภัย
* การเชื่อมโยงทรัพยากรแบบคงที่
* เปิดใช้งานเซิร์ฟเล็ตผู้เรียกใช้
* การดูบันทึกการเปลี่ยนแปลง Tomcat
* เมื่อสิ่งอื่นล้มเหลว
-
การเปลี่ยนแปลงการพึ่งพา:
-
Tomcat 6.0 ได้รับการออกแบบมาให้ทำงานบน JSE 5.0 และใหม่กว่า
นอกจากนี้ Tomcat 6.0 ยังใช้คอมไพเลอร์ Eclipse JDT Java สำหรับการคอมไพล์
หน้า JSP ซึ่งหมายความว่าคุณไม่จำเป็นต้องมีหน้าที่สมบูรณ์อีกต่อไป
Java Development Kit (JDK) เพื่อรัน Tomcat แต่เป็น Java Runtime Environment
(JRE) ก็เพียงพอแล้ว คอมไพลเลอร์ Eclipse JDT Java ถูกรวมเข้ากับ
การแจกแจง Tomcat แบบไบนารี Tomcat ยังสามารถกำหนดค่าให้ใช้
คอมไพเลอร์จาก JDK เพื่อคอมไพล์ JSP หรือคอมไพเลอร์ Java อื่น ๆ ที่รองรับ
โดย Apache Ant
-
แอปพลิเคชันที่ใช้ JNI:
-
แอปพลิเคชันที่ต้องใช้ไลบรารีดั้งเดิมต้องแน่ใจว่าไลบรารีนั้นมี
ถูกโหลดก่อนใช้งาน โดยทั่วไป จะดำเนินการด้วยการโทรดังนี้:
คงที่ {
System.loadLibrary("เส้นทางไปยังไลบรารีไฟล์");
-
ในบางชั้นเรียน อย่างไรก็ตาม แอปพลิเคชันจะต้องแน่ใจว่าห้องสมุดนั้น
ไม่ได้โหลดมากกว่าหนึ่งครั้ง หากโค้ดข้างต้นถูกวางไว้ในคลาสภายใน
เว็บแอปพลิเคชัน (เช่น ภายใต้ /WEB-INF/classes หรือ /WEB-INF/lib) และ
โหลดแอปพลิเคชันใหม่แล้ว จะพยายามเรียก loadLibrary() สักครู่
เวลา.
เพื่อหลีกเลี่ยงปัญหานี้ ให้วางคลาสที่โหลดไลบรารีดั้งเดิมไว้ภายนอก
เว็บแอปพลิเคชัน และตรวจสอบให้แน่ใจว่าการเรียก loadLibrary() ดำเนินการเพียงครั้งเดียว
ในช่วงชีวิตของ JVM โดยเฉพาะ
-
API แบบรวม:
-
การติดตั้งมาตรฐานของ Tomcat 6.0 ทำให้ API ต่อไปนี้ทั้งหมดพร้อมใช้งาน
เพื่อใช้งานโดยเว็บแอปพลิเคชัน (โดยวางไว้ใน "lib"):
* annotations-api.jar (แพ็คเกจคำอธิบายประกอบ)
* catalina.jar (การใช้งาน Tomcat Catalina)
* catalina-ant.jar (งาน Tomcat Catalina Ant)
* catalina-ha.jar (แพ็คเกจความพร้อมใช้งานสูง)
* catalina-tribes.jar (การสื่อสารแบบกลุ่ม)
* el-api.jar (EL 2.1 API)
* jasper.jar (คอมไพเลอร์ Jasper 2 และรันไทม์)
* jasper-el.jar (การใช้งาน Jasper 2 EL)
* jasper-jdt.jar (คอมไพเลอร์ Eclipse JDT 3.3 Java)
* jsp-api.jar (JSP 2.1 API)
* servlet-api.jar (เซิร์ฟเล็ต 2.5 API)
* tomcat-coyote.jar (ตัวเชื่อมต่อ Tomcat และคลาสยูทิลิตี้)
* tomcat-dbcp.jar (แพ็กเกจเปลี่ยนชื่อเป็นพูลการเชื่อมต่อฐานข้อมูลตาม Commons DBCP)
คุณสามารถทำให้ API เพิ่มเติมพร้อมใช้งานสำหรับเว็บแอปพลิเคชันทั้งหมดของคุณโดย
วางคลาสที่คลายการบีบอัดลงในไดเร็กทอรี "classes" (ไม่ได้สร้างโดยค่าเริ่มต้น)
หรือวางไว้ในไฟล์ JAR ในไดเร็กทอรี "lib"
หากต้องการแทนที่การใช้ตัวแยกวิเคราะห์ XML หรืออินเทอร์เฟซ ให้ใช้ที่ได้รับการรับรอง
กลไกของ JVM การกำหนดค่าเริ่มต้นจะกำหนด JAR ที่อยู่ใน
"รับรอง" ตามที่ได้รับการรับรอง
================================================== ==============
การรีโหลดแอปพลิเคชันเว็บและฟิลด์คงที่ในไลบรารีที่แบ่งใช้:
================================================== ==============
ไลบรารีที่แบ่งใช้บางไลบรารี (หลายไลบรารีเป็นส่วนหนึ่งของ JDK) เก็บการอ้างอิงถึงอ็อบเจ็กต์
สร้างอินสแตนซ์โดยเว็บแอปพลิเคชัน เพื่อหลีกเลี่ยงปัญหาที่เกี่ยวข้องกับการโหลดคลาส
(ClassCastExceptions ข้อความที่ระบุว่า classloader
หยุดทำงาน ฯลฯ) สถานะของไลบรารีที่แบ่งใช้ควรได้รับการเริ่มต้นใหม่
สิ่งที่อาจช่วยได้คือการหลีกเลี่ยงการใส่คลาสที่น่าจะเป็น
อ้างอิงโดยฟิลด์สแตติกที่ใช้ร่วมกันในเว็บแอปพลิเคชัน classloader
และนำไปไว้ในคลาสโหลดเดอร์ที่แชร์แทน (ควรใส่ JAR ในไฟล์
โฟลเดอร์ "lib" และคลาสควรอยู่ในโฟลเดอร์ "classes")
-
ทอมแคทบน Linux:
-
ผู้ใช้ GLIBC 2.2 / Linux 2.4 ควรกำหนดตัวแปรสภาพแวดล้อม:
ส่งออก LD_ASSUME_KERNEL=2.2.5
ผู้ใช้ Redhat Linux 9.0 ควรใช้การตั้งค่าต่อไปนี้เพื่อหลีกเลี่ยง
ปัญหาความมั่นคง:
ส่งออก LD_ASSUME_KERNEL=2.4.1
มีข้อบกพร่องของ Linux บางตัวที่รายงานเกี่ยวกับพฤติกรรม sendfile ของ NIO ตรวจสอบให้แน่ใจว่าคุณ
มี JDK ที่เป็นปัจจุบัน หรือปิดใช้งานลักษณะการทำงาน sendfile ใน Connector
6427312: (fc) FileChannel.transferTo() พ่น IOException "การเรียกของระบบถูกขัดจังหวะ"
5103988: (fc) FileChannel.transferTo ควรส่งคืน -1 สำหรับ EAGAIN แทนที่จะส่ง IOException
6253145: (fc) FileChannel.transferTo บน Linux ล้มเหลวเมื่อเกินขอบเขต 2GB
6470086: (fc) FileChannel.transferTo (2147483647, 1, channel) ทำให้เกิดข้อยกเว้น "ค่าใหญ่เกินไป"
-
การเปิดใช้งานการสนับสนุน SSI และ CGI:
-
เนื่องจากมีความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับ CGI และ SSI ที่มีอยู่
สำหรับเว็บแอปพลิเคชัน คุณลักษณะเหล่านี้จะถูกปิดใช้งานตามค่าเริ่มต้น
หากต้องการเปิดใช้งานและกำหนดค่าการสนับสนุน CGI โปรดดูหน้า cgi-howto.html
หากต้องการเปิดใช้งานและกำหนดค่าการสนับสนุน SSI โปรดดูที่หน้า ssi-howto.html
-
URL ของผู้จัดการความปลอดภัย:
-
เพื่อให้สิทธิ์ด้านความปลอดภัยแก่ JAR ที่อยู่ภายใน
พื้นที่เก็บข้อมูลเว็บแอปพลิเคชัน ใช้ URL ในรูปแบบต่อไปนี้
ในไฟล์นโยบายของคุณ:
ไฟล์:${catalina.home}/webapps/examples/WEB-INF/lib/driver.jar
-
การเชื่อมโยงทรัพยากรแบบคงที่:
-
ตามค่าเริ่มต้น Unix symlink จะไม่ทำงานเมื่อใช้ในเว็บแอปพลิเคชันเพื่อลิงก์
ทรัพยากรที่อยู่นอกไดเร็กทอรีรูทของเว็บแอปพลิเคชัน
ลักษณะการทำงานนี้เป็นทางเลือก และอาจใช้แฟล็ก "allowLinking" เพื่อปิดใช้งาน
เช็ค
-
การเปิดใช้งานเซิร์ฟเล็ตผู้เรียกใช้:
-
ตั้งแต่ Tomcat 4.1.12 เป็นต้นไป เซิร์ฟเล็ตของผู้เรียกใช้จะไม่สามารถใช้งานได้อีกต่อไป
ค่าเริ่มต้นใน webapps ทั้งหมด การเปิดใช้งานสำหรับ webapps ทั้งหมดสามารถทำได้โดยการแก้ไข
$CATALINA_HOME/conf/web.xml เพื่อยกเลิกการใส่เครื่องหมายข้อคิดเห็นการแมปเซิร์ฟเล็ต "/servlet/*"
คำนิยาม.
ไม่แนะนำให้ใช้เซิร์ฟเล็ตผู้เรียกใช้ในสภาพแวดล้อมการใช้งานจริง และ
ไม่รองรับรายละเอียดเพิ่มเติมเกี่ยวกับคำถามที่พบบ่อยของ Tomcat ที่
http://tomcat.apache.org/faq/misc.html#inviver
-
การดูบันทึกการเปลี่ยนแปลง Tomcat:
-
ดู changelog.html ในไดเร็กทอรีนี้
-
เมื่อสิ่งอื่นล้มเหลว:
-
ดูคำถามที่พบบ่อย
http://tomcat.apache.org/faq/
ขยาย