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. Để giải quyết một số vấn đề trong việc truyền thông giữa ClientServer. 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.
Trang 1JAVA RMI
GVHD:
PSG.TS.HỒ BẢO QUỐC
HV:
LÊ HỒNG DANH – 16C12005 TRỊNH HỮU PHƯƠNG - 1511021
Trang 2Giớ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
Trang 3Giớ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
Trang 4Đặ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).
Trang 5Đặ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
Trang 6Kiến trúc cơ bản của Java RMI
Trang 7Kiế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
Trang 8Kiế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
Trang 9Kiến trúc cơ bản của Java RMI
Trang 10Kiế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ệ
Trang 11Kiế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
Trang 12Con đường kích hoạt phương thức ở xa
Trang 13Cơ chế vận hành
Trang 14Cơ chế vận hành
Trang 15Ví 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ó
Trang 16Cảm ơn Thầy và các bạn lắng nghe!