1. Trang chủ
  2. » Giáo Dục - Đào Tạo

RMI (Remote Method Invocation) pps

29 617 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 801,11 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• RMI Remote Method Invoke –có nghĩa là gọi phương thức từ xa là cách thức giao tiếp giữa các đối tượng Java có mã lệnh cài đặt nằm trên máy khác nhau có thể gọi lẫn nhau... RMI Gọi phươ

Trang 1

RMI (Remote Method Invocation)

Trang 3

RMI Các vấn đề

• Khái niệm RMI

• Những bước xây dựng và ứng dụng RMI

• Chạy và biên dịch một chương trình RMI

• Cấu hình Enterprise RMI

• RMI Applet

Trang 4

RMI Gọi phương thức từ xa

• Thông thường các chương trình của chúng ta được viết dưới dạng thủ tục chay hàm Mã lệnh của hàm (hay thủ tục) được nạp thẳng vào bộ nhớ và thực thi ngay trên máy cục bộ Vậy thì có cách nào nạp nội dung của hàm hay đối tượng ở một máy nào đó và gọi chúng từ một máy khác hay không?

• RMI (Remote Method Invoke –có nghĩa là gọi phương thức từ xa) là cách thức giao tiếp giữa các đối tượng Java có mã lệnh cài đặt nằm trên máy khác nhau có thể gọi lẫn nhau

Trang 5

RMI Gọi phương thức từ xa

• Việc phân phối các đối tượng qua những máy khác nhau để tận dụng phần cứng và phần mềm chuyên dụng

• Người phát triển xây dựng mạng dịch vụ và cài đặt nó trên những máy cụ thể

• Người dùng yêu cầu một thực thể thuộc lớp sử dụng cú pháp URL

• Người dùng sử dụng đối tượng giống như nó là 1 đối tượng

cụ thể, cục bộ

• Kết nối mạng tự động

• Các bản Java cho phép bạn vận chuyển những cấu trúc dữ liệu phức tạp thông qua mạng mà ko cần viết code để phân tích và xây dựng lại chúng

Trang 6

RMI Quá trình hoạt động

• Ứng dụng RMI bao gồm hai chương trình riêng biệt, server (máy chủ) và client (máy khách)

• Chương trình máy chủ sẽ tạo ra đối tượng ở xa, những đối tượng này được điều chỉnh có thể tham chiếu được và chờ cho đến khi máy khách thiết lập các phương thức gọi lên các đối tượng này

• Chương trình máy khách sẽ nhận được tham chiếu của một hay nhiều đối tượng sau đó tiến hành các phương thức gọi lên chúng

Trang 7

RMI Quá trình hoạt động

• Các tham số truyền cho các phương thức của đối tượng ở xa phải được đóng gói và chuyển qua mạng để đến được với phương thức thực sự (việc truyền kết quả trở về cũng vậy)

• Để giải quyết các vấn đề trên, đối tượng Java trên hai máy khác

nhau không gọi nhau trực tiếp mà thông qua các lớp trung gian nằm trên cả máy khách và máy chủ

• Phía máy khách, lớp trung gian này được gọi là Stub

• Phía máy chủ, lớp trung gian này được gọi là Skeleton

Trang 8

RMI Quá trình hoạt động

• Đầu tiên RMI-server đăng ký tên của

nó với bộ Registry

•RMI-client tìm tên của RMI-server trong

bộ Registry để thiết lập truy cập từ xa

với RMI-server

•Stub đóng gói thamsố rồi gửi đến

Skeleton

•Skeleton gọi phương thức từ xa rồi

đóng gói kết quả gửi về Stub

Trang 9

RMI Quá trình hoạt động

Trang 10

RMI Quá trình hoạt động

Trang 11

RMI Quá trình hoạt động

GIAO TIẾP STUB VÀ SKELETON

• Client gọi một phương thức từ xa, lời gọi này đầu tiên được chuyển tiếp đến Stub.

