ความแตกต่างระหว่างแอ็พพลิเคชันเซิร์ฟเวอร์และคอนเทนเนอร์ servlet


115

ฉันพยายามทำความเข้าใจความแตกต่างระหว่างแอ็พพลิเคชันเซิร์ฟเวอร์ที่มีคุณสมบัติครบถ้วน (เช่น Weblogic, JBoss เป็นต้น) และคอนเทนเนอร์ servlet (Tomcat, Jetty เป็นต้น)

แตกต่างกันอย่างไรและควรใช้เมื่อใด

ขอบคุณ



@Jigar: ถ้าคุณรู้ว่าคำถามที่ถูกต้องนี้ซ้ำกันจริงๆแล้วคุณควรลงคะแนนเพื่อปิดมันว่าซ้ำกัน
Joachim Sauer

1
@ Joachim ฉันไม่ได้ปิดโหวต
Jigar Joshi

2
เพราะมันไม่ซ้ำกัน :)
Bozho

1
อ๊ะ ... อย่าลังเลที่จะเพิกเฉยฉันดูเหมือนว่าฉันจะยังไม่ถึงระดับคาเฟอีนที่จำเป็น
Joachim Sauer

คำตอบ:


171

servlet-container รองรับเฉพาะ servlet API (รวมถึง JSP, JSTL)

แอ็พพลิเคชันเซิร์ฟเวอร์รองรับ JavaEE ทั้งหมด - EJB, JMS, CDI, JTA, servlet API (รวมถึง JSP, JSTL) และอื่น ๆ

เป็นไปได้ที่จะเรียกใช้เทคโนโลยี JavaEE ส่วนใหญ่บน servlet-container แต่คุณต้องติดตั้งการใช้งานเทคโนโลยีเฉพาะแบบสแตนด์อโลน


1
+1 จากด้านข้างของฉันความแตกต่างที่ดีความแตกต่างอื่น ๆ อีกมากมาย @Bozho
Deepak

1
@Bozho: +1: สิ่งหนึ่งที่ฉันสังเกตเห็นเกี่ยวกับตัวคุณคือคำศัพท์ง่ายๆที่คุณมักจะฝังไว้ในคำตอบที่น่าทึ่งของคุณ
Shirgill Farhan

1
มีประโยชน์มาก @Bozho
Xstian

@Bozho สามารถเรียกใช้ servlet-container เป็นเซิร์ฟเวอร์ที่มีชุดย่อยความสามารถของ * application server "และลึกลงไปพวกเขาทำงานเหมือนกัน (สำหรับกรณีการใช้งานที่พบบ่อยสำหรับทั้งคู่)
Kuldeep Yadav

15

พูดอย่างกว้าง ๆ คอนเทนเนอร์ servlet จำกัด ตัวเองไม่มากก็น้อยในการใช้งานข้อกำหนด J2EE Servlet นอกจากนี้ยังให้ความสำคัญกับสภาพแวดล้อมรันไทม์และไม่ได้ให้เครื่องมือเพิ่มเติมมากนัก

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

สำหรับมือใหม่อาจจะดีกว่าถ้าอยู่กับตู้คอนเทนเนอร์ธรรมดาเนื่องจากเส้นโค้งการเรียนรู้มีความชันน้อยกว่ามาก


แก้ไข

@Apache Fan: ขึ้นอยู่กับสถานการณ์เฉพาะของคุณเช่นระบบที่มีอยู่และแผนในอนาคตเหนือสิ่งอื่นใด ฉันไม่คิดว่าวิธีการผังงานทั่วไปสามารถใช้ได้ที่นี่

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

อย่างไรก็ตามคำถามไม่ได้ให้เบาะแสว่าเกณฑ์การประเมินคืออะไร มันควรจะเป็นโอเพ่นซอร์สหรือไม่? จำเป็นต้องมีการสนับสนุนผู้จำหน่ายตลอดเวลาหรือไม่? ระบบควรรวมเข้ากับสภาพแวดล้อมขององค์กรแบบใด ค่าธรรมเนียมใบอนุญาตเป็นปัญหาหรือไม่? เทคโนโลยีหรือเครื่องมือที่ต้องมี? เป็นต้น

การถ่ายภาพในที่มืดโดยไม่รู้ตัว


ฉันกำลังถามจากมุมมองขององค์กร
Pushkar

11

โดยทั่วไปแอ็พพลิเคชันเซิร์ฟเวอร์ในบริบท Java EE เป็นซอฟต์แวร์ที่ติดตั้งบนเซิร์ฟเวอร์และใช้ข้อกำหนด Java EE หนึ่งรายการ (เช่น Java EE 7) นั่นหมายความว่าซอฟต์แวร์ดังกล่าว (แอ็พพลิเคชันเซิร์ฟเวอร์) ต้องสามารถรันแอปพลิเคชัน Java EE ได้

Java EE กำหนดโดเมน 4 โดเมนซึ่งเรียกว่าคอนเทนเนอร์ :

  • คอนเทนเนอร์แอพเพล็ต
  • คอนเทนเนอร์ไคลเอนต์แอปพลิเคชัน
  • เว็บคอนเทนเนอร์และ
  • คอนเทนเนอร์ EJB

สองคอนเทนเนอร์เป็นส่วนหนึ่งของแอ็พพลิเคชันเซิร์ฟเวอร์ (EJB และ Web container) และอีกสองคอนเทนเนอร์เป็นส่วนหนึ่งของคอมพิวเตอร์ไคลเอนต์

JBoss และ Weblogic เป็นแอปพลิเคชันเซิร์ฟเวอร์ Tomcat และ Jetty เป็นเว็บคอนเทนเนอร์ นั่นเป็นเหตุผลที่ JBoss และ Weblogic สามารถจัดการกับเทคโนโลยีได้มากกว่า Web container แอ็พพลิเคชันเซิร์ฟเวอร์สามารถจัดการ EJB

Servlet container ไม่ใช่นิพจน์ที่เหมาะสมสำหรับ Tomcat และ Jetty ที่ผ่านการรับรองเนื่องจากมีข้อ จำกัด มากกว่า Tomcat ยังสามารถรัน JSP และ JSF ได้ไม่เพียง แต่ Servlets เท่านั้น


2

afaik, websphere และ jboss เป็นเซิร์ฟเวอร์ j2ee ที่เข้ากันได้อย่างสมบูรณ์ซึ่งสามารถทำงานได้นอกเหนือจาก servlets เช่น EJB ในขณะที่ Tomcat เป็นเพียงคอนเทนเนอร์ servlet และคุณไม่สามารถเรียกใช้ EJB ได้


แล้วเซิร์ฟเวอร์ Apache ประเภทไหนมา?
หินกลิ้ง

Apache HTTP Server เป็นเต็มเป่าWeb Server
asgs

2

ในแง่ของคนธรรมดา: เว็บเซิร์ฟเวอร์หมายถึง: การจัดการคำขอ HTTP (โดยปกติจะมาจากเบราว์เซอร์)

Servlet Container (เช่น Tomcat) หมายถึง:สามารถจัดการกับ servlets & JSP

Application Server (เช่น GlassFish) หมายถึง: * สามารถจัดการแอปพลิเคชัน Java EE ได้ (โดยปกติจะเป็นทั้ง servlet / JSP และ EJBs)

สำหรับมือใหม่น่าจะดีกว่าถ้าใช้ตู้คอนเทนเนอร์ธรรมดา

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