Tôi đang cố gắng hiểu sự khác biệt giữa máy chủ ứng dụng chính thức (ví dụ: Weblogic, JBoss, v.v.) và vùng chứa servlet (Tomcat, Jetty, v.v.).
Chúng khác nhau như thế nào và khi nào thì sử dụng?
Cảm ơn,
Tôi đang cố gắng hiểu sự khác biệt giữa máy chủ ứng dụng chính thức (ví dụ: Weblogic, JBoss, v.v.) và vùng chứa servlet (Tomcat, Jetty, v.v.).
Chúng khác nhau như thế nào và khi nào thì sử dụng?
Cảm ơn,
Câu trả lời:
Một thùng chứa servlet chỉ hỗ trợ API servlet (bao gồm JSP, JSTL).
Máy chủ ứng dụng hỗ trợ toàn bộ JavaEE - EJB, JMS, CDI, JTA, API servlet (bao gồm JSP, JSTL), v.v.
Có thể chạy hầu hết các công nghệ JavaEE trên một thùng chứa servlet, nhưng bạn phải cài đặt một triển khai độc lập của công nghệ cụ thể.
Nói chung, một thùng chứa servlet tự hạn chế ít nhiều đối với việc triển khai đặc tả Servlet của J2EE. Ngoài ra, nó tập trung vào môi trường thời gian chạy và không quá nhiều vào việc cung cấp các công cụ bổ sung.
Ngược lại, một máy chủ ứng dụng chính thức thực hiện toàn bộ ngăn xếp J2EE; cộng với nó đi kèm với tất cả các công cụ doanh nghiệp và khả năng tích hợp. Một máy chủ ứng dụng thường có các giao diện quản trị tiên tiến, nó hỗ trợ phân cụm và các tính năng khác được sử dụng hầu hết trong phát triển hệ thống cao cấp.
Đối với người mới bắt đầu, có lẽ tốt hơn là nên ở với một thùng chứa servlet đơn giản, vì đường học tập ở đó ít dốc hơn nhiều.
Biên tập
@Apache Fan: Nó phụ thuộc vào các chi tiết cụ thể của tình huống của bạn như hệ thống hiện có và kế hoạch tương lai cùng những thứ khác. Tôi không nghĩ rằng cách tiếp cận sơ đồ chung có thể áp dụng ở đây.
Lựa chọn nền tảng thường được thực hiện bằng cách cân nhắc các yêu cầu cụ thể dựa trên kiến thức trực tiếp về các hệ thống đang được xem xét.
Tuy nhiên, câu hỏi không đưa ra manh mối về tiêu chí đánh giá là gì. Nó có nên là mã nguồn mở không? Hỗ trợ nhà cung cấp suốt ngày đêm có cần thiết không? Hệ thống nên tích hợp với loại môi trường doanh nghiệp nào? Phí cấp phép có phải là một vấn đề? Bất kỳ công nghệ hoặc công cụ phải có? Vân vân.
Nếu không biết những điều trên, nó chụp khá nhiều trong bóng tối.
Về cơ bản, một máy chủ ứng dụng trong ngữ cảnh Java EE là một phần mềm được cài đặt trên một máy chủ và thực hiện một đặc tả Java EE (ví dụ như Java EE 7). Điều đó có nghĩa là phần mềm đó (máy chủ ứng dụng) phải có thể chạy ứng dụng Java EE.
Java EE định nghĩa 4 miền, cái gọi là vùng chứa :
Hai vùng chứa là một phần của máy chủ ứng dụng (EJB và vùng chứa Web) và hai vùng khác là một phần của máy khách-máy tính.
JBoss và Weblogic là máy chủ ứng dụng, Tomcat và Jetty là vùng chứa web. Đó là lý do tại sao JBoss và Weblogic có thể xử lý nhiều công nghệ hơn là một vùng chứa Web. Máy chủ ứng dụng có thể quản lý EJB.
Servlet container không phải là biểu thức thích hợp cho Tomcat và Jetty đủ điều kiện vì nó hạn chế hơn. Tomcat cũng có thể thực thi JSP và JSF, không chỉ Servlet.
afaik, websphere và jboss là j2ee-server hoàn toàn tuân thủ, có thể chạy ngoài các servlet, như EJB, trong khi Tomcat chỉ là một thùng chứa servlet và bạn không thể chạy các EJB trên đó.
Theo thuật ngữ Layman: Máy chủ web có nghĩa là: Xử lý các yêu cầu HTTP (thường từ các trình duyệt).
Một Servlet Container (ví dụ Tomcat) có nghĩa là: Nó có thể xử lý các servlet & JSP.
Máy chủ ứng dụng (ví dụ: GlassFish) có nghĩa là: * Nó có thể quản lý các ứng dụng Java EE (thường là cả servlet / JSP và EJB).
Đối với người mới bắt đầu, có lẽ tốt hơn là nên ở với một thùng chứa servlet đơn giản.