2009-09-01 31 views
15

Chúng tôi có nhiều ứng dụng web mùa xuân để thực hiện trên một máy chủ WebLogic và tò mò về thời điểm WAR nên đi vào một EAR và khi chúng chỉ nên tồn tại dưới dạng WAR. Thỉnh thoảng, các WAR sẽ cần truy cập các JAR logic thông thường, nhưng tôi không thấy lý do tại sao chúng cần phải đi vào một EAR khi chúng chỉ có thể được đóng gói vào các WAR. Từ những gì tôi hiểu, nếu một số WAR trong EAR và bạn cần phải sửa đổi một trong những WAR đó, bạn cần phải triển khai lại toàn bộ EAR để cập nhật máy chủ. Điều này sẽ làm cho tất cả các WAR bị trả lại. Tuy nhiên, nếu chúng không có trong EAR, tôi chỉ có thể cập nhật một WAR và nó sẽ là người duy nhất bị trả lại.Khi nào thích hợp để sử dụng EAR và khi nào các ứng dụng của bạn sẽ có trong WAR?

Có gì sai khi có 100 tệp WAR khác nhau đứng một mình và sử dụng các tệp JAR được đóng gói và các thư viện được chia sẻ (sử dụng WebLogic)?

Cảm ơn bạn đã có thông tin chi tiết!

+0

BEA WebLogic hoặc Oracle WebLogic? – Zombies

+0

Đó là một máy chủ mới. Oracle WebLogic. –

Trả lời

21

Nếu tất cả những gì bạn có là tệp WAR, thì EAR có tính hữu dụng hạn chế, chỉ phục vụ như là vùng chứa triển khai cho WAR của bạn. Bạn có thể tiết kiệm một chút sưng lên bằng cách chia sẻ các JAR giữa các WAR theo cách này, nhưng bản thân nó không phải là cực kỳ hấp dẫn. Tuy nhiên, các EAR là cần thiết khi xử lý các ứng dụng JavaEE/J2EE đầy đủ, sử dụng các tài nguyên WAR, EJB, JMS, JCA, vv Các tương tác và phụ thuộc giữa các thành phần của các loại ứng dụng này là dễ dàng hơn rất nhiều trong việc quản lý một EAR. Nhưng nếu tất cả những gì bạn đang sử dụng Weblogic là một thùng chứa WAR, thì bạn cũng có thể sử dụng một thùng chứa vanilla servlet như Tomcat hoặc Jetty, cho tất cả các chức năng sử dụng mà bạn thoát ra khỏi Weblogic.

9

Tôi đồng ý với gần như tất cả vị trí của người nghệ sĩ (thường) trên nhận xét.

Nếu bạn đang sử dụng Spring mà không có EJB, bạn có thể gắn bó với tệp WAR, tất nhiên. Không cần một EAR mà tôi có thể nhìn thấy.

Tuy nhiên, nếu ứng dụng Spring của bạn sử dụng các POJO theo hướng tin nhắn, tôi có thể thấy nơi bạn vẫn triển khai tệp WAR trên WebLogic để tận dụng lợi thế của JMS.

Một EAR có thể cần thiết nếu bạn có EJB hoặc JCA, nhưng tôi sẽ không nói rằng JMS ủy nhiệm một EAR. Tôi đã sử dụng JMS và triển khai một tệp WAR trên WebLogic và nó hoạt động tốt.

Nếu bạn quyết định đi với Tomcat và triển khai một WAR ở đó, bạn vẫn có thể giữ chức năng JMS nếu bạn sử dụng ActiveMQ.

+0

Tôi đánh giá cao nhận xét này, cảm ơn bạn. Nó rất dễ dàng để trích dẫn một số tài liệu và làm theo các mô hình như mô tả, nhưng chức năng khôn ngoan này có ý nghĩa hơn rất nhiều. Cá nhân tôi quan tâm đến những gì khác biệt chính xác là trong chức năng, không phải là tiêu chuẩn tài liệu để sử dụng dự định, bất cứ ai có thể dễ dàng tìm thấy nội dung liên quan đến điều đó. Với mùa xuân nó đã giảm bớt phát triển rất nhiều mà không cần phải luôn luôn xây dựng một tai để tận dụng lợi thế của phong cách EE phụ thuộc tiêm. Bạn có biết bất kỳ phân tích hoặc tài nguyên nào khác chỉ ra những khác biệt về chức năng không? –

