Kĩthuật lập trình phântán đốitượng trongJava.Mangýnghĩatriệugọiđốitượng từxa.Cáchgiaotiếp giữacácđốitượng Javacómãlệnh càiđặt(baogồmphươngthức vàthuộc tính) nằmtrên cácmáykhácnhaucóthểtriệugọilẫnnhau.
JAVA RMI GVHD: TS. Hồ Bảo Quốc Thực hiện: Nguyễn Phú Thịnh Lê Xuân Mai ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN MỤC LỤC 1. Giới thiệu tổng quan 2. Các vấn đề và giải pháp 3. Demo MỤC LỤC 1. Giới thiệu tổng quan 2. Các vấn đề và giải pháp 3. Demo JAVA RMI LÀ GÌ? Kĩ thuật lập trình phân tán đối tượng trong Java. Mang ý nghĩa triệu gọi đối tượng từ xa. Cách giao tiếp giữa các đối tượng Java có mã lệnh cài đặt (bao gồm phương thức và thuộc tính) nằm trên các máy khác nhau có thể triệu gọi lẫn nhau. JAVA RMI LÀ GÌ? Cơ chế truyền và quản lý biến dữ liệu trên hai máy khác nhau (mashall and unmashall) ? Lớp STUB và SKELETON Đây là 2 lớp trung gian giúp các đối tượng Java trên hai máy khác nhau giao tiếp với nhau Stub: ở phía Client (nơi gọi phương thức của đối tượng ở xa). Skeleton: ở phía Server (nơi đối tượng thật sự được cài đặt để thực thi mã lệnh của phương thức). Lớp STUB và SKELETON Lớp trung gian Stub: Trình biên dịch chuyển lời gọi đối tượng C1 (server) của đối tượng A1 (client) tới Stub, đóng gói tham số truyền qua mạng đến server. Nếu có kết quả từ server trả về thì Stub sẽ chuyển giao kết quả cho đối tượng A1. Lớp STUB và SKELETON Lớp trung gian Skeleton: Nhận tham số từ Client và chuyển vào vùng không gian địa chỉ tương thích với đối tượng C1, sau đó gọi phương thức tương ứng. Nếu có kết quả trả về từ phương thức của đối tượng C1, Skeleton sẽ đóng gói và trả ngược về Client Lớp STUB và SKELETON A1 gọi phương thức của C1 như thế nào ? ? Cơ chế RMI gọi phương thức từ xa [...]... phía Client Các thao tác kết nối và chép tập tin lạ từ một máy khác về máy Client đều phải thông qua lớp bảo về SecurityManager RMISecurityManager sử dụng thiết lập trong file java. policy để cho phép hoặc cấm các kết nối từ xa VD: Grant { permission java. security.AllPermission } Chạy chương trình: Java –Djava .rmi. server.codebase = “http://path/of/folder/contain/_stub” CalculatorServer Cơ chế... ghi xuống đĩa Trong Java, khai báo đối tượng tuần tự hóa bằng cách cài đặt interface java. io.Serializable Là nền tảng và được dùng trong cơ chế hoạt động truyền dữ liệu kiểu đối tượng trong máy ảo Java và giữa những máy ảo Java với nhau VÍ DỤ VỀ CƠ CHẾ HOẠT ĐỘNG CỦA RMI VÍ DỤ VỀ CƠ CHẾ HOẠT ĐỘNG CỦA RMI VÍ DỤ VỀ CƠ CHẾ HOẠT ĐỘNG CỦA RMI MỤC LỤC 1 Giới thiệu tổng quan 2 Các vấn đề và giải pháp 3 Demo... động lớp STUB xuống máy khách Vấn đề: Khi viết chương trình từ Client, lập trình viên chỉ cần đến lớp interface mà Server cung cấp Lớp STUB chỉ cần thiết cho cơ chế RMI và không có ý nghĩa với nhà phát triển ứng dụng Lập trình viên không cần quan tâm đến lớp STUB ? Giải pháp: Cách thức nạp tự động lớp STUB thông qua tùy chọn CODEBASE khi đăng kí đối tượng với rmiregistry trên server Lưu ý:... Naming.bind( rmi: //localhost:1234/myhello”, hello); Bộ đăng ký RMIregistry Cơ chế làm việc của máy ảo Java khi đăng kí và gọi đối tượng giữa Server và Client Bộ đăng ký RMIregistry Cơ chế làm việc của máy ảo Java trên mô hình máy mạng vật lý thực sự Biến Classpath và Tùy chọn Codebase Biến Classpath Chương trình Java dựa vào biến môi trường Classpath để truy tìm các tập tin class Trên máy ảo rmiregistry... đăng kí Registry registry = LocateRegistry.getRegistry(hostAddr); // Lấy về danh sách các đối tượng do rmiregistry nắm giữ String objectAvailable[] = registry.list(); Bộ đăng ký RMIregistry Tự - tạo bộ đăng ký cục bộ Java hỗ trợ tạo bộ đăng ký cho riêng mình khi không cần dùng tới chương trình rmiregistry.exe Cách đăng ký: Gọi phương thức tĩnh createRegistry() của lớp LocateRegistry Lưu ý: cách này...Bộ đăng ký RMIregistry Bộ đăng ký có chức năng như một dịch vụ tìm kiếm Nơi mà đối tượng trên server đăng ký tên để client truy tìm từ xa Chương trình chạy ở dạng service: mở socket và lắng nghe các yêu cầu gửi đến cổng 1099 Có thể chỉ định một số cổng khác với cổng mặc định Java cho phép kết nối với bộ đăng kí để lấy danh sách các đối tượng mà RMIregistry đang quản lý //... rmiregistry đang chạy nếu biến Classpath không trỏ đến đường dẫn chứa lớp STUB thì sẽ báo lỗi Tùy chọn Codebase Java cung cấp cách thức tự động nạp lớp trung gian STUB từ xa thông qua tùy chọn codebase khi đăng ký đối tượng với rmiregistry trên máy chủ Với điều kiện máy chủ phải có chương trình web server TUẦN TỰ HÓA (SERIALIZABLE) ĐỐI TƯỢNG Khả năng ghi toàn bộ đối tượng xuống một tập tin Nếu... lời gọi phương thức từ xa Tất cả các kiểu dữ liệu đơn giản như int, char…đều được truyền theo tham trị Tất cả các dữ liệu đối tượng muốn truyền qua mạng đều buộc phải cài đặt 1 trong 2 giao tiếp: Remote: Đối tượng sẽ truyền theo tham chiếu Serializable : Đối tượng sẽ truyền theo tham trị Trong các lời gọi phương thức RMI, kiểu dữ liệu đối tượng nếu không cài đặt một trong hai giao tiếp thì... Ball weight return by server 27 Server Waiting fore client request Client send a Ball object, weight = 12 Chuyển đối tượng đến server theo tham biến - - - Vấn đề: nếu đối tượng cần truyền lên server quá lớn, ảnh hưởng tốc độ thực thi của chương trình Server có thể tham chiếu và xử lý trực tiếp đối tượng đang ở Client ? Giải pháp: Client sẽ chuyển đối tượng cho Server theo tham chiếu Server và Client . tổng quan 2. Các vấn đề và giải pháp 3. Demo MỤC LỤC 1. Giới thiệu tổng quan 2. Các vấn đề và giải pháp 3. Demo JAVA RMI LÀ GÌ? Kĩ thuật lập trình phân tán đối tượng trong Java. Mang ý nghĩa. giữa những máy ảo Java với nhau. VÍ DỤ VỀ CƠ CHẾ HOẠT ĐỘNG CỦA RMI VÍ DỤ VỀ CƠ CHẾ HOẠT ĐỘNG CỦA RMI VÍ DỤ VỀ CƠ CHẾ HOẠT ĐỘNG CỦA RMI MỤC LỤC 1. Giới thiệu tổng quan 2. Các vấn đề và giải pháp 3. Demo . ký. LocateRegistry.createRegistry(1234); … Naming.bind( rmi: //localhost:1234/myhello”, hello); Bộ đăng ký RMIregistry Cơ chế làm việc của máy ảo Java khi đăng kí và gọi đối tượng giữa Server và Client Bộ đăng ký RMIregistry Cơ chế