Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[КОМП СИСТЕМЫ] / Отчет

.docx
Скачиваний:
25
Добавлен:
07.02.2016
Размер:
31.72 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

Факультет інформатики та обчислювальної техніки

Кафедра: «Комп’ютерні системи

та мережі»

ЗВІТ

З лабораторної роботи

З дисципліни «Комп’ютерні системи»

Виконав ст. гр. КНТз-511 _____________ Малахов Є.О.

Прийняв викладач _____________ Дьячук Т.С.

Запоріжжя 2014 ©

JAVA RMI

Мета роботи: вивчити основи RMI, створити ряд розподілених додатків на основі технології RMI

Remote method invocation (віддалений виклик методів) - одна з перших технологій створення розподілених додатків мовою java.

RMI додаток складається із трьох рівнів:

  1. Рівень заглушок.

  2. Рівень віддаленого посилання.

  3. Транспортний рівень.

Архітектура Java RMI

В архітектурі Java RMI є інтерфейс активації, що грає таку ж роль, що об'єктний адаптер в CORBA - щоб не тримати об'єкт на сервері завжди в активному стані, тобто в оперативній пам'яті.

Створення віддаленого інтерфейсу

Для створення розподіленого додатка на основі java RMI необхідно виконати наступні дії.

  1. Створити віддалений інтерфейс і відкомпілювати його.

  2. Написати клас – реалізацію цього інтерфейсу й відкомпілювати його.

  3. Створити заглушки: стаб і скелетон за допомогою rmic.

  4. Створити серверний додаток, що буде надавати віддалений сервіс.

  5. Створити клієнтський додаток, що буде звертатися до сервера за сервісом.

Створимо простий розподілений RMI-додаток: клієнт передає серверу ціле число типу long і отримує результат обчислення квадрата цього числа, що потім виводиться на екран.

Завдання 1 – створення RMI-додатка

Завдання 2 – створення власного RMI-додатка

Завдання 3 – створення власного RMI-додатка

Завдання 1 – створення RMI-додатка

Створення віддаленого інтерфейсу

Код віддаленого інтерфейсу з ім'ям MyRemote має такий вигляд:

import java.rmi.*;

public interface MyRemote extends Remote

{

public long func(long a) throws RemoteException;

}

Відкомпілюємо:

> javac MyRemote.java

Створення реалізації віддаленого інтерфейсу:

import java.rmi.*;

import java.rmi.server.*;

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote

{

public MyRemoteImpl() throws RemoteException

{

super();

}

public long func(long a) throws RemoteException

{

long res=a*a;

return res;

}

}

Відкомпілюємо:

> javac MyRemoteImpl.java

Створення стаба й скелетона:

> rmic MyRemoteImpl

Створення серверного додатка:

import java.rmi.Naming;

public class Server

{

public Server()

{

try {

MyRemote k = new MyRemoteImpl();

Naming.rebind("rmi://localhost:1099/Service", k);

}

catch (Exception e)

{

System.out.println("Exception: " + e);

}

}

public static void main(String args[])

{

System.out.println("Server start succesfull");

new Server();

}

}

Відкомпілюємо:

> javac Server.java

Створення клієнтського додатка:

import java.rmi.*;

import java.net.*;

public class Client

{

public static void main(String[] args)

{

try {

MyRemote k = (MyRemote)Naming.lookup("rmi://"+args[0]+"/Service");

System.out.println(" Result = "+k.func(Long.parseLong(args[1])));

}

catch (Exception e)

{

System.out.println("Exception: " + e);

}

}

}

Відкомпілюємо:

> javac Client.java

Запуск розподіленого додатка:

Для запуску RMI-додатка необхідно виконати наступні дії.

  1. Увійти в робочу папку.

  2. Запустити службу реєстру RMI. Для цього виконати команду

> rmiregistry.

Реєстр RMI буде запущений в окремому консольному вікні й протягом його роботи можна використовувати службу RMI.

  1. Запустити серверний додаток, для чого виконати

> java Server.

У результаті серверний додаток буде запущено в окремому консольному вікні.

  1. Запустити клієнтський додаток, для чого виконати

> java Client localhost 14.

У результаті клієнт передасть серверу число 14 і отримає результат 196.

Завдання 2 – створення власного RMI-додатка

Код віддаленого інтерфейсу з ім'ям MyRemote має такий вигляд:

import java.rmi.*;

public interface Malakhov extends Remote

{

public long func(long a) throws RemoteException;

}