• Stub có nhiệm vụ gửi tiếp lời yêu cầu này đến Skeleton phía server bằng cách Stub mở một

socket đến server, đóng gói các tham số rồi truyền luồng dữ liệu này đến Skeleton.

• Skeleton chứa đựng một phương thức nhận các

lời yêu cầu từ xa, mở gói tham số, gọi hàm thực sự trên server để tính toán rồi trả kết quả về Stub phía client.

Trang 12

RMI Các bước xây dựng

1 Định nghĩa một giao tiếp từ xa (remote interface) trênserver

2 Xây dựng một đối tượng từ xa (remote object) bằng cáchHiện thực giao tiếp từ xa (remote interface)

3 Xây dựng chương trình phía Server

4 Xây dựng chương trình phía Client

5 Biên dịch các file Java nguồn (phía client vàserver)

6 Sinh ra các Stub phía client và Skeleton phía server

7 Khởi động bộ đăng ký RMI (RMI registry)

8 Khởi động các đối tượng từ xa phía server

9 Chạychương trình phía client

Trang 13

RMI Các bước xây dựng

1.ĐỊNH NGHĨA MỘT REMOTE INTERFACE

Để tạo một ứng dụng RMI, bước đầu tiên là định nghĩa một Remote Interface giữa các đối tượng Client và Sever

Các phương thức trong Remote Inteface muốn được gọi từ xa đều phải có khả năng ném ra ngoại lệ Remote Exception

Trang 14

RMI Các bước xây dựng

2 HIỆN THỰC REMOTE INTERFACE

Lớp Calculator ở bước1 chỉ là một Remote Interface, nó chỉ đặc tả các phương thức của đối tượng Từ giao tiếp đó, đối

tượng thực sự phải được cài đặt như sau:

Trang 15

RMI Các bước xây dựng

3.XÂY DỰNG CHƯƠNG TRÌNH TRÊN MÁY SERVER

Bây giờ ta viết một chương trình để cài đặt đối tượng Calculator trên máy server Ta đặt tên chương trình này là CalculatorServer:

/* CalculatorServer.java*/

import java.rmi.server.*;

Import java.rmi.*;

