2010-08-14 18 views
11

Tôi mới sử dụng EJB 3 và khá bối rối với một số nghi ngờ mà Google không cung cấp câu trả lời thỏa đáng.Sử dụng bình của khách hàng trong EJB 3 và các mẫu thiết kế

Tôi đang cố tạo một khung công tác với một số lớp cơ sở và một số phương pháp tiện ích mà các ứng dụng khác của tôi có thể sử dụng. Tất cả các ứng dụng sẽ được triển khai trên cùng một máy chủ.

Khi tôi đang cố gắng tạo một dự án EJB 3.0 mới trong nhật thực, nó hỏi tôi có muốn tạo một lọ khách hàng hay không. Bình phục vụ khách hàng này phục vụ mục đích gì? My ejbmodule được thêm vào như một phần của tệp EAR. Vì vậy, tôi thực sự cần jar khách hàng này? Tôi có cần tạo cả giao diện cục bộ và từ xa không? Hoặc chỉ cần giao diện từ xa sẽ làm gì?

Tôi quyết định giữ tất cả các giao diện trong một dự án có tên là projCommon và các định nghĩa bean trong projApps. Các giao diện từ xa mà các lớp bean thực hiện nằm trong projCommon. Vì vậy, projApps phụ thuộc vào projCommon.

Tôi định sử dụng phương thức ủy nhiệm được xác định trong projCommon để gọi các lớp bean. Điều đó có nghĩa là projCommon cũng phụ thuộc vào projApps, rt? Và dẫn đến sự phụ thuộc vòng tròn.

EJB được tiêm trực tiếp chính xác như thế nào?

Sẽ thực sự hữu ích nếu bạn có thể vui lòng cung cấp giải thích cho những nghi ngờ của tôi.

Trả lời

22

Khi tôi đang cố gắng tạo dự án EJB 3.0 mới trong nhật thực, nó sẽ hỏi xem tôi có muốn tạo một lọ khách hàng hay không. mục đích nào mà lọ khách hàng này phục vụ?

Tệp JAR máy khách EJB là tệp JAR tùy chọn có thể chứa tất cả các tệp lớp mà chương trình khách cần sử dụng chế độ xem khách hàng của bean doanh nghiệp có trong tệp EJB JAR. Nếu bạn quyết định không để tạo ra một tập tin JAR khách hàng cho một module EJB, tất cả các lớp giao diện khách hàng sẽ được trong tập tin JAR EJB

ejbmodule tôi được thêm vào như một phần của tập tin EAR. Vì vậy, tôi có thực sự cần jar khách hàng này không?

Bạn không thực sự cần ứng dụng khách EJB, nó chỉ cung cấp bao bì dễ dàng hơn để sử dụng EJB từ khách hàng.

Tôi có cần tạo cả giao diện từ xa và từ xa không? Hoặc chỉ cần các giao diện từ xa sẽ hoạt động?

Nếu tất cả EJB của bạn ở cùng một EAR thì bạn có thể sử dụng giao diện cục bộ, nếu không bạn cần giao diện từ xa. Các giao diện cục bộ hiệu quả hơn, các cuộc gọi được thực hiện là tham chiếu.
Một số Vùng chứa (ví dụ: WebSphere) sẽ tối ưu hóa thời gian chạy này cho bạn và tự động gọi các giao diện cục bộ nếu có thể.

Tôi quyết định giữ tất cả các giao diện trong dự án có tên projCommon và các định nghĩa bean trong projApps.Các giao diện từ xa mà các lớp đậu thực hiện nằm trong projCommon. Vì vậy, projApps phụ thuộc vào projCommon.

Tôi sẽ giữ các dự án của mình được tổ chức theo các khu vực chức năng. Thực hiện cuộc gọi nội hạt trong các khu vực chức năng và các cuộc gọi từ xa bên ngoài các khu vực chức năng, Điều này cho phép bạn chia nhỏ chức năng được triển khai trên các máy chủ khác nhau để mở rộng phạm vi. Nó cũng giữ mã mô đun hơn. Điều này cũng tránh bất kỳ phụ thuộc vòng tròn nào.

EJB đã trực tiếp tiêm trực tiếp như thế nào?

Cách hoạt động không quan trọng, Điều đó sẽ được thực hiện bởi vùng chứa. Toàn bộ điểm của J2EE là trừu tượng hóa cách thức.

Theo http://www.developer.com/print.php/3650661:

EJB 3 container cung cấp phương tiện để tiêm nhiều loại hình nguồn lực vào đậu stateless session. Thông thường, để thực hiện các tác vụ của người dùng hoặc các yêu cầu quy trình từ các ứng dụng máy khách, các phương thức nghiệp vụ trong bean phiên yêu cầu một hoặc nhiều loại tài nguyên. Các tài nguyên này có thể là các phiên bean khác, các nguồn dữ liệu hoặc các hàng đợi tin nhắn.

Các tài nguyên mà bean phiên không trạng thái cố gắng sử dụng có thể được chèn bằng chú thích hoặc mô tả triển khai. Tài nguyên có thể được mua lại bằng cách chú thích các biến mẫu hoặc chú thích của các phương thức setter.

0

Xem here để biết thêm chi tiết. Hy vọng điều này giúp đỡ.

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