Tôi đã sử dụng WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat và một vài thứ khác trong hơn 10 năm qua. Vì vậy, nếu tôi đang xem xét một dự án mới, tôi sẽ tự hỏi mình một vài câu hỏi trước. Một điều mà tôi sẽ không thắc mắc nữa là tôi sẽ từ chối sử dụng các tệp JSP trừ khi tôi bị tra tấn cho đến khi tôi khóc cho mẹ tôi.
Tôi có phải tương thích / triển khai với một sản phẩm cụ thể vì sự ủy nhiệm của ai đó không? Có cách nào để bỏ qua chúng hoặc thuyết phục họ bằng cách khác? Nếu vậy, có câu trả lời của bạn.
Tôi có phải sử dụng EJB không? Có thật không? Tránh chúng nếu có thể - chúng thực sự chỉ cần thiết cho các hệ thống cấp doanh nghiệp rất lớn. Hãy nhớ rằng chúng chỉ là công cụ và là công cụ lớn (ai cũng có thể nói "Golden Sledgehammer"?). Chúng được sử dụng quá mức, vì vậy thực sự, thực sự đặt câu hỏi liệu bạn có cần chúng không. Nếu bạn cần chúng, thì điều đó sẽ loại bỏ một số tùy chọn của bạn, bao gồm cả Jetty yêu thích của tôi.
Bạn có phải sử dụng bất kỳ công nghệ J2EE lớn nào khác như JMS, ESB, v.v. không? Nếu vậy, và bạn thực sự không thể làm mà không có, thì bạn lại bị giới hạn trong một thùng chứa J2EE đầy đủ. Ví dụ, suy nghĩ và điều tra cẩn thận trước khi bạn cam kết với BPM, và tránh BPM của AquaLogic với (gần như) tất cả các chi phí - điều đó thật xấu xí.
Nếu bạn thực sự phải sử dụng bộ chứa J2EE toàn diện, trước tiên hãy xem xét nguồn mở vì nó mạnh hơn, được hỗ trợ tốt hơn và hiệu quả hơn về chi phí. Họ có cơ sở khách hàng lớn hơn và tương tác hỗ trợ cởi mở hơn, vì vậy họ có xu hướng nhận được các bản sửa lỗi tốt hơn nhanh hơn. Tuy nhiên, Nhựa chưa trưởng thành và tôi sẽ tránh nó liên quan đến GlassFish hoặc JBoss - Tôi thấy có vấn đề khi triển khai và hỗ trợ. Tôi thích JBoss hơn vì cơ sở khách hàng rộng hơn, sự trưởng thành, v.v. GlassFish khó kết hợp với quy trình xây dựng / triển khai tự động, nhưng nó có thể đẹp hơn đối với một số tính năng cụ thể của nó (nếu bạn cần chúng).
Tôi có lý do đặc biệt để cần Apache không? Sau đó nghiêng về Tomcat, có lẽ cộng với một cái gì đó.
Tôi có thể làm gì chỉ với servlets không? Sau đó, tôi sẽ sử dụng Jetty - đó là giải pháp nhẹ nhất, nhanh nhất, dễ nhất, linh hoạt nhất. Nếu tôi dựa vào việc có thể sử dụng Cầu tàu, tôi sẽ đặt câu hỏi cho tất cả các giả định của mình về lý do tại sao. YAGNI áp dụng.
Tốt nhất là sử dụng StringTemplate / WebStringTemplate trên Jetty: một giải pháp sạch, mạnh mẽ, nhanh chóng, có thể bảo trì mà không phải trả phí cấp phép, uy tín và hỗ trợ vững chắc, v.v ... Đó là nơi tôi bắt đầu ngày nay.
Hầu hết các ứng dụng / hệ thống chọn nhiều tính năng J2EE ưa thích khi tất cả những gì chúng thực sự cần là các máy chủ và JDBC với một số kiến trúc / thiết kế hợp lý. Câu hỏi tại sao bạn nghĩ rằng bạn cần nhiều hơn.
Trong số các thùng chứa đầy đủ, tôi sẽ tránh WebLogic và WebSphere trừ khi bạn đang hỗ trợ trang web công cộng MAJOR (trang web của nhà tuyển dụng hiện tại của tôi được triển khai trên WebLogic và nó nhận được mười một triệu lượt truy cập mỗi tháng, những người khác có thể so sánh được). Yêu cầu bồi thường thực sự của WebLogic là phân cụm tương đối dễ dàng của họ, nhưng tránh các tính năng khóa nhà cung cấp độc quyền của họ với (gần như) tất cả chi phí. WebSphere đơn giản là một cơn ác mộng mà tôi sẽ tránh được bằng mọi giá - tôi từ chối thực hiện các dự án liên quan đến WebSphere sau khi đã thực hiện một vài điều trong quá khứ. Cả hai sản phẩm đều không có giá trị cấp phép lớn, trừ khi bạn thực sự có nhu cầu đặc biệt thúc đẩy việc sử dụng một tính năng độc quyền. Trong một thập kỷ với tư cách là một kiến trúc sư / kỹ sư cao cấp cho rất nhiều công ty Fortune 500, tôi vẫn chưa thấy nhu cầu như vậy. Mặt khác,
Ngay cả đối với các trang web công cộng thực sự lớn, lưu lượng truy cập cao, các sản phẩm độc quyền vẫn còn nhiều nghi vấn. Tôi thà chi hàng triệu đô la mỗi năm cho phí cấp phép cho một số phần cứng tốt và một số thời gian chất lượng từ một số ít các chuyên gia tư vấn thực sự giỏi để giải quyết một giải pháp mở rộng đơn giản. Hàng triệu đô la mỗi năm sau đó có thể được sử dụng để sản xuất thứ gì đó xứng đáng để bán trên trang web tuyệt vời đó ...
EDIT: một phần khác để xem xét ...
Gần đây tôi đã gặp Terracotta . Tôi đang suy nghĩ lại mọi thứ, và mong muốn sớm triển khai nó trong một hệ thống quan trọng. Đặc biệt, Terracotta không phân cụm tốt hơn bất kỳ thứ gì khác, vì vậy tôi KHÔNG CẦN giới thiệu WebLogic cho phân cụm của nó.