JAVA RMI
GVHD:
PSG.TS.HỒ BẢO QUỐC
HV:
LÊ HỒNG DANH – 16C12005
TRỊNH HỮU PHƯƠNG - 1511021
Giới thiệu Java RMI
Thơng thường các chương trình của chúng ta được viết
dưới dạng thủ tục hoặc hàm và việc các hàm gọi lẫn nhau,
truyền tham số hay kết quả cho nhau chỉ xảy ra ở máy cục
bộ.
Java RMI (Remote Method Invocation) – là một kỹ thuật
cho phép người lập trình gọi các phương thức từ xa – là cách
giao tiếp của các đối tượng trong Java ở các máy khác nhau
có thể gọi lẫn nhau.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
2
Giới thiệu Java RMI
Để giải quyết một số vấn đề trong việc truyền thông giữa
Client/Server. RMI không gọi trực tiếp mà thông qua lớp
trung gian. Lớp này tồn tại ở cả hai phía Client và Server.
◦ Lớp ở máy Client gọi là Stubs
◦ Lớp ở máy Server gọi là Skeletons.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
3
Đặc tính của Java RMI
RMI là mơ hình đối tượng phân tán của Java, nó giúp cho
việc truyền thơng giữa các đối tượng phân tán được dễ dàng
hơn.
RMI là API bậc cao được xây dựng dựa trên lập trình Socket.
RMI không những cho phép chúng ta truyền dữ liệu giữa các
đối tượng trên các hệ thống máy tính khác nhau, mà còn triệu
gọi các phương thức trong các đối tượng ở xa (Remote Object).
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
4
Đặc tính của Java RMI
Việc truyền dữ liệu giữa các máy khác nhau được xử lý
một cách trong suốt bởi máy ảo Java (Java virtual machine).
Tương tự như mơ hình Client/Server, RMI vẫn duy trì khái
niệm của Client và Server, tuy nhiên cách tiếp cận của RMI
linh hoạt hơn, mềm dẻo hơn so với mơ hình Client/Server.
RMI cung cấp cơ chế callbacks, nó cho phép Server triệu
gọi các phương thức ở Client.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
5
Kiến trúc cơ bản của Java RMI
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
6
Kiến trúc cơ bản của Java RMI
Remote interface: được kế thừa từ java.rmi.remote. Nó
khai báo tất cả các phương thức mà Client có thể triệu gọi.
Tất cả các phương thức trong interface này nên có phần xử lý
ngoại lệ (throw RemoteException)
Remote implementation: Được thực thi từ Remote
interface và mở rộng từ UnicastRemoteObject. Triển khai các
phương thức được khai báo trong Interface tại đây. Nó là một
Remote Object thực sự. Phát sinh hai lớp trung gian Stub và
Skeletons.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
7
Kiến trúc cơ bản của Java RMI
Server class bao gồm:
◦ RMI registry: Bộ đăng kí này sẽ đăng kí một Remote
object với Naming Registry. Giúp các Remote object được
chấp nhận khi gọi các phương thức từ xa.
◦ Các class thực thi trên server.
Client class: Truy vấn trên tên Remote object trên RMI
registry, thông qua stub để gọi các phương thức trên server.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
8
Kiến trúc cơ bản của Java RMI
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
9
Kiến trúc cơ bản của Java RMI
Stub là một đối tượng hoạt động như là một cổng ở phía client.
Tất cả các yêu cầu gửi đi được chuyển qua nó. Khi gọi phương
thức trên đối tượng Stub, nó thực hiện các tác vụ sau:
1. Khởi tạo kết nối với máy ảo từ xa
2. Viết và truyền tham số cho máy ảo từ xa
3. Đợi kết quả
4. Đọc giá trị trả về hoặc ngoại lệ
5. Cuối cùng trả về giá trị cho nơi gọi
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
10
Kiến trúc cơ bản của Java RMI
Skeleton là một đối tượng hoạt động như là một cổng ở
phía server. Tất cả các yêu cầu đến được chuyển qua nó. Khi
skeleton nhận được yêu cầu đến, nó sẽ thực hiện các nhiệm
vụ sau:
1. Đọc các tham số cho phương thức từ xa
2. Gọi phương thức trên đối tượng từ xa thực tế
3. Viết và truyền kết quả cho nơi gọi.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
11
Con đường kích hoạt phương thức ở xa
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
12
Cơ chế vận hành
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
13
Cơ chế vận hành
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
14
Ví dụ
Xây dựng một phương thức int add(int a, int b) cho phép
gọi từ xa.
Kích hoạt phương thức đó: sẽ trả về kết quả là giá trị của
phép cộng cho Client gọi nó.
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
15
Cảm ơn Thầy và các bạn lắng nghe!
06/11/2023
LÊ HỒNG DANH - TRỊNH HỮU PHƯƠNG
16