Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
202
Добавлен:
17.04.2018
Размер:
642 Кб
Скачать
☆

ИП. RMI. Класс интерфейсов

МИЭТ, 2017

Проект RMIInterface Интерфейс RMI

package miet;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface RMI extends Remote {

//Обявлем простой метод возвращающий строку

public String getData(String text) throws RemoteException;

//Обявлем метод принимающий и возвращающий кастомный объект public Result makeCalculate(BigData bd) throws RemoteException;

}

ИП. RMI. Класс пользовательских объектов

МИЭТ, 2017

Проект JavaMietLib Класс BigData (который будем посылать) package miet;

import java.io.Serializable; import java.util.ArrayList;

public class BigData implements Serializable {

//класс BigData будет содержать коллекцию ArrayList private ArrayList data;

public void BigData( ArrayList temp ) { this.data = temp;

}

public ArrayList getdata() { return this.data;

}

public void setdata(ArrayList temp ) { this.data = temp;

}

}

ИП. RMI. Класс пользовательских объектов

МИЭТ, 2017

Проект JavaMietLib Класс Result (который будем принимать) package miet;

import java.io.Serializable;

public class Result implements Serializable {

/*

класс Result будет хранить число типа float, которое является результатом некоего расчета */

private float Supremum;

public float getSupremum() { return this.Supremum;

}

public void setSupremum(float temp) { this.Supremum = temp;

}

}

ИП. RMI. Класс клиента

МИЭТ, 2017

Проект RMIClient Класс RMIClient Метод main

 

package miet;

import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.util.ArrayList;

public class RMIClient {

public static void main(String args[]) {

RMIClient client = new RMIClient(); //создаем экземпляр самого себя System.out.println("Client created");

client.connectServer(); //вызываем метод работы с сервером

}

ИП. RMI. Класс клиента МИЭТ, 2017

Проект RMIClient Класс RMIClient Метод connectServer

private void connectServer() { try {

//получить ссылку на реестр удаленного объекта начальной //загрузки на определенном узле (включая локальный узел) Registry reg = LocateRegistry.getRegistry("127.0.0.1", 1099); //создаем экземпляр объекта класса - заглушки

//с удаленного сервера MIETServer

RMI rmi = (RMI) reg.lookup("MIETServer"); System.out.println("Connect to server");

//Создаем объект BigData и заполняем его данными ArrayList temp = new ArrayList();

temp.add(1.0F); temp.add(2.0F); temp.add(3.0F); BigData bd = new BigData();

bd.setdata(temp);

System.out.println("--------------------------------------

");

Result rr = rmi.makeCalculate(bd);

//выполняем метод на удал. объекте

System.out.println(rr.getSupremum()); //печатаем результат - 6

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

}

ИП. RMI. Класс сервера МИЭТ, 2017

Проект RMIServer Класс RMIServerImpl Метод main

package miet;

import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; import java.util.ArrayList; import miet.Result;

public class RMIServerImpl extends UnicastRemoteObject implements RMI {

public RMIServerImpl() throws RemoteException{ super(); }

public static void main(String args[]) { try {

//Создает и экспортирует a Registry экземпляр на локальном узле, который принимает запросы на указанном port.

Registry reg = LocateRegistry.createRegistry(1099); //Привязываем класс RMIServerImpl к имени MIETServer reg.rebind("MIETServer", new RMIServerImpl()); System.out.println("Server started");

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

}

}

ИП. RMI. Класс сервера

МИЭТ, 2017

Проект RMIServer Класс RMIServerImpl Методы getData, makeCalculate

//Определяем метод getData

public String getData(String text) throws RemoteException { text = "Stsrt "+text;

return text;

}

//Определяем метод makeCalculate

public Result makeCalculate(miet.BigData bd) throws RemoteException { ArrayList bdArray = bd.getdata();

float suprm = 0;

Result r = new Result();

for(int i=0; i<bdArray.size(); i++) { suprm += (float) bdArray.get(i);

}

r.setSupremum(suprm); return r;

}

ИП. RMI. Работа примера

МИЭТ, 2017

ИП. RMI vs CORBA

МИЭТ, 2017

Технология RMI позволяет связывать только узлы сети с поддержкой JAVA Для удаленной работы с программами на других языках необходимо использовать технологию CORBA

CORBA. Common Object Request Broker Architecture

CORBA позволяет удаленно взаимодействовать программам написанным на языках:

Ada

С

C++

Cobol

Java

Lisp

Object Pascal

Smalltalk

PL/1

Python

ИП. CORBA. История

МИЭТ, 2017

CORBA

Common Object Request Broker Architecture

Первая реализация — 1991 г. Текущая версия — 3.0.2, 2002 г. Сайт - http://www.corba.org/

Спецификацию CORBA поддерживает организация

OMG (Object Management Group) - сайт - www.omg.org

созданная в 1989, такими организациями как: IBM, Sun, Apple, HP и др.

Соседние файлы в папке Интернет технологии