Chế độ xem cục bộ / từ xa và không có giao diện trong EJB là gì?


79

Tôi đang cố gắng hiểu mục đích và lý do tại sao chúng tôi cần các quan điểm khách hàng khác nhau trong EJB. Ai đó có thể cố gắng giải thích?

Câu trả lời:


126

Chế độ xem khách hàng từ xa

Khi EJB của bạn và các máy khách của nó sẽ ở trong một môi trường phân tán - nghĩa là các EJB và máy khách sẽ nằm trên các máy ảo Java riêng biệt. Ví dụ: Các EJB được lưu trữ trên Máy chủ Ứng dụng WebSphere và các Servlet sử dụng các API EJB được lưu trữ trên máy chủ Tomcat.

Chế độ xem khách hàng địa phương

Chỉ khi đảm bảo rằng các bean của doanh nghiệp hoặc khách hàng khác sẽ chỉ giải quyết bean trong một JVM duy nhất. Ví dụ, các EJB cũng như các Servlet được triển khai trên cùng một máy chủ WebSphere.

Chế độ xem không giao diện

Gần giống như chế độ xem khách hàng cục bộ, nhưng có sự khác biệt. Lớp bean của bạn không bắt buộc phải triển khai các giao diện xem máy khách trong trường hợp này. Tất cả các phương thức công khai của lớp bean được tự động hiển thị cho người gọi. chế độ xem không giao diện luôn thu được tham chiếu EJB - giống như chế độ xem cục bộ hoặc từ xa - thông qua việc tiêm hoặc tra cứu JNDI; nhưng, kiểu Java của tham chiếu EJB là kiểu lớp bean chứ không phải kiểu giao diện cục bộ. Đây là một tiện ích được giới thiệu như một phần của Java EE6.

Sự khác biệt giữa chế độ xem máy khách cục bộ và chế độ xem không có giao diện

Trong trường hợp xem không có giao diện, máy khách và bean đích phải được đóng gói trong cùng một ứng dụng (EAR). Trong trường hợp xem cục bộ, ứng dụng khách có thể được đóng gói trong một ứng dụng riêng biệt hơn ứng dụng doanh nghiệp. Vì vậy, điều này mang lại sự linh hoạt hơn trong việc phân loại các thành phần của bạn.

Bạn có thể sử dụng chế độ xem ứng dụng khách cục bộ so với chế độ xem không có giao diện tùy thuộc vào tình huống sử dụng API của bạn. Rất có thể chế độ xem không giao diện sẽ nhận được các tính năng linh hoạt trong thông số kỹ thuật trong tương lai.

Lý do

Về mặt lịch sử hay cách khác, khách hàng muốn sử dụng dịch vụ EJB được cho là phải "tra cứu" bean trên vùng chứa (với một số ngữ cảnh ban đầu nhất định). Đó là bởi vì tất cả các lệnh gọi được thực hiện thông qua một tham chiếu EJB đặc biệt (proxy) do vùng chứa cung cấp. Điều này cho phép vùng chứa cung cấp tất cả các dịch vụ bean bổ sung như gộp, giao dịch do vùng chứa quản lý, v.v. Vì vậy, khách hàng không thể khởi tạo EJB một cách rõ ràng với newnhà điều hành. Chế độ xem máy khách được cung cấp thông qua một số giao diện nhất định mà máy khách sẽ có quyền truy cập. Việc thực hiện proxy ở phía máy chủ được thực hiện dựa trên các giao diện này. Các chế độ xem máy khách khác nhau được xác định để phù hợp với các tình huống triển khai khác nhau như đã đề cập ở trên.


5
Tôi tự hỏi liệu có thực sự là như vậy không, chế độ xem máy khách cục bộ có thể được sử dụng giữa các ứng dụng doanh nghiệp khác nhau. Trong đặc tả EJB 3.2, phần 3.2.2, có nêu rằng việc gọi các bean từ các ứng dụng khác nhau thông qua các chế độ xem máy khách cục bộ là dành riêng cho nhà cung cấp và có thể không được hỗ trợ trong vùng chứa. Bạn đã nghĩ đến bất kỳ máy chủ ứng dụng cụ thể nào?
mcmil

Sao vậy? nếu chúng tôi "mới" một EJB (điều này có thể xảy ra nếu khách hàng và EJB ở trong cùng một ứng dụng)
lovespring

2
Nếu bạn sử dụng, newbạn sẽ nhận được một phiên bản mới. Đó là tất cả. Phiên bản mới đó sẽ không có bất kỳ "hỗ trợ" nào từ vùng chứa về cách gộp, thiết lập ngữ cảnh của nó, v.v. Bạn đang tự chạy.
người mang nhẫn

Một điều khác mà tôi vừa nhận ra trong JBoss 7.1.3 là khi tôi có EJB triển khai một giao diện không được đánh dấu là Local hay Remote, tôi có thể đưa EJB làm loại giao diện của nó trong các bean CDI mà không cần CDI Inject. Đây là loại quan điểm nào của EJB? Thực tế thú vị là tôi không thể CDI Inject bất kỳ loại giao diện Local hoặc Remote nào do lỗi trong JBoss liên quan đến điều này.
Gandalf

@mcmil Đồng ý với phát hiện của bạn. Đây chắc chắn là nhà cung cấp cụ thể. Điều tương tự được đề cập trong thông số kỹ thuật EJB 3.1.
Baimai Wu

3

Theo Mục 3.2.2 của Đặc điểm kỹ thuật EJB 3.1:

Quyền truy cập vào hạt doanh nghiệp thông qua chế độ xem máy khách cục bộ chỉ được yêu cầu để được hỗ trợ cho các máy khách cục bộ được đóng gói trong cùng một ứng dụng với hạt đậu doanh nghiệp cung cấp chế độ xem máy khách cục bộ. Việc triển khai tuân thủ đặc điểm kỹ thuật này có thể hỗ trợ tùy chọn quyền truy cập vào chế độ xem máy khách cục bộ của bean doanh nghiệp từ máy khách cục bộ được đóng gói trong một ứng dụng khác. Các yêu cầu cấu hình để truy cập liên ứng dụng vào chế độ xem máy khách cục bộ là dành riêng cho nhà cung cấp và nằm ngoài phạm vi của đặc tả này. Các ứng dụng dựa trên quyền truy cập liên ứng dụng vào chế độ xem máy khách cục bộ là không di động.

Chế độ xem không giao diện chỉ là một tính năng tiện lợi cho phép bean hiển thị chế độ xem máy khách cục bộ mà không cần phải khai báo một giao diện riêng biệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.