Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
2,18 MB
Nội dung
Invocati on: lời cầu khẩn Java Simplified / Session 22 / of 45 09/14/15 Thực chất RMI chế gọi phương thức từ xa thực tích hợp ngôn ngữ Java. Vì Java ngôn ngữ lập trình hướng đối tượng, nên phương pháp lập trình RMI phương pháp hướng đối tượng thao tác hay lời gọi phương thức liên quan đến đối tượng. Ngoài ra, RMI cho phép Client gửi tới đối tượng đến cho Server xử lý, đối tượng xem tham số cho lời gọi hàm từ xa, đối tượng có liệu bên hành vi đối tượng thực sự. Java Simplified / Session 22 / of 45 Thực chất RMI chế gọi phương thức từ xa thực tích hợp ngôn ngữ Java. Vì Java ngôn ngữ lập trình hướng đối tượng, nên phương pháp lập trình RMI phương pháp hướng đối tượng thao tác hay lời gọi phương thức liên quan đến đối tượng. Ngoài ra, RMI cho phép Client gửi tới đối tượng đến cho Server xử lý, đối tượng xem tham số cho lời gọi hàm từ xa, đối tượng có liệu bên hành vi đối tượng thực sự. Java Simplified / Session 22 / of 45 The concept of performing computation over the network has been around before java •A popular way to distribute work over the network through RPC •The implementation of RPC over the network was mostly procedural because of the restrictions on the Languages that implemented it. •And hence the implementation of RPC happened to be procedura Java Simplified / Session 22 / of 45 Đối tượng Remote: đối tượng tạo phép đối tượng khác máy JVM khác gọi tới nó. Phương thức Remote: Đối tượng Remote chứa số phương thức, phương thức gọi từ xa đối tượng JVM khác . Java Simplified / Session 22 / of 45 Cơ chế truyền quản lý biến liệu tiến trình máy khác (mashalling) Java Simplified / Session 22 / of 45 Trình biên dịch rmic.exe tạo hai lớp trung gian C1_Skel C1_Stub. Lớp C1_Stub đem máy A. Khi A1 máy A gọi C1 chuyển lời gọi đến lớp C1_Stub, C1_Stub chịu trách nhiệm đóng gói tham số, chuyển vào không gian địa tương thích với đối tượng C1 sau gọi phương thức tương ứng. Nếu có phương thức đối tượng C1 trả lớp C1_Skel đóng gói trả ngược cho C1_Stub chuyển giao kết cuối lại cho A1. Nếu kết nối mạng gặp cố lớp trung gian Stub thông báo lỗi đến đối tượng A1. Theo chế A1 nghĩ hoạt động trực tiếp với đối tượng C1 máy cục bộ. Java Simplified / Session 22 / of 45 09/ 14/15 (rmic.exe) Java Simplified / Session 22 / of 45 (rmic.exe) Java Simplified / Session 22 / of 45 Stub đối tượng ủy quyền đối tượng thực nằm hệ thống từ xa Java Simplified / Session 22 / 10 of 45 Qui trình chuyển tham số liệu qua lại lớp trung gian gọi mashaling data Java Simplified / Session 22 / 34 of 45 Nếuđốitượngball lớn việc đóng gói toàn bộđốitương chuyểnđi chuyển lại mạng sẽảnhhưởngđến tốcđộ th ực thi củachương trình.Bây s ẽ xây dựngchương trình thamchiếu xử lý trực tiếpđốitượng nằm máy khách. Nghĩa ếutrình ch ủđược trình khách truy xuất từ xa trình kháchcũng gọi từ xa trình chủ . B ằng cách trình ch ủ vàtrình khách triệu gọi lẫn Java Simplified / Session 22 / 35 of 45 Note: trình khách tham chiếu đến đối tượng trình chủ: - đối tượng máy chủ phải cài đặt lớp giao tiếp Remote - Sinh lớp trung gian Stub Skeleton - Đăng ký rmiregistry / / Java Simplified / Session 22 / 36 of 45 Khi trình khách gọi server.callServerMethod() đối tượng chủ, phương thức máy chủ lại sử dụng gọi ngược lại phương thức client.callClientMethod() đối tượng chạy trình khách. Trước gọi callClientMethod() trình chủ thực tính toán (in i), kết tính toán chuyển cho trình khách trình khach tự động in kq. Do dùng callback nên trình chủ tính toán xong chủ động y/c trình khách tiếp nhận kq, ko có callback trình khách phải tự canh time để gọi pt trình chủ để lấy kq Java Simplified / Session 22 / 37 of 45 Tùy thuộc vào hàm thông báo diện khả giao tiếp từ xa : UnicastRemoteObject.exportObject() Thì đối tượng truyền theo tham chiếu, Nếu ko truyền theo tham trị Java Simplified / Session 22 / 38 of 45 Việc lưu đối tượng đĩa, liệu tạp tin loại liệu (trải phẳng đối tượng theo thứ tự) để truyền đối tượng máy ảo JVM dạng tham số lời gọi phương thức từ client tới server giá trị trả từ lời gọi phương thức Java Simplified / Session 22 / 39 of 45 Một dịch vụ đăng ký tiếp nhận quản lý lúc nhiều đối tượng chủ khác /1 /1 Java Simplified / Session 22 / 40 of 45 Trong java cho phép lấy danh sách đốitượng mà rmiregistry nắm giữ . Dướiđây chương trình tìmhiểudanh sách tên tên cácđốitượngdo rmiregistry nắmgiữ 09/14/15 Java Simplified / Session 22 / 41 of 45 Khi trình khách gọi server.callServerMethod() đối tượng chủ, phương thức máy chủ lại sử dụng gọi ngược lại phương thức client.callClientMethod() đối tượng chạy trình khách. Trước gọi callClientMethod() trình chủ thực tính toán (in i), kết tính toán chuyển cho trình khách trình khach tự động in kq. Do dùng callback nên trình chủ tính toán xong chủ động y/c trình khách tiếp nhận kq, ko có callback trình khách phải tự canh time để gọi pt trình chủ để lấy kq Java Simplified / Session 22 / 42 of 45 Khi trình khách gọi server.callServerMethod() đối tượng chủ, phương thức máy chủ lại sử dụng gọi ngược lại phương thức client.callClientMethod() đối tượng chạy trình khách. Trước gọi callClientMethod() trình chủ thực tính toán (in i), kết tính toán chuyển cho trình khách trình khach tự động in kq. Do dùng callback nên trình chủ tính toán xong chủ động y/c trình khách tiếp nhận kq, ko có callback trình khách phải tự canh time để gọi pt trình chủ để lấy kq Java Simplified / Session 22 / 43 of 45 Trình khách sau chuyển kiểu đối tượng dạng tường minh truy xuất đối tượng từ xa theo cách thông thường cục Java Simplified / Session 22 / 44 of 45 / / Firewall mở số cổng phổ biến cho client dùng server: 80, 21, 23, 110 Java Simplified / Session 22 / 45 of 45 Trình môi giới Java Simplified / Session 22 / 46 of 45 Interoperate Internet Object Protocol. a. Phần cài đặt đối tượng Corba máy chủ: - Đặc tả đối tượng X IDL Corba - Chuyển đặc tả X thành ngôn ngữ cụ thể (dùng trình biên dịch tương ứng, ex: idlj.exe -> java; idl2cpp.exe-> C++) - Trình biên dịch tạo lớp _Skel - Cài đặt đối tượng băng ngôn ngữ (Java) b. Phần kết nối với đối tượng khách: - Sử dụng IDL X y/c trình biên dịch tạo _Stub (trình biên dịch tương ưng với trình khách) - Trình khách gọi đối tượng chủ, lời gọi chuyển đến lớp _Stub, đến trình môi giới ORB. ORB khách chủ giao tiếp với qua IIOP. Tiếp ORB máy chủ chuyển lời gọi đến lớp _Skel. Cuối cung đối tượng Corba thực phương thức gọi Java Simplified / Session 22 / 47 of 45 Interoperate Internet Object Protocol. a. Phần cài đặt đối tượng Corba máy chủ: - Đặc tả đối tượng X IDL Corba - Chuyển đặc tả X thành ngôn ngữ cụ thể (dùng trình biên dịch tương ứng, ex: idlj.exe -> java; idl2cpp.exe-> C++) - Trình biên dịch tạo lớp _Skel - Cài đặt đối tượng băng ngôn ngữ (Java) b. Phần kết nối với đối tượng khách: - Sử dụng IDL X y/c trình biên dịch tạo _Stub (trình biên dịch tương ưng với trình khách) - Trình khách gọi đối tượng chủ, lời gọi chuyển đến lớp _Stub, đến trình môi giới ORB. ORB khách chủ giao tiếp với qua IIOP. Tiếp ORB máy chủ chuyển lời gọi đến lớp _Skel. Cuối cung đối tượng Corba thực phương thức gọi Java Simplified / Session 22 / 48 of 45 - Tạo file đặc tả Hello.idl. - Biên dịch: idlj –fserver Hello.idl - Có file tạo ra: - HelloOperation.java: File chuyển đặc tả IDL thành đặc tả interface Java - Hello.java: File chuyển lớp giao tiếp đối tượng kiểu Java thành lớp giao tiếp đối tượng đặc thù Corba - HelloPOA.java: File chưa lớp cài đặt đối tượng Corba - Tạo đối tượng Corba Hello: HelloServant.java - Biên dịch: javac *.java - HelloOperation.class, Hello.class: lớp trung gian - HelloServant.class: đối tượng corba (kế thừa HelloPOA) Java Simplified / Session 22 / 49 of 45 [...]... NotBoundException: nếu server ở xa không nhận ra tên của nó RemoteException nếu trình không thể liên lạc được với trình đăng ký AccessException nếu server từ chối tra tìm tên cho host cụ thể MalformedURLException nếu URL không đúng cú pháp nó sẽ đưa ra ngoại lệ Java Simplified / Session 22 / 16 of 45 NotBoundException: nếu server ở xa không nhận ra tên của nó RemoteException nếu trình không thể liên lạc được... NotBoundException: nếu server ở xa không nhận ra tên của nó RemoteException nếu trình không thể liên lạc được với trình đăng ký AccessException nếu server từ chối tra tìm tên cho host cụ thể MalformedURLException nếu URL không đúng cú pháp nó sẽ đưa ra ngoại lệ Java Simplified / Session 22 / 18 of 45 Về mặt kỹ thuật đối tượng từ xa không phải là một thể hiện của RemoteObject Java Simplified / Session 22 / 19... thức nạp tự động lớp CalculatorImpl_Stub.class từ xa thông qua tùy chọn Codebase khi đăng ký đối tượng với rmiregistry trên máy chủ Ở máy chủ phải hỗ trợ thêm dịch vụ WebServer chạy trên máy nơi rmiregistry đang chạy Sau đó chép tập tin CalculatorImpl_Stub.class vào thư mục myclass của trình chủ web server Khi sử dụng tùy chọn Codebase thì biến Classpath trên máy ảo nơi rmiregistry đang chạy không... ưu tiên lấy lớp CalculatorImpl_Stub.class từ đườngdẫn Classpath mà bỏ qua tùy chọn Codebase Java Simplified / Session 22 / 28 of 45 Khi máy khách có yêu cầu rmiregistry trả về tham chiếu của đối tượng, nếu máy khách chưa có lớp Calculatorimpl_Stub.class,rmiregistry sẽ hướng dẫn máy khách tự động nạp lớp này từ địa chỉ codebase: http://172.16.11.12/myclass/ 1 Trình chủ đăng ký đối tượng với rmiregistry,... http://172.16.11.12/myclass/ 1 Trình chủ đăng ký đối tượng với rmiregistry, nó y/c bộ Registry truy tìm lớp stub ở URL http://IP/Dir (phải lưu lớp stub ở đúng trong thư mục Dir) java –Djava.rmi.server.codebase=“http://IP/Dir/” 2 Rmiregistry sẽ tìm lớp stub trong CLASSPATH Nếu ko có, nó sẽ dựa vào URL mà server cung cấp để y/c Webserver trả về lớp Stub Và ghi nhớ lại URL 3 Trình khách y/c rmiregistry... ch ủ vàtrình khách có thể triệu gọi lẫn nhau Java Simplified / Session 22 / 35 of 45 Note: trình khách có thể tham chiếu đến đối tượng của trình chủ: - đối tượng trên máy chủ phải cài đặt lớp giao tiếp Remote - Sinh ra các lớp trung gian Stub và Skeleton - Đăng ký rmiregistry 9 4 5 0 / 1 / 1 Java Simplified / Session 22 / 36 of 45 . Session 22 / 5 of 45 Đối tượng Remote: một đối tượng được tạo ra để cho phép những đối tượng khác trên một máy JVM khác gọi tới nó. Phương thức Remote: Đối tượng Remote chứa một số các phương. Simplified / Session 22 / 16 of 45 NotBoundException: nếu server ở xa không nhận ra tên của nó. RemoteException nếu trình không thể liên lạc được với trình đăng ký . AccessException nếu server. Simplified / Session 22 / 17 of 45 NotBoundException: nếu server ở xa không nhận ra tên của nó. RemoteException nếu trình không thể liên lạc được với trình đăng ký . AccessException nếu server