Kỹ thuật gọi đối tượng ở xa bằng phương thức động(DYNAMIC METHOD INVOKE)

5 178 0
Kỹ thuật gọi đối tượng ở xa bằng phương thức động(DYNAMIC METHOD INVOKE)

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

Thông tin tài liệu

Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) Bởi: Khoa CNTT ĐHSP KT Hưng Yên Qua chương trình ví dụ ta thấy muốn khách quan gọi phương thức đối tượng chủ đối tượng xa phải cung cấp lớp giao tiếp Interface thân đối tượng Trình khách dựa vào lớp giao tiếp để chuyển kiểu đối tượng dạng tường minh sau nhận tham chiếu đến đối tượng hàm Naming.lookup() VD: (Hello) obj = (Hello) Naming.lookup (“rmi://localhost/myhello”); (PingServer) obj = (PingServer) Naming.lookup (“rmi://localhost/myhello”); Hello PingServer lớp giao tiếp đối tượng mà nhà cung cáp phải gửi đến Cách gọi hàm xem cách gọi hàm tĩnh Bởi trình khách sau chuyển kiểu đôi tượng dạng tường minh truy xuất đối tượng xa theo cách thông thường Tuy nhiên, bạn lớp giao tiếp Interface đối tượng tay sao? Nghĩa bạn biết cách lấy tham chiếu đối tượng có lớp giao tiếp Interface đối tượng để chuyển kiểu Trường hợp bạn sử sụng kỹ thuật phản chiếu (reflect ) Java để thực triệu gọi phương thức động Bạn lấy tham chiếu đối tượng hàm Naming.lookup( ) dạng tổng quát Object Sử dụng đối tượng Object gọi phương thức getMethod() bạn biết phương thức mà đối tượng nấm giữ Hàng invoke () giúp bạn thực thi phương thức bên đối tượng Dưới chương trình ví dụ thực qua bước sau: Bước : Đặc tả giao tiếp cho lớp đối tương Friend 1/5 Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) Ví dụ : Friend.java Import java.rmi.* ; Public interface Friend extends Remote { Public String greeting (Strinh name) throws RemoteException; Bước : Cài đặt chi tiết cho đối tượng Ví dụ : FriendImpl.Java Import java.rmi.* ; Public class FriendImpl implements Friend { Public String greeting (Strinh name) throws RemoteException { Return (“Hi” + Name + “! Nice to meetyou”); Bước 3: Thiết lập đăng ký đối tượng máy chủ Ví dụ : Setup.Java Import java.rmi.*; Inport java.rmi.server.* ; Public class setup { Public static void main (String arg[]) throws Exception{ Friend obj = new FriendImpl(); UnicastRemoteObject.exportObject(obj); System.out.println(“Friend waiting for client request ”); Naming.bind(“rmi:// localhost / myfriend”,obj) } } 2/5 Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) Bươc 4: Viêt chương trình khách Import java.rmi.*; Inport java.lang.reflect.* ; Public class Client { Public static void main (String arg[]) throws Exception{ // Tìm tham chiếu đói tượng Object o = Naming.lookup ( // Truy tìm xuất xứ lớp đối tượng Class c = o.getCl ass () ; // Định kiểu tham số phương thức cần gọi Class [] parameterTypes = new Class [] {String.class}; // Truy tìm phương thức cần gọi Method thêMethod; TheMethod = c.getMethod (“Greeting”,parameterTypes); // Định số truyền vào phương thức cần gọi Object[] arguments = new Object [] {“Johny”} // Gọi phương thức nhận kết trả String result = (String) thêMethod.invoke (o, arguments); System.out.println (result); } } Bước 5: Biên dịch chạy chương trình.Bạn lưu tất mã nguồn vào thư mục C :\\ RMI \ Dynamic Chuyển vào thư mục để biên dịch mã nguồn 3/5 Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) C :\\ RMI \ Dynamic> Javac*.java - Biên dịch lớp trung gian : C :\\ RMI \ Dynamic> rmic FriendImpl - Khởi động đăng ký rmiregistry : C :\\ RMI \ Dynamic> Start rmiregistry - Cài đặt đối tượng: C :\\ RMI \ Dynamic> start Java Setup Friend waiting for client resquest… - Gọi đối tượng từ trình khách : C :\\ RMI \ Dynamic> star Java Setup Hi Johny , Nice to meet you ! Chương trình khách client.Java ta lấy vể tham chiếu đến đối tượng Myfriend máy chủ dạng tổng quát Object … không sử dụng lớp giao tiếp Friend.Class để chuyển kiểu thưởng lệ , thay vào ta tìm cách”Khảo sát” nội dung bên lớp đối tượng Trước hết bạn dùng lớp Class tổng quát để lấy xuất xứ lớp mà đối tượng thể hiện: Class c = o.getClass (); Tiếp đến bạn biết đối tượng chứa phương thức mang tên “greeting” Phương thức yêu cầu tham số có kiểu String Chúng ta cung cấp thông tin để Java lấy phương thức cần gọi sau: // Định kiểm tham số phương thức cần gọi : Class [] parameterTypes = new Class [] {String.class}; // Yêu cầu Java truy tìm phương thức cần gọi : Method thêMethod; TheMethod = c.getMethod (“Greeting”,parameterTypes); 4/5 Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) Công việc gọi phương thức Đối tượng theMethod cung cấp cho bạn phương thức invoke() để gọi phương thức mà tham trỏ đến Trước gọi phương thức cần khởi tạo danh sách đối số để truyền vào phương thức sau: // Đinh đối số cần vào phương thức càn gọi Object[] arguments = new Object [] {“Johny”} Bước cuối triệu gọi phương thức gián tiếp // Gọi phương thức nhận kết trả String result = (String) thêMethod.invoke (o, arguments); Phương thức invoke() yêu cầu bạn hai đối số,đối số thứ thể đối tương chứa phương thức Đối số thứ hai danh sách đối số càn truyền vào phương thức gọi, Trên cách gọi phương thức động nghĩa không cần đến lớp giao tiếp đối tương từ máy chủ Kĩ thuật áp dụng cho đối tương xa mà áp dụng cho tất đối tượng Java Ban tham khảo thêm chủ đề “Reflection” tài liệu lập trình Java vè đề tài hấp dẫn ví dụ thay cho lời gọi động bạn thu kết cách gọi tĩnh ngắn gọn sau : Friend o = (Friend) Naming.lookup (“rmi ://localhost/myfriend”); String result = o.greeting(“Johny”); Cách gọi động phức tạp lại uyển chuyển linh động cách gọi tĩnh 5/5 ... TheMethod = c.getMethod (“Greeting”,parameterTypes); 4/5 Kỹ thuật gọi đối tượng xa phương thức động(DYNAMIC METHOD INVOKE) Công việc gọi phương thức Đối tượng theMethod cung cấp cho bạn phương thức. .. phương thức invoke() để gọi phương thức mà tham trỏ đến Trước gọi phương thức cần khởi tạo danh sách đối số để truyền vào phương thức sau: // Đinh đối số cần vào phương thức càn gọi Object[] arguments... gọi phương thức gián tiếp // Gọi phương thức nhận kết trả String result = (String) th Method. invoke (o, arguments); Phương thức invoke() yêu cầu bạn hai đối số ,đối số thứ thể đối tương chứa phương

Ngày đăng: 31/12/2015, 10:47

Từ khóa liên quan

Mục lục

  • Kỹ thuật gọi đối tượng ở xa bằng phương thức động(DYNAMIC METHOD INVOKE)

Tài liệu cùng người dùng

Tài liệu liên quan