JBoss vs Tomcat อีกครั้ง [ปิด]


138

นี่จะเป็นคำถามเก่าอายุ (ซึ่งก็คือ :)) ว่าเซิร์ฟเวอร์ใดดีกว่าระหว่าง Tomcat และ JBoss แต่ฉันยังไม่พบคำตอบที่ดีพอที่จะแก้ปัญหาของฉัน

ฉันรู้ว่า Tomcat เป็นเพียงเครื่องมือ servlet และ JBoss นำเสนอฟังก์ชั่นอื่น ๆ อีกมากมาย แต่สิ่งที่ฉันไม่เข้าใจคือทำไม Tomcat ใช้งานได้ดีกว่าในบางสถานการณ์มากกว่า jboss ฉันอ่านบางแห่งที่ JBoss มีสถาปัตยกรรมที่เสียบปลั๊กได้และหากจำเป็นคุณสามารถถอดปลั๊กคุณสมบัติจาก JBoss เพื่อทำให้มันเป็นคอนเทนเนอร์ servlet Tomcat หากเป็นเช่นนั้นคุณควรใช้ Tomcat แทนการใช้ Tomcat เพื่อไม่ให้เกิดปัญหา

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

โดยพื้นฐานแล้วแอปพลิเคชันของฉันไม่มีคุณสมบัติ Java EE ใด ๆ แต่ข้อโต้แย้ง 'เบาบาง' ซึ่งสนับสนุน Tomcat นั้นไม่น่าเชื่อถือเพียงพอเนื่องจากเหตุผลดังกล่าวข้างต้น

กรุณาช่วย.

แก้ไข: ในที่สุดเราก็ตัดสินใจใช้ tomcat ตั้งแต่นั้นมาและเราได้ใช้มันมานานกว่า 6 เดือนแล้วและใช้งานง่ายมาก Infact เราพบการใช้งานจริงที่เราสามารถเรียกใช้งานอินสแตนซ์ tomcat หลาย ๆ อันได้อย่างง่ายดายบนเครื่องเซิร์ฟเวอร์เดียวกันสำหรับนักพัฒนาที่แตกต่างกันซึ่งอาจเป็นเรื่องยากสำหรับ jboss

ฉันพบว่าแมวตัวผู้จะยุ่งสำหรับงานของเราและดังนั้นจึงอาจเป็นตัวเลือกที่เหมาะสมเมื่อคุณไม่ได้ใช้คุณสมบัติ Java EE มาก PS: โปรดทราบว่าเรายังคงใช้ Spring และ Hibernate กับ Tomcat


1
เอ่อ JBoss ไม่ได้รวมกับ Tomcat?
Navi

4
@Navi: ไม่จริง มันมีโค้ดฐานของ Tomcat แยกกันอยู่ แต่มันแยกกันเล็กน้อย
skaffman

1
แอปพลิเคชันเว็บแบบง่ายที่ไม่มีคุณสมบัติ j2ee ควรปรับใช้อย่างง่ายดายบนคอนเทนเนอร์ servlet ที่เข้ากันได้ ให้สิ่งนี้มันไม่สำคัญมากนักสำหรับตัวคุณ ฉันจะเริ่มต้นด้วยการปรับใช้ที่ง่ายที่สุด (Tomcat และ Jetty ทั้งคู่ทำหน้าที่ฉันได้ดีในอดีต)
Joel

3
FYI ในปลายปี 2011 Tomcat ได้รับการรับรอง JavaEE 6 ในฐานะTomEEเพื่อตอบคำถามเก่าอายุนี้
David Blevins

1
ques ปิดที่มีมุมมองประมาณ 150K, 125 upvotes และ 0 downvotes? !! ฉันรู้ว่าสิ่งเหล่านี้เป็นกฎ แต่ฉันต้องบอกว่ากฎเหล่านั้นจะต้องเปลี่ยนไปเล็กน้อย
Muhammed Refaat

คำตอบ:


132

ครั้งแรกที่ข้อเท็จจริงไม่เป็นดีกว่า ดังที่คุณได้กล่าวไปแล้ว Tomcat จัดให้มี servlet container ที่รองรับข้อมูลจำเพาะของ servlet (Tomcat 7 รองรับ Servlet 3.0) JBoss AS แอปพลิเคชันเซิร์ฟเวอร์ 'สมบูรณ์' รองรับ Java EE 6 (รวมถึง Servlet 3.0) ในเวอร์ชันปัจจุบัน