Відкомпілюємо:

> javac Malakhov.java

Створення реалізації віддаленого інтерфейсу:

import java.rmi.*;

import java.rmi.server.*;

public class MalakhovImpl extends UnicastRemoteObject implements Malakhov

{

public MalakhovImpl() throws RemoteException

{

super();

}

public long func(long a) throws RemoteException

{

long res=(a*a*a)*23;

return res;

}

}

Відкомпілюємо:

> javac MalakhovImpl.java

Створення стаба й скелетона:

> rmic MalakhovImpl

Створення серверного додатка:

import java.rmi.Naming;

public class Server

{

public Server()

{

try {

Malakhov k = new MalakhovImpl();

Naming.rebind("rmi://localhost:1099/Service", k);

}

catch (Exception e)

{

System.out.println("Exception: " + e);

}

}

public static void main(String args[])

{

System.out.println("Server start succesfull");

new Server();

}

}

Відкомпілюємо:

> javac Server.java

Створення клієнтського додатка:

import java.rmi.*;

import java.net.*;

public class Client

{

public static void main(String[] args)

{

try {

Malakhov k = (Malakhov)Naming.lookup("rmi://"+args[0]+"/Service");

System.out.println(" Result = "+k.func(Long.parseLong(args[1])));

}

catch (Exception e)

{

System.out.println("Exception: " + e);

}

}

}

Відкомпілюємо:

> javac Client.java

Запуск розподіленого додатка:

Для запуску RMI-додатка необхідно виконати наступні дії.

  1. Увійти в робочу папку.

  2. Запустити службу реєстру RMI. Для цього виконати команду

> rmiregistry.

Реєстр RMI буде запущений в окремому консольному вікні й протягом його роботи можна використовувати службу RMI.

  1. Запустити серверний додаток, для чого виконати

> java Server.

У результаті серверний додаток буде запущено в окремому консольному вікні.

  1. Запустити клієнтський додаток, для чого виконати

> java Client localhost 23.

У результаті клієнт передасть серверу число 23 і отримає результат 279841.

Завдання 3 – створення власного RMI-додатка

Код віддаленого інтерфейсу з ім'ям MyRemote має такий вигляд:

import java.rmi.*;

public interface Malakhov extends Remote

{

public float func(float a, float b) throws RemoteException;

}

Відкомпілюємо:

> javac Malakhov.java

Створення реалізації віддаленого інтерфейсу:

import java.rmi.*;

import java.rmi.server.*;

public class MalakhovImpl extends UnicastRemoteObject implements Malakhov

{

public MalakhovImpl() throws RemoteException

{

super();

}

public float func(float a, float b) throws RemoteException

{

long res=(a+b);

return res;

}

}

Відкомпілюємо:

> javac MalakhovImpl.java

Створення стаба й скелетона:

> rmic MalakhovImpl

Створення серверного додатка:

import java.rmi.Naming;

public class Server

{

public Server()

{

try {

Malakhov k = new MalakhovImpl();

Naming.rebind("rmi://localhost:1099/Service", k);

}

catch (Exception e)

{

System.out.println("Exception: " + e);

}

}

public static void main(String args[])

{

System.out.println("Server start succesfull");

new Server();

}

}

Відкомпілюємо:

> javac Server.java

Створення клієнтського додатка:

import java.rmi.*;

import java.net.*;

public class Client

{

public static void main(String[] args)

{

try {

Malakhov k = (Malakhov)Naming.lookup("rmi://"+args[0]+"/Service");

System.out.println(" Result = "+k.func(Float.parseFloat(args[1]), Float.parseFloat(args[2])));

}

catch (Exception e)

{

System.out.println("Exception: " + e);

}

}

}

Відкомпілюємо:

> javac Client.java

Запуск розподіленого додатка:

Для запуску RMI-додатка необхідно виконати наступні дії.

  1. Увійти в робочу папку.

  2. Запустити службу реєстру RMI. Для цього виконати команду

> rmiregistry.

Реєстр RMI буде запущений в окремому консольному вікні й протягом його роботи можна використовувати службу RMI.

  1. Запустити серверний додаток, для чого виконати

> java Server.

У результаті серверний додаток буде запущено в окремому консольному вікні.

  1. Запустити клієнтський додаток, для чого виконати

> java Client localhost 2.3 4.5.

У результаті клієнт передасть серверу число 2.3 та 4.5 і отримає результат 6.8.

Соседние файлы в папке [КОМП СИСТЕМЫ]