Sự khác biệt giữa một máy chủ ứng dụng và một thùng chứa servlet?


115

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,



@Jigar: nếu bạn biết chính xác câu hỏi này trùng lặp, thì bạn thực sự nên bỏ phiếu để đóng nó như một bản sao.
Joachim Sauer

1
@Joachim Tôi đã không bỏ phiếu để đóng.
Jigar Joshi

2
bởi vì nó không phải là một bản sao. :)
Bozho

1
oops ... vui lòng bỏ qua cho tôi, có vẻ như tôi vẫn chưa đạt đến mức caffeine cần thiết.
Joachim Sauer

Câu trả lời:


171

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ể.


1
+1 từ phía tôi, Sự khác biệt tốt. Bất kỳ sự khác biệt nào nữa @Bozho
Deepak

1
@Bozho: +1: Một điều tôi nhận thấy cho đến nay về bạn là các thuật ngữ đơn giản mà bạn thường nhúng vào các câu trả lời tuyệt vời của mình.
Shirgill Farhan

1
nó @Bozho rất hữu ích
Xstian

@Bozho Các thùng chứa servlet có thể được gọi là máy chủ với tập hợp con khả năng của * máy chủ ứng dụng ". Và về sâu bên trong, chúng hoạt động giống nhau (đối với các trường hợp sử dụng chung cho cả hai).
Kuldeep Yadav

15

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.


Tôi đang hỏi từ góc độ doanh nghiệp.
Pushkar

11

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 :

  • Hộp chứa Applet,
  • Vùng chứa ứng dụng khách,
  • Vùng chứa web và
  • Hộp đựng EJB.

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.


2

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 đó.


thì máy chủ Apache thuộc thể loại nào?
đá lăn

Apache HTTP Server là một Web Server hoàn chỉnh .
asgs

2

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.