
- •Интернет-программирование
- •ИП. Доступ к удаленным объектам
- •ИП. Доступ к удаленным объектам
- •ИП. Доступ к удаленным объектам
- •ИП. RMI. Клиент. Классы-заглушки
- •ИП. RMI. Клиент. Удаленные объекты
- •ИП. RMI. Клиент. Удаленные объекты
- •ИП. RMI. Состав примера
- •ИП. RMI. Соглашения именования
- •ИП. RMI. Класс интерфейсов
- •ИП. RMI. Класс пользовательских объектов
- •ИП. RMI. Класс пользовательских объектов
- •ИП. RMI. Класс клиента
- •ИП. RMI. Класс клиента МИЭТ, 2017
- •ИП. RMI. Класс сервера МИЭТ, 2017
- •ИП. RMI. Класс сервера
- •ИП. RMI. Работа примера
- •ИП. RMI vs CORBA
- •ИП. CORBA. История
- •ИП. CORBA. Идея
- •ИП. CORBA. Архитектура
- •ИП. CORBA. Пример
- •ИП. CORBA. Пример
- •ИП. CORBA. Пример. Файл интефейса IDL
- •ИП. CORBA. Пример. Файл интефейса IDL
- •ИП. CORBA. Пример. Компиляция IDL
- •ИП. CORBA. Пример. Классы имплементации. RCalcImpl
- •ИП. CORBA. Пример. Классы имплементации. ResultImpl
- •ИП. CORBA. Пример. Класc клиента RcalcClient. Страница 1
- •ИП. CORBA. Пример. Класc клиента RcalcClient. Страница 2
- •ИП. CORBA. Пример. Класc сервера RСalcServer. Страница 1
- •ИП. CORBA. Пример. Класc сервера RСalcServer. Страница 2
- •ИП. CORBA. Пример. Запуск
- •ИП. CORBA. Пример. Запуск
- •ИП. CORBA. Пример. Запуск
- •ИП. Другие способы вызова методов удаленных сервисов
ИП. CORBA. Пример. Класc клиента RcalcClient. Страница 2 |
МИЭТ, 2017. |
/*
ArrayList temp = new ArrayList(); temp.add(1.0F); temp.add(2.0F); temp.add(3.0F); BigData bd = new BigData();
Объект BigData напрямую использовать нельзя т.к. тип данных ArrayList не поддерживается в IDL
*/
float[] bd = {1.0F, 2.0F, 3.0F};
Result rr = RCImpl.makeCalculate(bd); System.out.println("--------------------------------------"); System.out.println(rr.getSupremum());
} catch (Exception e) { System.out.println("ERROR : " + e) ; e.printStackTrace(System.out);
}
}
}
ИП. CORBA. Пример. Класc сервера RСalcServer. Страница 1 |
МИЭТ, 2017. |
package RemoteCalculate;
import java.util.Properties; import org.omg.CosNaming.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; import org.omg.PortableServer.POA;
import RemoteCalculate.*;
public class RCalcServer {
public static void main(String args[]) { try {
// запускаем объектный брокер запросов (Object Request Broker). ORB orb = ORB.init(args, null);
/* Получаем ссылку на POA PortableObjectAdapter который обеспечивает связь локальных методов с "сервантом" сервант это код, который обрабатывает запросы клиента к CORBA-объекту сервера */
POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootpoa.the_POAManager().activate();
//создаем сервант и регистрируем его в ORB RCalcImpl RCImpl = new RCalcImpl(); RCImpl.setORB(orb);
//получаем объектную ссылку на сервант
org.omg.CORBA.Object ref = rootpoa.servant_to_reference(RCImpl); RCalc href = RCalcHelper.narrow(ref);
ИП. CORBA. Пример. Класc сервера RСalcServer. Страница 2 |
МИЭТ, 2017. |
// Создаем объект пространства имен ORB
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
//регистрируем в объекте пространства имен имя по которому
//через объектную ссылку будут вызваны методы локального объекта String name = "RCalc";
NameComponent path[] = ncRef.to_name( name ); ncRef.rebind(path, href);
System.out.println("RCalcServer ready and waiting ...");
// ожидаем запросов от клиента orb.run();
} catch (Exception e) { System.err.println("ERROR: " + e); e.printStackTrace(System.out);
}
System.out.println("RCalcServer Exiting ...");
}
}
ИП. CORBA. Пример. Запуск |
МИЭТ, 2017. |
1. Запускаем ORB из командной строки:
Start orbd -ORBInitialPort 900 -ORDBInitialHost 192.168.1.34
2.Запускаем север из среды IDE
3.Запускаем файл клиента из среды IDE

ИП. CORBA. Пример. Запуск |
МИЭТ, 2017. |

ИП. CORBA. Пример. Запуск |
МИЭТ, 2017. |
ИП. Другие способы вызова методов удаленных сервисов |
МИЭТ, 2017. |
А как-же PHP, JavaScript и т. д.?
SOAP
Simple Object Access Protocol
Будет рассмотрено в следующей лекции