public class CalculatorServer{

public static void main(Stringargs[]) { try{

//tạo đối tượng Calculator thực sự

CalculatorImpl c= new CalculatorImpl();

System.out.println(“ExportingCalculator…”);

Trang 16

RMI Các bước xây dựng

3.XÂY DỰNG CHƯƠNG TRÌNH TRÊN MÁY SERVER

//thông báo sự hiện diện của đối tượng cho máy ảo Java

}

Trang 17

RMI Các bước xây dựng

4.XÂY DỰNG CHƯƠNG TRÌNH PHÍA CLIENT

Ở bước này ta thiết kế chương trình phía bên máy khách(client) có khả năng gọi và sử dụng đối tượng

Calculator trên máy chủ (server), như sau:

/* CalculatorClient.java*/

import java.rmi.*;

public class CalculatorClient { public static void main(String args[]) {

try{

Trang 18

RMI Các bước xây dựng

4.XÂY DỰNG CHƯƠNG TRÌNH PHÍA CLIENT

// tìm đối tượng cần truy xuất theo tên

System.out.println(“Findingobject…”);

Calculator c= (Calculator)Naming.lookup (“rmi://localhost/MyCalculator”);

// gọi phương thức của đối tượng

System.out.println(c.addNum(12,1));

} catch(Exception e) { System.out.println(e); } }

}

Trang 19

RMI Các bước xây dựng

5 BIÊN DỊCH CÁC FILE JAVA NGUỒN

Phía server ta đã có các file nguồn là Calculator.java, CalculatorImpl.java, CalculatorServer.java Tiến hành biên dịch chúng như sau:

C:\RMI>javacCalculator.java C:\RMI>javacCalculatorImpl.java C:\RMI>javacCalculatorServer.java

PhíabênClient ta đã có file nguồn là CalculatorClient.java Tiến hành biên dịch như sau:

C:\RMI>javacCalculatorClient.java

Trang 20

RMI Các bước xây dựng

6 SINH LỚP TRUNG GIAN STUB & SKETLETON

Dựa vào lớp cài đặt CalculatorImpl.class, trình biên dịchrmic.exe của Java sẽ cung cấp cho ta hai lớp trung gian Stub và Skeleton Mở cửa sổ DOS-promp(cmd) rồi đánh lệnh biên dịch sau:

C:\RMI>rmicCalculatorImpl

Kết quả ta sẽ thu được hai tập tin

CalculatorImpl_Stub.class

và CalculatorImpl_Skel.class

Trang 21

RMI Các bước xây dựng

7 CHẠY CHƯƠNG TRÌNH rmiregistry.exe

Mở cửa sổ DOS-prompt (cmd) chạy chương trình rmiregistry từ dòng lệnh như sau:

C:\RMI>rmiregistry.exe

Chương trình này chạy ở dạng service Nó có nhiệm vụ đón nhận các kết nối chứa thông tin về đối tượng do phương thức Naming.bind() gửi đến

Mặc định rmiregistry.exe lắng nghe các kết nối gửi đến cổng 1099

Trang 22

RMI Các bước xây dựng

8 KHỞI ĐỘNG CÁC ĐỐI TƯỢNG PHÍA SERVER

Bây giờ ta mở một cửa sổ DOS-prompt khác chạy chương

trình CalculatorServer như sau:

Trang 23

RMI Các bước xây dựng

9 CHẠY CHƯƠNG TRÌNH PHÍA CLIENT

Bây giờ ta mở thêm một cửa sổ DOS-prompt thứ ba để chạy chương trình CalculatorClient như sau:

Trang 24

RMI Tích hợp tham số

•Trong Java, đối tượng được truyền theo tham chiếu còn các kiểu

dữ liệu đơn giản như int, char,… được truyền theo tham trị

• Đối với việc truyền tham số qua mạng theo cơ chế RMI thì có hai nguyên tắc sau:

-Tất cả các kiểu dữ liệu đơn giản như int, char,… đều được truyền theo thamtrị

-Tất cả các dữ liệu kiểu đối tượng muốn truyền qua mạng đều

buộc phải cài đặt một trong hai tiếp là Remote hoặc Serializable Các đối tượng cài giao tiếp Remote sẽ được truyền theo tham chiếu còn các đối tượng cài đặt giao tiếp Serializable sẽ được truyền theo tham trị

Trang 25

RMI Cấu hình Enterprise

• Những file stub cần được đặt trên một HTTP server cho việc download

– Trong Java 2, giao thức RMI 1.2 không yêu cầu skeleton

• Client phải cài đặt 1 RMISecurityManager để tải những lớp RMI từ xa

– System.setSecurityManager (new RMISecurityManager());

• Client cần có một policy file để kết nối và đăng ký và HTTP server

Trang 26

RMI Cấu hình Enterprise

Policy File cho Client

Grant {

//rmihost - RMI registry and the server

//webhost –HTTP server for stub classes

Server liên kết với rmiregistry(và client) trên port ngẫu nhiên có trong nguồn

Có thể thiết lập những chính sách trong java.policy đặt trong JAVA_HOME/lib/security/

Trang 27

RMI RMI Applet

• Applet không cần lớp RMI Security Manager

• Applet chỉ có thể truy cập server trong những files lớp đã được load

– RMI registry và server đối tượng ở xa của server phải cùng HTTP host nơi applet được load

• RMI 1.1 Giao thức stub không chính thức được hỗ trợ trên IE

• RMI 1.2 Giao thức stub cần Java plug-in hoặc Netscape 6

Trang 29

THANK YOU FOR YOUR

LISTENING

Ngày đăng: 07/08/2014, 15:21

TỪ KHÓA LIÊN QUAN