ฉันพยายามทำความเข้าใจความแตกต่างระหว่างแอ็พพลิเคชันเซิร์ฟเวอร์ที่มีคุณสมบัติครบถ้วน (เช่น Weblogic, JBoss เป็นต้น) และคอนเทนเนอร์ servlet (Tomcat, Jetty เป็นต้น)
แตกต่างกันอย่างไรและควรใช้เมื่อใด
ขอบคุณ
ฉันพยายามทำความเข้าใจความแตกต่างระหว่างแอ็พพลิเคชันเซิร์ฟเวอร์ที่มีคุณสมบัติครบถ้วน (เช่น Weblogic, JBoss เป็นต้น) และคอนเทนเนอร์ servlet (Tomcat, Jetty เป็นต้น)
แตกต่างกันอย่างไรและควรใช้เมื่อใด
ขอบคุณ
คำตอบ:
servlet-container รองรับเฉพาะ servlet API (รวมถึง JSP, JSTL)
แอ็พพลิเคชันเซิร์ฟเวอร์รองรับ JavaEE ทั้งหมด - EJB, JMS, CDI, JTA, servlet API (รวมถึง JSP, JSTL) และอื่น ๆ
เป็นไปได้ที่จะเรียกใช้เทคโนโลยี JavaEE ส่วนใหญ่บน servlet-container แต่คุณต้องติดตั้งการใช้งานเทคโนโลยีเฉพาะแบบสแตนด์อโลน
พูดอย่างกว้าง ๆ คอนเทนเนอร์ servlet จำกัด ตัวเองไม่มากก็น้อยในการใช้งานข้อกำหนด J2EE Servlet นอกจากนี้ยังให้ความสำคัญกับสภาพแวดล้อมรันไทม์และไม่ได้ให้เครื่องมือเพิ่มเติมมากนัก
ในทางตรงกันข้ามแอ็พพลิเคชันเซิร์ฟเวอร์เต็มรูปแบบจะใช้สแต็ก J2EE ทั้งหมด นอกจากนี้ยังมาพร้อมกับเครื่องมือระดับองค์กรและความเป็นไปได้ในการผสานรวม โดยปกติแอ็พพลิเคชันเซิร์ฟเวอร์จะมีอินเทอร์เฟซการดูแลระบบขั้นสูงรองรับการทำคลัสเตอร์และคุณสมบัติอื่น ๆ ที่ใช้ส่วนใหญ่ในการพัฒนาระบบระดับไฮเอนด์
สำหรับมือใหม่อาจจะดีกว่าถ้าอยู่กับตู้คอนเทนเนอร์ธรรมดาเนื่องจากเส้นโค้งการเรียนรู้มีความชันน้อยกว่ามาก
แก้ไข
@Apache Fan: ขึ้นอยู่กับสถานการณ์เฉพาะของคุณเช่นระบบที่มีอยู่และแผนในอนาคตเหนือสิ่งอื่นใด ฉันไม่คิดว่าวิธีการผังงานทั่วไปสามารถใช้ได้ที่นี่
โดยทั่วไปการเลือกแพลตฟอร์มทำได้โดยการชั่งน้ำหนักข้อกำหนดเฉพาะเทียบกับความรู้โดยตรงเกี่ยวกับระบบที่กำลังพิจารณา
อย่างไรก็ตามคำถามไม่ได้ให้เบาะแสว่าเกณฑ์การประเมินคืออะไร มันควรจะเป็นโอเพ่นซอร์สหรือไม่? จำเป็นต้องมีการสนับสนุนผู้จำหน่ายตลอดเวลาหรือไม่? ระบบควรรวมเข้ากับสภาพแวดล้อมขององค์กรแบบใด ค่าธรรมเนียมใบอนุญาตเป็นปัญหาหรือไม่? เทคโนโลยีหรือเครื่องมือที่ต้องมี? เป็นต้น
การถ่ายภาพในที่มืดโดยไม่รู้ตัว
โดยทั่วไปแอ็พพลิเคชันเซิร์ฟเวอร์ในบริบท Java EE เป็นซอฟต์แวร์ที่ติดตั้งบนเซิร์ฟเวอร์และใช้ข้อกำหนด Java EE หนึ่งรายการ (เช่น Java EE 7) นั่นหมายความว่าซอฟต์แวร์ดังกล่าว (แอ็พพลิเคชันเซิร์ฟเวอร์) ต้องสามารถรันแอปพลิเคชัน Java EE ได้
Java EE กำหนดโดเมน 4 โดเมนซึ่งเรียกว่าคอนเทนเนอร์ :
สองคอนเทนเนอร์เป็นส่วนหนึ่งของแอ็พพลิเคชันเซิร์ฟเวอร์ (EJB และ Web container) และอีกสองคอนเทนเนอร์เป็นส่วนหนึ่งของคอมพิวเตอร์ไคลเอนต์
JBoss และ Weblogic เป็นแอปพลิเคชันเซิร์ฟเวอร์ Tomcat และ Jetty เป็นเว็บคอนเทนเนอร์ นั่นเป็นเหตุผลที่ JBoss และ Weblogic สามารถจัดการกับเทคโนโลยีได้มากกว่า Web container แอ็พพลิเคชันเซิร์ฟเวอร์สามารถจัดการ EJB
Servlet container ไม่ใช่นิพจน์ที่เหมาะสมสำหรับ Tomcat และ Jetty ที่ผ่านการรับรองเนื่องจากมีข้อ จำกัด มากกว่า Tomcat ยังสามารถรัน JSP และ JSF ได้ไม่เพียง แต่ Servlets เท่านั้น
afaik, websphere และ jboss เป็นเซิร์ฟเวอร์ j2ee ที่เข้ากันได้อย่างสมบูรณ์ซึ่งสามารถทำงานได้นอกเหนือจาก servlets เช่น EJB ในขณะที่ Tomcat เป็นเพียงคอนเทนเนอร์ servlet และคุณไม่สามารถเรียกใช้ EJB ได้
ในแง่ของคนธรรมดา: เว็บเซิร์ฟเวอร์หมายถึง: การจัดการคำขอ HTTP (โดยปกติจะมาจากเบราว์เซอร์)
Servlet Container (เช่น Tomcat) หมายถึง:สามารถจัดการกับ servlets & JSP
Application Server (เช่น GlassFish) หมายถึง: * สามารถจัดการแอปพลิเคชัน Java EE ได้ (โดยปกติจะเป็นทั้ง servlet / JSP และ EJBs)
สำหรับมือใหม่น่าจะดีกว่าถ้าใช้ตู้คอนเทนเนอร์ธรรมดา