2011-10-21 50 views
15

Tôi đọc thisthis có phần liên quan đến câu hỏi của tôi. Nhưng tôi đã xem qua bài viết this nói rằng EJB có thể được đóng gói trong một tệp chiến tranh. Nếu đây là trường hợp, tại sao có một nhu cầu cho một tai? Một lời giải thích với một ví dụ sẽ được đánh giá cao.Tại sao sử dụng tai thay vì chiến tranh?

Trả lời

7

Sử dụng EAR hoặc WAR phụ thuộc vào máy chủ bạn muốn triển khai, ứng dụng và tùy chọn cá nhân của bạn. Từ Java EE6, bạn có thể đóng gói các EJB của mình cùng với các servlet khác, jsps, vv vào tệp tin WAR (bạn kết thúc với ứng dụng web mà bạn có thể triển khai chỉ trên máy chủ tương thích java ee 6). Nếu bạn đóng gói ứng dụng theo cách cũ với ejbs trong gói riêng và chiến tranh riêng, bạn có thể sử dụng máy chủ java ee 5 nếu bạn chưa sử dụng các tính năng khác của java ee6 trong ứng dụng của mình, bạn có thể tách riêng các triển khai EJB và WAR của bạn để có sự tách biệt rõ ràng về lớp doanh nghiệp của bạn (EJB) và chế độ xem của bạn (Servlets, JSP, v.v.).

8

Sử dụng một EAR dành một tách sạch giữa kinh doanh (thường là stateless EJB đậu cung cấp/dịch vụ db liên quan đến back-end và có thể về nguyên tắc được sử dụng bởi khách hàng phi web) và front-end (xhtml tệp, hạt sao lưu JSF, v.v.).

tôi thường theo các quy ước dưới đây, cho một dự án nào đó, nói "foo":

  • foo-ejb.jar có đậu EJB
  • foo-client.jar xác định giao diện của đậu EJB ('client 'có thể là một cái tên nhầm lẫn,' foo-if.jar 'hoặc' foo-api.jar' có thể là tên tốt hơn)
  • foo-war.war có tài nguyên web

Building foo-war.war chỉ yêu cầu foo-client.jar

Building foo-ejb.jar chỉ yêu cầu foo-client.jar.

Cấu trúc trong EAR là:

foo.ear 
| 
|-- foo-war.war 
| 
|-- foo-ejb.jar 
| 
\-- lib 
     |---- foo-client.jar 
     | 
     \---- (other common jars) 

Có lẽ một cách để có một tách sạch tương tự như khi mã của bạn được triển khai như một WAR nhưng ở trên là những gì tôi đang sử dụng và dường như làm việc đối với tôi (tôi đang mở để gợi ý tất nhiên).

1

Nền tảng Java EE sử dụng mô hình ứng dụng đa nhiệm phân tán cho các ứng dụng doanh nghiệp. Logic ứng dụng được chia thành các thành phần theo chức năng và các thành phần ứng dụng tạo nên một ứng dụng Java EE được cài đặt trên các máy khác nhau, tùy thuộc vào tầng trong môi trường Java EE đa nhiệm mà thành phần ứng dụng thuộc về.

Hình ảnh dưới đây cho thấy hai ứng dụng Java EE đa nhiệm được chia thành các tầng được mô tả trong danh sách sau. Các phần ứng dụng Java EE được hiển thị trong hình ảnh này được trình bày trong các thành phần Java EE.

  • Các thành phần cấp khách hàng chạy trên máy khách.

  • Các thành phần cấp web chạy trên máy chủ Java EE.

  • Các thành phần cấp doanh nghiệp chạy trên máy chủ Java EE.

  • Phần mềm hệ thống thông tin doanh nghiệp (EIS) chạy trên máy chủ EIS
    .

Mặc dù một ứng dụng Java EE có thể bao gồm tất cả các tầng thể hiện trong hình 1-1, các ứng dụng Java EE multitiered được thường được coi là ba tầng ứng dụng bởi vì chúng được phân phối trên ba địa điểm: máy client, Java Máy chủ EE và cơ sở dữ liệu hoặc máy kế thừa ở mặt sau. Các ứng dụng ba tầng chạy theo cách này mở rộng mô hình máy khách và máy chủ hai tầng tiêu chuẩn bằng cách đặt một máy chủ ứng dụng đa luồng giữa ứng dụng khách và lưu trữ phía sau.

Multitiered Applications

Vì vậy, thường chúng ta muốn có 2 hoặc 3 lớp tách:

-EAR (E nterprise Application AR chive)

-EJB (E nterprise J ava B eans)

.210

-WAR (W ebAR chive)

và đôi khi JPA (J ava P ersistance Một PI)

Tôi hy vọng bạn thấy hữu ích, Cảm ơn này.

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