Websphere Là Gì – Máy Chủ Ứng Dụng

Có cần ứng dụng Java EE để có các máy chủ web như Sun Java Web Server để xử lý yêu cầu servlet/jsp và chuyển tiếp tới Máy chủ ứng dụng như IBM WebSphere hoặc BEA WebLogic không?

Vì Máy chủ ứng dụng có thể xử lý các servlet/jsp như vậy không?



Những lợi thế/bất lợi của kiến ​​trúc máy chủ như vậy là gì?

Apache Tomcat , Cầu tàu Máy chủ web hệ thống Sun Java chỉ là các thùng chứa Java Web (Servlet), nghĩa là chúng chỉ có thể thực thi Servlets/JSP – chúng không cung cấp ngăn xếp API Java EE đầy đủ.

Đang xem: Websphere là gì

Như vậy, họ chỉ có thể triển khai các tệp .war, không phải .ear (cũng bao gồm các mô đun .jar với EJB) và không hỗ trợ một số API Java EE như JSF hoặc CDI. hoặc các chức năng/API khác. Điều quan trọng cần lưu ý là, vì các tệp Java EE6, .war có thể chứa EJB . Thông tin thêm về sự khác biệt về .war và .ear.

<.__.> Mỗi máy chủ Java EE có Web Container + EJB Container . <.__.> (Bạn có thể thấy tại đây và tại đây mà Tomcat và Jetty không yêu cầu là máy chủ JavaEE, chỉ là các thùng chứa servlet (web).)

Máy chủ ứng dụng JBoss sử dụng JbossWeb (một ngã ba Tomcat của Apache) làm vùng chứa web của nó. Container EJB của nó là, JBoss (họ không có một tên riêng nào khác ngoài “JBoss EJB Container” cho nó).

Những người khác (IBM WebSphere, Oracle/BEA WebLogic, TomEE, Glassfish) cũng có bộ chứa web + bộ chứa EJB của họ.

