intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Công nghệ lập trình tích hợp: Chương 7 - TS. Nguyễn Quang Uy

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:39

7
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Công nghệ lập trình tích hợp: Chương 7 cung cấp cho người đọc những kiến thức như: Cơ bản về RIM; Cài đặt RMI; Biên dịch và thực hiện RMI; Sử dụng RMI; An Ninh trong lập trình phân tán RMI;... Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Công nghệ lập trình tích hợp: Chương 7 - TS. Nguyễn Quang Uy

  1. Chương 7 Lập trình phân tán - RMI 1
  2. Mục lục chương • 1. Cơ bản về RIM • 2. Cài đặt RMI • 3. Biên dịch và thực hiện RMI • 4. Sử dụng RMI • 5. An Ninh trong lập trình phân tán RMI 2
  3. Cơ bản về RMI • Trong các chương trình trước, các phương thức mà ta gọi đến đều thuộc về các đối tượng nằm trên máy tính cục bộ • Tuy nhiên trong môi trường phân tán (distributed environment), thường yêu cầu ta gọi đến các phương thức thuộc về một đối tượng ở xa • RMI (Remote Method Invocation) cung cấp một phương pháp độc lập với nền tảng để ta thực hiện điều đó 3
  4. Cơ bản về RMI • Trong mô hình RMI cũng có hai phía của ứng dụng đó là phía Client và Server • Server cung cấp các phương thức mà Client sẽ gọi đến • Client gọi đến các phương thức ở xa được cung cấp bởi Server 4
  5. Cơ bản về RMI • Trong RMI, server sẽ đăng ký một giao tiếp (register) với một dịch vụ tên nhờ đó mà các giao tiếp đó có thể được truy cập bởi các client • Client sau đó có thể sử dụng các tên đã được đăng ký để nhận một tham chiếu đến các giao tiếp – Các tham chiếu đó được gọi là các stub – Các stub này coi như là người đại diện cho các phương thức ở xa trên máy cục bộ • Bên phía server cũng có các đại diện đó và được gọi là các skeleton 5
  6. Cơ bản về RMI • Khi mà Client gọi đến một phương thức ở xa, RMI coi như client đang gọi trực tiếp các phương thức đó từ stub • Stub sau đó sẽ truyền các lời gọi đó cùng các tham số đến skeleton • Một chú ý là chỉ các kiển dữ liệu nguyên thủy và các kiểu dữ liệu tham chiếu cài đặt giao tiếp Serializable mới có thể được truyền như là các tham số – Các kiểu dữ liệu cài đặt giao tiếp Serializable được gọi là các marshalling 6
  7. Cơ bản về RMI • Skeleton sẽ nhận được các lời gọi từ client dưới dạng các streams • Skeleton chuyển đổi các streams đó thành các lời gọi ban đầu và thực hiện các phương thức đó 7
  8. Mô hình hoạt động của RMI 8
  9. Cài đặt RMI • Các gói được sử dụng để cải đặt RMI bao gồm: java.rmi, java.rmi.server and java.rmi.registry • Các bước để thực hiện một ứng dụng RMI như sau: – 1. Tạo một giao diện – 2. Định nghĩa các lớp cài đặt giao điện đó – 3. Tạo ra chương trình server – 4. Tạo ra chương trình Client 9
  10. Cài đặt RMI • Sau đây ta sẽ bắt tay vào cài đặt một ứng dụng RMI đơn gian trong đó server sẽ publish một phương thức và client gọi đến phương thức đó • Khi phương thức đó thực hiện sẽ hiện thị một xâu ký tự 10
  11. Cài đặt RMI • 1. Tạo ra một giao tiếp – Giao tiếp này sẽ phải sử dụng thư viện java.rmi và thừa kế lớp Remote – Trong giao tiếp này cần định nghĩa tên của phương thức mà ta sẽ publish cho client sử dụng – Phương thức này cũng phái khai báo một throws a RemoteException 11
  12. Cài đặt RMI • 1. Tạo ra một giao tiếp – Cài đặt cụ thể của giao tiếp này như sau: – import java.rmi.*; – public interface Hello extends Remote –{ – public String getGreeting() throws RemoteException; –} 12
  13. Cài đặt RMI • 2. Định nghĩa một lớp cài đặt giao tiếp trên – Lớp được định nghĩa sẽ phải sử dụng đến thư viện java.rmi and java.rmi.server – Lơp đó phải thừ kế lớp RemoteObject hoặc một lớp con của RemoteObject – Trong thực tế hầu hết các lớp đều thừ kế lớp UnicastRemoteObject vì lớp này hộ trợ một giao tiếp point-to-point sử dụng giao thức TCP – Lớp của ta cũng phai thửa kế giao tiếp ta đã khai báo ở bước 1 13
  14. Cài đặt RMI • 2. Định nghĩa một lớp cài đặt giao tiếp trên – Bên trong lớp đó phải viết đầu đủ các câu lệnh cho phương thức ta đã khai báo trong giao tiếp – Cùng với đó ta cũng phải cung cấp hàm tạo cho lớp của ta – Hạm tạo phai throw RemoteException 14
  15. Cài đặt RMI • 2. Định nghĩa một lớp cài đặt giao tiếp trên – //Implementation of RMI interface. – import java.rmi.*; – import java.rmi.server.*; – public class HelloImpl extends UnicastRemoteObject implements Hello – { – public HelloImpl() throws RemoteException – { – //No action needed here (but must specify constructor). – } – public String getGreeting() throws RemoteException – { – return ("Hello there!"); – } – } 15
  16. Cài đặt RMI • 3. Tạo ra chương trình server – Server sẽ tạo ra đối tượng của lớp trên và đăng ký nó với một dịch vụ tên được gọi là registry. – Điều này được thực hiện bằng cách sử dụng phương thức rebind của lớp Naming. Phương thức này có 2 tham số • Một xâu ký tự có chưa tên của đối tượng ở xa với giao thức rmi • Một tham chiếu tới đối tượng ở xa 16
  17. Cài đặt RMI • 3. Tạo ra chương trình server – Phương thức đó sẽ thiết lập một ánh xạ giữa tên của đối tượng với tham chiếu của nó – Xâu URL chỉ ra tên của máy chứa đối tượng ở xa. Nếu ta sử dụng cùng một máy nó sẽ là localhost. – Cổng mặc định cho RMI là 1099 mặc dù ta có thể thay đổi giá trị này 17
  18. Cài đặt RMI • 3. Tạo ra chương trình server – import java.rmi.*; – public class HelloServer – { – private static final String HOST = "localhost"; – public static void main(String[] args) throws Exception – { – HelloImpl temp = new HelloImpl(); – String rmiObjectName = "rmi://" + HOST + "/Hello"; – //Could omit host name, since 'localhost' would be – //assumed by default. – Naming.rebind(rmiObjectName,temp); – System.out.println("Binding complete...\n"); – } – } 18
  19. Cài đặt RMI • 4. Tạo ra chương trình client – Client nhận một tham chiếu tới đối tượng ở xa từ Registry – Điều này đặt được bằng cách sử dụng phương thức lookup của lớp Naming – Cung cấp cho phương thức đó một tham số la địa chỉ URL mà server đã đăng ký – Bởi vì phương thức lookup trả lại một kiểu là Remote, ta cần chuyển kiểu cho đối tượng đó 19
  20. Cài đặt RMI • 4. Tạo ra chương trình client – import java.rmi.*; – public class HelloClient – { – private static final String HOST = "localhost"; – public static void main(String[] args){ – try{ – Hello greeting = (Hello)Naming.lookup("rmi://" + HOST + "/Hello"); – System.out.println("Message received: "+ greeting.getGreeting()); – } – catch(ConnectException conEx){ – System.out.println("Unable to connect to server!"); – System.exit(1); – } – catch(Exception ex){ – ex.printStackTrace(); – System.exit(1); – } – } – } 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2