Tomcat มีน้ำหนักเบาพอสมควรและในกรณีที่คุณต้องการคุณสมบัติ Java EE บางอย่างนอกเหนือจาก Servlet API คุณสามารถปรับปรุง Tomcat ได้อย่างง่ายดายด้วยการจัดหาไลบรารี่ที่ต้องการซึ่งเป็นส่วนหนึ่งของแอปพลิเคชันของคุณ ตัวอย่างเช่นหากคุณต้องการคุณสมบัติ JPA คุณสามารถรวม Hibernate หรือ OpenEJB และ JPA ทำงานได้เกือบจะนอกกรอบ

วิธีการตัดสินใจว่าจะใช้ Tomcat หรือJava EEเซิร์ฟเวอร์แอปพลิเคชันแบบเต็ม:

เมื่อเริ่มโครงการของคุณคุณควรมีความคิดว่ามันต้องการอะไร หากคุณอยู่ในสภาพแวดล้อมขององค์กรขนาดใหญ่ JBoss (หรือเซิร์ฟเวอร์ Java EE อื่น ๆ ) อาจเป็นตัวเลือกที่เหมาะสมเนื่องจากให้การสนับสนุนในตัวเช่น:

  1. การส่งข้อความ JMS สำหรับการรวมแบบอะซิงโครนัส
  2. เอ็นจิน Web Services (JAX-WS และ / หรือ JAX-RS)
  3. ความสามารถในการจัดการเช่น JMX และอินเตอร์เฟสการบริหารสคริปต์
  4. การรักษาความปลอดภัยขั้นสูงเช่นการผนวกรวมกับไดเรกทอรีบุคคลที่สาม
  5. ไฟล์ EAR แทนไฟล์สนับสนุน "เท่านั้น" WAR
  6. คุณลักษณะ Java EE อื่น ๆ "ยอดเยี่ยม" ที่ฉันจำไม่ได้ :-)

ในความคิดของฉัน Tomcat เป็นแบบที่ดีมากถ้ามันเป็นเว็บศูนย์กลางผู้ใช้หันหน้าไปทางแอปพลิเคชัน หากการรวมแบ็กเอนด์เข้ามาสู่การเล่นเซิร์ฟเวอร์แอปพลิเคชัน Java EE ควรได้รับการพิจารณา (อย่างน้อย) สุดท้าย แต่ไม่ท้ายสุดการโยกย้าย WAR ที่พัฒนาขึ้นสำหรับ Tomcat ไปยัง JBoss ควรเป็นการออกกำลังกาย 1 วัน

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

2 เซ็นต์ของฉัน


13

ลองดูที่TOMEE

มันมีคุณสมบัติทั้งหมดที่คุณต้องสร้างแอพ Java EE ที่สมบูรณ์


7

แน่นอนฉันจะดู TomEE เนื่องจากแนวคิดที่อยู่เบื้องหลังคือการทำให้ Tomcat ทำให้การรวม JavaEE 6 ทั้งหมดหายไปโดยปริยาย นั่นเป็นการประนีประนอมที่ดีมาก


6

พูดอย่างเคร่งครัด; ไม่มีคุณสมบัติ Java EE ที่แอปของคุณแทบจะไม่ต้องใช้ appserver เลย ;-)

เช่นเดียวกับคนอื่น ๆ ได้ชี้ให้เห็น JBoss มีสแต็ค Java EE แบบเต็ม (มากหรือน้อย) ในขณะที่ Tomcat เป็น webcontainer เท่านั้น JBoss สามารถกำหนดค่าให้ทำหน้าที่เป็น webcontainer เท่านั้นเช่นกันจากนั้นจะเป็น wrapper เล็ก ๆ รอบ ๆ ตัวรวม webcontainer ของ tomcat ด้วยวิธีนี้คุณจะมี JBoss น้ำหนักเบาเกือบเท่าซึ่งจริงๆแล้วมันจะเป็น "เสื้อคลุม" บาง ๆ รอบ ๆ Tomcat นั่นจะเป็นน้ำหนักเบาเกือบเท่า

หากคุณไม่ต้องการอุปกรณ์เสริมใด ๆ ที่ JBoss เสนอให้ลองเลือกสิ่งที่คุณสะดวกสบายที่สุด สิ่งใดที่ง่ายที่สุดในการกำหนดค่าและบำรุงรักษาสำหรับคุณ


1
มันยากแค่ไหนที่จะใช้บริการเว็บและ jmx กับ tomcat คุณช่วยกรุณาอ้างอิง / ลิงค์ที่ดีได้ไหม
Ashish

2

ฉันได้อ่านด้วยว่าสำหรับเซิร์ฟเวอร์บางตัวตัวอย่างเช่นความต้องการใช้คำอธิบายประกอบแบบย่อเท่านั้น แต่ในเซิร์ฟเวอร์บางตัวการฉีดควรทำด้วยตนเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.