1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình mạng với kỹ thuật RMI

45 1,5K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 45
Dung lượng 413,5 KB

Nội dung

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 hay hàm. Mã lệnh của hàm (hay thủ tục) được nạp thẳng vào bộ nhớ và thực thi ngay trên máy cục bộ. Vậy thì có cách nào nạp nội dung của hàm hay đối tượng ở một máy nào đó và gọi chúng từ một máy khác hay không? RMI (Remote Method Invoke – có nghĩa là gọi phương thức từ xa) là cách thức giao tiếp giữa các đối tượng Java có mã lệnh cài đặt nằm trên máy khác nhau có thể gọi lẫn nhau.

GIẢNG VIÊN: VÕ TẤN DŨNG LẬP TRÌNH ỨNG DỤNG MẠNG BÀI 3 RMI (Remote Method Invoke) TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM PHẦN 1 GIỚI THIỆU TỔNG QUAN VỀ RMI GV: Võ Tấn Dũng 3 TỔNG QUAN VỀ 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 hay hàm. Mã lệnh của hàm (hay thủ tục) được nạp thẳng vào bộ nhớ và thực thi ngay trên máy cục bộ. Vậy thì có cách nào nạp nội dung của hàm hay đối tượng ở một máy nào đó và gọi chúng từ một máy khác hay không? • RMI (Remote Method Invoke – có nghĩa là gọi phương thức từ xa) là cách thức giao tiếp giữa các đối tượng Java có mã lệnh cài đặt nằm trên máy khác nhau có thể gọi lẫn nhau. GV: Võ Tấn Dũng 4 Local Machine (Client) SampleServer remoteObject; int s; … s=remoteObject.sum(1,2); System.out.println(s); Remote Machine (Server) public int sum(int a,int b) { return a + b; } 1,2 3 GV: Võ Tấn Dũng 5 STUB và SKELETON • Các tham số truyền cho các phương thức của đối tượng ở xa phải được đóng gói và chuyển qua mạng để đến được với phương thức thực sự (việc truyền kết quả trở về cũng vậy). • Để giải quyết các vấn đề trên, đối tượng Java trên hai máy khác nhau không gọi nhau trực tiếp mà thông qua các lớp trung gian nằm trên cả máy khách và máy chủ. • Phía máy khách, lớp trung gian này được gọi là Stub. Phía máy chủ, lớp trung gian này được gọi là Skeleton. GV: Võ Tấn Dũng 6 Computer B A1 A2 B1 C1 C1_stub B1_stub B1_skel C1_skel Computer A Computer C GV: Võ Tấn Dũng 7 CƠ CHẾ HOẠT ĐỘNG CỦA RMI • Đầu tiên RMI-server đăng ký tên của nó với bộ Registry. • RMI-client tìm tên của RMI-server trong bộ Registry để thiết lập truy cập từ xa với RMI-server. • Stub đóng gói tham số rồi gửi đến Skeleton. Skeleton gọi phương thức từ xa rồi đóng gói kết quả gửi về Stub. RMI Server skeleton stub RMI Client Registry bind lookup return call Local Machine Remote Machine GV: Võ Tấn Dũng 8 • Client gọi một phương thức từ xa, lời gọi này đầu tiên được chuyển tiếp đến Stub. • Stub có nhiệm vụ gửi tiếp lời yêu cầu này đến Skeleton phía server bằng cách Stub mở một socket đến server, đóng gói các tham số rồi truyền luồng dữ liệu này đến Skeleton. • Skeleton chứa đựng một phương thức nhận các lời yêu cầu từ xa, mở gói tham số, gọi hàm thực sự trên server để tính toán rồi trả kết quả về Stub phía client. Stub RMI Client RMI Server skeleton return call GIAO TIẾP STUB-SKELETON GV: Võ Tấn Dũng PHẦN 2 THIẾT KẾ ỨNG DỤNG PHÂN TÁN RMI GV: Võ Tấn Dũng 10 1. Định nghĩa một giao tiếp từ xa (remote interface) trên server. 2. Xây dựng một đối tượng từ xa (remote object) bằng cách hiện thực giao tiếp từ xa (remote interface). 3. Xây dựng chương trình phía client. 4. Biên dịch các file Java nguồn (phía client và server). 5. Sinh ra các Stub phía client và Skeleton phía server. 6. Khởi động bộ đăng ký RMI (RMI registry) 7. Khởi động các đối tượng từ xa phía server 8. Chạy chương trình phía client. CÁC BƯỚC XÂY DỰNG MỘT RMI GV: Võ Tấn Dũng [...]... dịch sau: C: \RMI> rmic CalculatorImpl 16 GV: Võ Tấn Dũng Kết quả ta sẽ thu được hai tập tin CalculatorImpl_Stub.class và CalculatorImpl_Skel.class Step 6: CHẠY CHƯƠNG TRÌNH rmiregistry.exe 17 GV: Võ Tấn Dũng Mở cửa sổ DOS-prompt (cmd) chạy chương trình rmiregistry từ dòng lệnh như sau: C: \RMI> rmiregistry.exe Chương trình này có thể không phản hồi cho ta thông tin gì cả bởi vì đây là chương trình chạy... chương trình chuyển tham số đối tượng theo tham trị qua mạng từ máy khách đến máy chủ trong RMI • Chương trình này tựa trò chơi ném bóng, trình khách sẽ ném một một quả banh (đối tượng Ball) lên máy chủ, trình chủ sẽ tiếp nhận quả banh và trả về cho trình khách VÍ DỤ CHUYỂN ĐỐI TƯỢNG THEO THAM TRỊ (step 1) • Bước 1: Thiết kế lớp Ball.class được dùng làm tham số chuyền qua mạng giữa trình khách và trình. .. chiếu còn được gọi là cơ chế Callback Kỹ thuật gọi ngược thường rất hữu hiệu cho trình khách thiết lập các yêu cầu tùy biến không phải lệ thuộc nhiều vào trình chủ 33 GV: Võ Tấn Dũng • VÍ DỤ CHUYỂN ĐỐI TƯỢNG THEO THAM CHIẾU 34 GV: Võ Tấn Dũng • Sau đây ta sẽ xây dựng chương trình theo kỹ thuật Callback triệu gọi lẫn nhau giữa đối tượng trên trình khách và đối tượng trên trình chủ thông qua cơ chế tham chiếu... C: \RMI\ ByValue>java Client GV: Võ Tấn Dũng CHUYỂN ĐỐI TƯỢNG ĐẾN TRÌNH CHỦ THEO THAM CHIẾU CHUYỂN ĐỐI TƯỢNG THEO THAM CHIẾU • • • Nếu đối tượng quá lớn thì việc chuyển đối tượng qua mạng sẽ ảnh hưởng đến tốc độ của chương trình Ta có thể cho trình khách được gọi từ xa bởi trình chủ, như vậy trình khách không cần chuyển đối tượng cho trình chủ theo tham trị mà là theo tham chiếu Như vậy đối tượng trên trình. .. gian Stub và Skel, phải đăng ký với rmiregistry để trình chủ có thể tham chiếu đến (tương tự như khi cài đặt trên trình chủ) Với Java, các đối tượng nếu cài đặt giao tiếp Remote sẽ được xem như có khả năng chuyển qua mạng thông qua tham chiếu chứ không cần đóng gói chuyển theo tham trị như trường hợp cài đặt lớp Serializable Cơ chế gọi ngược từ xa của trình chủ đến trình khách thông qua tham chiếu... UnicastRemoteObject.exportObject(server); //đăng ký đối tượng với dịch vụ rmiregistry //thay localhost bằng địa chỉ IP thật sự nếu bạn làm việc trên mạng Naming.bind( rmi: //localhost/pingobject”, server); System.out.println(“Waiting for client request…”); } } 28 GV: Võ Tấn Dũng /*Setup.java*/ import java .rmi. *; import java .rmi. server.*; VÍ DỤ CHUYỂN ĐỐI TƯỢNG THEO THAM TRỊ (step 5) • Bước 5: Thiết kế chương trình Client gọi phương thức... trình Bạn gõ từ cửa sổ DOS-promp các lệnh sau: • Khởi động bộ đăng ký rmiregistry C: \RMI\ ByValue>start rmiregistry • Gọi trình Setup để đăng ký đối tượng PingServer: C: \RMI\ ByValue>start java Setup Waiting for client request… Client send a Ball object weight 12 Ball weight before send to server 12 Ball weight after send to server 12 Ball weight return by server 27 31 GV: Võ Tấn Dũng • Chạy chương trình. .. lặp vô tận để chờ nhận yêu cầu từ client đến Đến lúc này ta đã có 2 chương trình chạy ở chế độ hậu trường là rmiregistry.exe và CalculatorServer Mỗi chương trình chạy trên một cửa sổ độc lập Step 8: CHẠY CHƯƠNG TRÌNH PHÍA CLIENT Bây giờ ta mở thêm một cửa sổ DOS-prompt thứ ba để chạy chương trình CalculatorClient như sau: C: \RMI> java CalculatorClient Finding Object… 13 19 GV: Võ Tấn Dũng (kết quả trả... sau khi khởi động rmiregistry.exe trong cửa sổ DOS-prompt ta hãy thu nhỏ cửa sổ này trên thanh Taskbar của Windows Khi đã được khởi động thì bộ quản lý rmiregistry này luôn trong trạng thái sẵn sàng phục vụ Mặc định rmiregistry.exe lắng nghe các kết nối gửi đến cổng 1099 Ta có thể chỉ định số hiệu cổng khác cho rmiregistry Ví dụ lệnh sau sẽ chạy rmiregistry.exe trên cổng 2003 C: \RMI> rmiregistry.exe 2003... trên trình chủ Đối tượng PingServer của ta có một phương thức ping() Phương thức này sẽ được gọi bởi trình khách Trình khách sử dụng phương thức ping() để ném quả bóng lên trình chủ thông qua tham số có kiểu đối tượng là Ball Phương thức ping() sau khi tiếp nhận sẽ ném trả về đối tượng Ball cho trình khách thông qua trị trả về của trình khách 26 GV: Võ Tấn Dũng /* PingServer.java*/ import java .rmi. *; . Dũng 7 CƠ CHẾ HOẠT ĐỘNG CỦA RMI • Đầu tiên RMI- server đăng ký tên của nó với bộ Registry. • RMI- client tìm tên của RMI- server trong bộ Registry để thiết lập truy cập từ xa với RMI- server. • Stub. VIÊN: VÕ TẤN DŨNG LẬP TRÌNH ỨNG DỤNG MẠNG BÀI 3 RMI (Remote Method Invoke) TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM PHẦN 1 GIỚI THIỆU TỔNG QUAN VỀ RMI GV: Võ Tấn Dũng 3 TỔNG QUAN VỀ RMI • Thông. DOS-prompt (cmd) chạy chương trình rmiregistry từ dòng lệnh như sau: C: RMI& gt;rmiregistry.exe Chương trình này có thể không phản hồi cho ta thông tin gì cả bởi vì đây là chương trình chạy ở dạng service.

Ngày đăng: 23/10/2014, 10:09

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w