+0

Tôi sẽ nói rằng bạn không cần bất kỳ máy chủ ứng dụng hoặc WAR/EAR nếu bạn đi với Spring Boot, chỉ có một JVM và một JAR chất béo thực thi. Tôi đã viết câu trả lời đó 6,5 năm trước; rất nhiều đã thay đổi trong thời gian đó. – duffymo

4

Đối số để đóng gói nhiều WAR vào EAR có thể hấp dẫn nếu bạn gặp tình huống mà chủ nhân cuối cùng của tôi đã làm, nơi bạn có một tập hợp chung các thư viện JAR được sử dụng bởi nhiều WAR và kích thước của bộ sưu tập đó của JARs là đáng kể. Trong tình huống cụ thể của chúng tôi, tổng kích cỡ của 3 WAR với các JAR thông thường được đóng gói vào mỗi WAR tổng cộng là 124MB. Bằng cách định vị các JAR trong EAR chứa và cấu hình đường dẫn lớp của từng WAR để sử dụng các JAR đó, dấu chân của EAR chứa 3 WAR đã giảm xuống còn 40MB. Tôi cho rằng đó là một lý do thuyết phục.

2

Có nhiều thư viện được chia sẻ chứ không phải là lý do thuyết phục để tìm EAR, vì JAR (hoặc bộ JAR) luôn có thể được triển khai dưới dạng "thư viện" trên weblog, do đó, có thể được chia sẻ bởi tất cả WAR. Isn 'nó phải không?

2

Không có gì thực sự sai với việc triển khai các cuộc chiến tranh, các nhà phát triển có hứng thú nhận các nhiệm vụ được đáp ứng nhanh nhất có thể. Điều đó có nghĩa là họ thường sẽ nhận nợ kỹ thuật, và nếu họ ở trong một nhóm đáng kính, họ sẽ làm sạch món nợ đó.

Tuy nhiên, điều này xảy ra khi bạn tránh sự phức tạp của EAR và chia sẻ một bình bằng cách thêm nó vào máy chủ ứng dụng? Phổ biến hơn nhiều trong nhóm chỉ có chiến tranh, đang giảm tải tất cả các loại ứng dụng phức tạp đến máy chủ ứng dụng. Đơn giản chỉ vì nó được thực hiện dễ dàng hơn, trong lịch trình thường xuyên được phân bổ quá mức. Tôi không đổ lỗi cho họ cho điều này cả, Tuy nhiên bây giờ chúng tôi có một vấn đề mới. Không thể sử dụng máy chủ ứng dụng chuẩn, bạn phải thực hiện các tùy chỉnh bên hệ thống. Hiệu quả các ứng dụng web là chảy máu trên tất cả các hệ thống. Người duy trì máy chủ ứng dụng, bây giờ cũng phải biết chi tiết ứng dụng cụ thể ... trong môi trường doanh nghiệp, điều này trình bày một vấn đề rất rõ ràng.

Sau đó, nhà phát triển có thể chịu trách nhiệm về hệ thống, nhưng họ vẫn cần đáp ứng thời hạn. Họ chắc chắn chảy máu trên tất cả các hệ điều hành là tốt, và đột nhiên các nhà phát triển là quản trị viên duy nhất có thể. Nếu quản trị viên không biết ứng dụng nào đang sử dụng phía hệ thống, họ có thể gây ra nhiều vấn đề lớn. Các đường không rõ ràng này luôn luôn kết thúc bằng các ngón tay trỏ theo cả hai hướng, trạng thái hệ thống chưa biết và cách ly nhóm.

Họ có phải sử dụng EAR không? Không, tôi là một kỹ sư hệ thống, vì vậy tôi luôn nói rằng họ có thể triển khai máy chủ ứng dụng của riêng mình như một ứng dụng thương mại khác. Bên trong một RPM, nếu triển khai một WAR giống như các Máy chủ ứng dụng được hỗ trợ khác, thì chúng sẽ nhận được đường dẫn triển khai WAR. Nếu không, sau đó RPM tất cả trong một ... Một khi không cho phép các nhóm để bên ngoài chi phí của họ, sau đó EARs trở thành một ý tưởng tuyệt vời.

Các vấn đề liên quan