Bài giảng Công nghệ lập trình tích hợp: Chương 7 - TS. Nguyễn Quang Uy
lượt xem 3
download
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!
Bình luận(0) Đăng nhập để gửi bình luận!
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
- Chương 7 Lập trình phân tán - RMI 1
- 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
- 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
- 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
- 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
- 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
- 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
- Mô hình hoạt động của RMI 8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Công nghệ lập trình tiên tiến: Chương 0 - ĐH Công nghệ Đồng Nai
8 p | 145 | 11
-
Bài giảng Công nghệ lập trình tiên tiến: Chương 1 - ĐH Công nghệ Đồng Nai
59 p | 105 | 9
-
Bài giảng Công nghệ lập trình tiên tiến: Chương 2 - ĐH Công nghệ Đồng Nai
93 p | 81 | 9
-
Bài giảng Công nghệ lập trình tiên tiến: Chương 4 - ĐH Công nghệ Đồng Nai
164 p | 89 | 9
-
Bài giảng Công nghệ lập trình tiên tiến: Chương 3 - ĐH Công nghệ Đồng Nai
86 p | 90 | 7
-
Bài giảng Công nghệ lập trình tiên tiến: Chương 5 - ĐH Công nghệ Đồng Nai
74 p | 74 | 7
-
Bài giảng Công nghệ lập trình tích hợp: Chương 4.2 - TS. Nguyễn Quang Uy
19 p | 10 | 4
-
Bài giảng Công nghệ lập trình tích hợp: Chương 4.1 - TS. Nguyễn Quang Uy
25 p | 10 | 4
-
Bài giảng Công nghệ lập trình tích hợp: Chương 4.0 - TS. Nguyễn Quang Uy
40 p | 12 | 4
-
Bài giảng Công nghệ lập trình tích hợp: Chương 2.1 - TS. Nguyễn Quang Uy
28 p | 11 | 4
-
Bài giảng Công nghệ lập trình tích hợp: Chương 2.0 - TS. Nguyễn Quang Uy
59 p | 9 | 4
-
Bài giảng Công nghệ lập trình tích hợp: Chương 1 - TS. Nguyễn Quang Uy
31 p | 14 | 4
-
Bài giảng Công nghệ lập trình tích hợp: Chương 3 - TS. Nguyễn Quang Uy
38 p | 8 | 3
-
Bài giảng Công nghệ lập trình tích hợp: Chương 0 - TS. Nguyễn Quang Uy
9 p | 18 | 3
-
Bài giảng Công nghệ lập trình tích hợp: Chương 5 - TS. Nguyễn Quang Uy
48 p | 7 | 3
-
Bài giảng Công nghệ lập trình tích hợp: Chương 6 - TS. Nguyễn Quang Uy
45 p | 12 | 3
-
Bài giảng Công nghệ lập trình tích hợp: Chương 8 - TS. Nguyễn Quang Uy
42 p | 12 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn