Ознакомление с технологией RMI

Ознакомление с основными принципами функционирования технологии Java RMI. Реализация удаленных объектов и изменение их параметров. Реализация и интерфейс калькулятора, поддерживающего базовые операции (+, -, *, /) с использованием технологии Java RMI.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 06.08.2017
Размер файла 73,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Лабораторная работа

Ознакомление с технологией RMI

Введение

Цель работы: Ознакомиться с основными принципами функционирования технологии Java RMI. Научиться реализовывать удаленные объекты и вызывать методы удаленных объектов.

1. Краткие теоретические сведения

Java Remote Method Invocation (RMI) - интерфейс вызова удаленных методов. Распределенная объектная модель, специфицирующая, каким обра-зом производится вызов удаленных методов, работающих на другой виртуальной машине Java.

Приложения RMI часто рассматриваются как две раздельные программы - сервер и клиент. Типичное серверное приложение создает некоторые удаленные объекты, делает ссылки к ним доступными, и ожидает от клиентов вызова методов для этих объектов. Типичное клиентское приложение получает удаленную ссылку к одному или нескольким удаленным объектам на сервере, а затем вызывает для них методы. Система RMI предусматривает механизм, с помощью которого сервер и клиент связываются друг с другом и обмениваются информацией.

Распределенное приложение, построенное с помощью Java RMI, создано из интерфейсов и классов. Интерфейсы определяют методы, а классы реализуют методы, определенные в интерфейсах, а также, возможно, определяют и новые дополнительные методы. В распределенном приложении предусматривается размещение некоторых реализаций на различных виртуальных машинах. Объекты, имеющие методы, которые могут вызываться между различными виртуальными машинами, являются удаленными объектами - remote objects.

Объект становится удаленным объектом при реализации удаленного интерфейса - remote interface, который имеет следующие характеристики.

1) Удаленный интерфейс расширяет интерфейс java.rmi.Remote.

2) Каждый метод интерфейса объявляет java.rmi.RemoteException в своем условии throws, помимо любых других исключений, специ-фичных для конкретного приложения.

При передаче объекта от одной виртуальной машины к другой RMI рассматривает удаленный объект - remote object не так, как обычный не удаленный объект. Вместо того, чтобы делать копию реализации объекта в принимающей виртуальной машине, RMI передает удаленный stub - заглушку для удаленного объекта. Этот stub действет как локальное представление, или заместитель (proxy) для удаленного объекта, а для вызывающего является удаленной ссылкой. Вызывающий вызывает метод для локального stub, который отвечает за обработку вызова метода удаленного объекта.

Переданный stub для удаленного объекта реализует тот же набор удаленных интерфейсов, который реализует удаленный объект. Это позволяет для stub быть "передатчиком" к любому из интерфейсов, которые реализует удаленный объект. Однако это также означает, что только те методы, которые определены в удаленном интерфейсе, могут быть вызваны на принимающей виртуальной машине.

2. Ход работы

java rmi калькулятор

Реализация калькулятора, поддерживающего базовые операции (+, -, *, /) с использованием технологии Java RMI. Клиентская часть выполнена в виде консольного интерфейса.

1. Интерфейс ICalculator

import java.rmi.Remote;

import java.rmi.RemoteException;

// интерфейс должен расширять Remote

public interface ICalculator extends Remote {

// и генерировать RemoteException

public String WorHello(String name) throws RemoteException;

public long add(long a, long b) throws RemoteException;

public long sub(long a, long b) throws RemoteException;

public long mul(long a, long b) throws RemoteException;

public long div(long a, long b) throws RemoteException;

}

2. Реализация интерфейса (класс CalculatorImpl)

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

public class CalculatorImpl extends UnicastRemoteObject implements ICalculator {

/* UnicastRemoteObject предоставляет такую реализацию многих

* методов класса java.lang.Object (equals, hashCode,

* toString), подходящие для удаленных объектов

*/

public CalculatorImpl() throws RemoteException{

super();

}

@Override

public long add(long a, long b) throws RemoteException {

// TODO Auto-generated method stub

return a+b;

}

@Override

public long sub(long a, long b) throws RemoteException {

// TODO Auto-generated method stub

return a-b;

}

@Override

public long mul(long a, long b) throws RemoteException {

// TODO Auto-generated method stub

return a*b;

}

@Override

public long div(long a, long b) throws RemoteException {

// TODO Auto-generated method stub

return a/b;

}

}

3. Сервер (класс CalculatorServer)

import java.rmi.*;

import java.rmi.registry.LocateRegistry;

import java.rmi.registry.Registry;

public class CalculatorServer {

public static void main(String[] args) {

// задаем файл политики безопасности

System.setProperty("java.security.policy","D:\\rmi.policy");

// Указываем сервер на котором регистрируеться имя сервиса

String name = "rmi://localhost/CalculatorService";

if (System.getSecurityManager() == null) {

System.setSecurityManager(new RMISecurityManager());

}

try {

/* создаем RMI Registry. Если его не создавать,

* то требуется запускать отдельно. RMI Registry является

* простым сервисом именований и позволяет клиенту

* получить ссылку на удаленный объект по имени

*/

LocateRegistry.createRegistry(Registry.REGISTRY_PORT);

ICalculator hw = new CalculatorImpl();

// регистрируем объект в RMI Registry

Naming.rebind(name, hw);

System.out.println("CalculatorServer bound");

} catch (Exception e) {

System.err.println("CalculatorServer Trouble: " + e.getMessage());

e.printStackTrace();

}

}

}

4. Клиент (класс CalculatorClient)

import java.rmi.*;

import java.util.Scanner;

public class CalculatorClient {

public static void main(String[] args) {

try {

// адрес RMI Registry и имя сервиса

String name = "rmi://localhost/CalculatorService";

// получаем клиентскую заглушку

ICalculator hw = (ICalculator) Naming.lookup(name);

// вызываем метод удаленного объекта

System.out.println("Calculate something:");

System.out.println("1(+), 2(-), 3(*), 4(/)");

Scanner in = new Scanner(System.in);

System.out.print("First number: ");

long x = in.nextLong();

System.out.print("Second number: ");

long y = in.nextLong();

for (int i = 0; i < 10; i++) {

System.out.print("Choose operation: ");

int operation = in.nextInt();

switch (operation) {

case 1:

System.out.println(hw.add(x, y));

break;

case 2:

System.out.println(hw.sub(x, y));

break;

case 3:

System.out.println(hw.mul(x, y));

break;

case 4:

System.out.println(hw.div(x, y));

break;

default:

System.out.println("Invalid operation");

break;

}

}

} catch (Exception e) {

System.err.println("ComputePi exception: " + e.getMessage());

e.printStackTrace();

}

}

}

3. Результаты работы

Результат запуска серверной части

Рисунок 1 - Запуск сервера

Результат работы клиентской части

Рисунок 2 - Результат работы калькулятора

Выводы

В ходе выполнения данной работы мы ознакомились с основными принципами функционирования технологии Java RMI, а также научились реализовывать удаленные объекты и вызывать методы удаленных объектов С использованием технологии Java RMI был реализован калькулятор, поддерживающий базовые операции (+, -, *, /).

Размещено на Allbest.ru


Подобные документы

  • Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.

    курсовая работа [508,1 K], добавлен 10.11.2014

  • Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.

    курсовая работа [208,6 K], добавлен 03.12.2013

  • Принцип работы Java. Аплеты как особенность Java-технологии, характеристика методов их защиты. Модель безопасности JDK1.2 и концепция "песочницы". Иерархия криптографических сервисов, алгоритмов. Объектная организация криптографической подсистемы Java.

    реферат [54,8 K], добавлен 09.09.2015

  • Ознакомление со способом вывода графики в приложениях с использованием метода paintComponent. Рассмотрение основных характеристик компонента JPanel. Правила вывода геометрических фигур в Java; выбор параметров начертания линий, шрифта и заливки.

    лекция [521,5 K], добавлен 01.05.2014

  • Основа пользовательского интерфейса. Возможности пакетов java.awt.geom, java.awt, классов java.awt.Graphics и java.awt.Graphics2D. Основные графические примитивы и работа с потоками. Листинг программы и составление композиции аффинных преобразований.

    методичка [525,3 K], добавлен 30.06.2009

  • Преимущество использования программ, написанных на Java, требования к ним и настройки на клиентском ПК. Развертывание и последующее "автоматическое" обновление версий GUI клиента с помощью использования технологии Java Web Start в среде Windows.

    реферат [33,2 K], добавлен 16.05.2011

  • Характеристика библиотеки java.awt. Обработка событий управляющими компонентами и менеджерами размещения. Основные виды компонентов. Написание программы–калькулятора, реализующую графический интерфейс. Спецификация класса Calc и иерархия классов AWT.

    методичка [643,8 K], добавлен 30.06.2009

  • Разработка технологии и средств реализации Java-приложения, сокращающих трудоемкость создания и гибкость модификации интерфейса пользователя. Использование XML-документов для описания внешнего представления, элементов управления и событий экранных форм.

    дипломная работа [2,8 M], добавлен 19.08.2011

  • Выполнение Java-программы. Набор программ и классов JDK. Объектно-ориентированное программирование в Java. Принципы построения графического интерфейса. Компонент и контейнер графической системы. Апплеты как программы, работающие в среде браузера.

    курсовая работа [42,3 K], добавлен 08.02.2011

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.