TomEE rõ ràng sử dụng Apache Tomcat làm nơi chứa web của nó. Glassfish cũng sử dụng một ngã ba Apache Tomcat. (Vâng, Apache Tomcat dường như rất phổ biến 🙂

Trong cuộc thảo luận bên dưới, bạn có thể thay đổi Tomcat bằng “Web Container” và JBoss bằng “Máy chủ Java EE có khả năng đầy đủ” bất cứ khi nào chúng xuất hiện. (Tôi đã sử dụng tên của sản phẩm cho rõ ràng.)

*

Những lợi thế (dis) của việc có Máy chủ Web Java (như Tomcat) xử lý các lệnh gọi Servlet/JSP và chuyển tiếp các yêu cầu phức tạp hơn đến Máy chủ ứng dụng như JBoss (hoặc IBM WebSphere hoặc BEA WebLogic) là gì?

Từ một stantdpoint chức năng, không có lợi ích hiệu quả

Nếu bạn đặt Tomcat trước JBoss, điều bạn thực sự đang làm là đặt Tomcat trước một JBossWeb (bộ chứa web, do đó, lối vào mọi ứng dụng web) sẽ luôn ở trước thùng chứa EJB của JBoss. Nếu chúng ta đang nói về chức năng, điều đó chỉ là dư thừa, vì chúng ta có cùng một dịch vụ được cung cấp hai lần.

Chuyển đổi người thực hiện hoặc khả năng phân cụm

Đặt Tomcat trước một JBoss có thể có ý nghĩa nếu họ chỉ sử dụng JBoss cho bộ chứa EJB của nó: lựa chọn ở đây, sau đó, sẽ là một chuyển đổi đơn giản trong trình triển khai bộ chứa web.

Ngoài ra, nếu Tomcat ở một nút mạng khác (hoặc nhiều hơn một Tomcat/nút), các khả năng phân cụm có thể được áp dụng (điều đó không thể, vì JBossWeb và JBoss thường được coi là một và do đó đi trong cùng một máy) .

Xem thêm: Bộ Ảnh Cưới Đen Trắng Đẹp Như Mơ Của Đông Nhi

Phục vụ nội dung tĩnh và các vấn đề bảo mật

Very common là đặt máy chủ web (chẳng hạn như HTTP HTTPD hoặc IIS) trước Java Web Container . Có hai động lực chính cho việc này:

Tạo HTTPD phục vụ nội dung tĩnh (chẳng hạn như hình ảnh) và chuyển tiếp phần còn lại vào bộ chứa web Java. Điều này được thực hiện bởi vì các máy chủ web thường được tối ưu hóa tốt hơn ở nhiệm vụ cung cấp nội dung tĩnh. Bảo mật: Chỉ hiển thị HTTPD trong DMZ . Người ta có thể thiết lập HTTPD Apache tại DMZ và làm cho nó đơn giản chuyển tiếp mọi thứ tới Bộ chứa Web (Tomcats, v.v.) và Máy chủ JavaEE (JBosses, v.v.).

Nếu ai đó muốn thêm bảo mật, sẽ không có vấn đề gì khi sử dụng bộ chứa web trong DMZ: Nếu nó đang phục vụ các ứng dụng (nghĩa là có các tệp .war được triển khai cho nó), các ứng dụng vẫn “dễ bị tổn thương”; nếu nó chỉ chuyển tiếp các yêu cầu/phản hồi, thì HTTPD Apache là một lựa chọn tốt hơn nhiều!

Sun Java Web Server, IBM WebSphere Application Server, WebLogic, JBoss Application Server, Tomcat, Jetty … Chúng đều là Máy chủ ứng dụng web Java và làm điều tương tự – chạy ứng dụng đóng gói WAR hoặc EAR của bạn (EAR dành cho “Doanh nghiệp”, chứa hơn 1 WARs).

Nếu bạn có hai máy chủ trong thiết lập để chạy một ứng dụng, có thể có điều gì đó không ổn trong chiến lược/thiết kế triển khai của bạn.

Có các trường hợp thiết lập nhiều máy chủ nhưng đó là các thiết lập proxy và cân bằng tải có Máy chủ HTTP Apache trước Máy chủ ứng dụng Java của bạn.

Ví dụ: bạn có Tomcat phục vụ ứng dụng của bạn trên cổng 8080 và bạn muốn sử dụng sentayho.com.vn/myapp/ thay vì sentayho.com.vn:8080/myapp/. Bạn không thể làm điều đó với Tomcat một mình vì Java không thể đi dưới cổng 1024 (*). Để điều này xảy ra, bạn cần thiết lập Máy chủ HTTP Apache trên cổng 80 và định cấu hình mod_proxy của nó để chuyển hướng tất cả lưu lượng truy cập từ /myapp sang sentayho.com.vn:8080/myapp.

*: Tôi không nhớ số chính xác nhưng khoảng 1024. Và điều này đúng với Linux, nhưng có lẽ không phải với Windows, đã một thời gian kể từ khi tôi sử dụng thiết lập Windows.

Xem thêm: ” Drawee Là Gì Trong Tiếng Việt? Drawee Bank Là Gì

CẬP NHẬT: <.__.> Thật tệ, tôi đã quên nhấn mạnh phần “chạy như dịch vụ hệ thống” như được mô tả ở đây .

Ngữ cảnh ánh xạ Tomcat thông qua sentayho.com.vn

Sự khác biệt giữa JPA và Hibernate là gì?

Sự khác biệt giữa JSF, Servlet và JSP là gì?

tập tin .war vs .ear

Chính xác thì Spring Framework để làm gì?

Sự khác biệt giữa Spring, Struts, Hibernate, JavaServer Faces, Tapestry là gì?

Ai đó có thể giải thích mappedBy trong chế độ ngủ đông không?

Phiên TimeOut trong sentayho.com.vn

java.lang.UnsatisfiedLinkError no *****. dll trong Java.l sentayho.com.vn

Servlet phục vụ nội dung tĩnh

javax.net.ssl.SSLHandshakeException:

Cách giải nén và đóng gói lại tệp WAR

Địa chỉ đã được sử dụng: JVM_Bind java

Làm thế nào để cải thiện hiệu suất của Netbeans?

Không thể tạo trình điều khiển JDBC của lớp “” để kết nối URL “null”: Tôi không hiểu ngoại lệ này

Lỗi NoInitialContextException

Thymeleaf – Cách lặp danh sách theo chỉ mục

không thể sắp xếp loại thành một phần tử vì nó thiếu chú thích XmlRootEuity cho các lớp được tạo tự động

Làm thế nào để sửa lỗi xác thực Eclipse “Không phát hiện ràng buộc ngữ pháp cho tài liệu”?

Chú thích