- •Рейтинг №1 Java-технологии распределенных компьютерных систем
- •Инструментальные средства java для создания распределенных приложений
- •Первая java-программа
- •Реализация стандартного вывода
- •Интерфейсы
- •Наследование
- •Import имя_пакета.*;
- •Ссылки this и super
- •Исключения
- •Массивы
- •Классы, методы пакета java.Net используемое для создания socket
- •Виртуальная машина java
- •Распределительные компьютерные системы и их характеристики
- •Промежуточное программное обеспечение распределительных компьютерных систем
- •Архитектура java rmi
- •Порядок создания распределенного rmi-приложения
- •Достоинства и недостатки java-rmi
- •Технология corba
- •Этапы создания corba приложений
- •Определение интерфейса
- •Создание файлов client и server corba-приложений
- •Код локального интерфейса
- •Html. Основные теги html. Html-документы
- •Основные теги html
- •Форма html-документа
- •Основной поток cgi-программ
- •Сервлет. Технология java
- •Компоненты ejb
- •Реляционные структуры баз данных
- •Основные команды ddl
- •Основные команды dml
- •Основные команды dcl
- •Создание бд и таблиц с использованием sql
- •Основные этапы создания бд и таблиц
- •Использование idbc api
- •Пример java-приложения работающего с субд
- •Страницы jsp
- •Теги и встроенные объекты jsp
- •Основные теги jsp-страниц.
- •Xml. Структура xml-документа
- •Пространство имен
- •Схемы xml
- •Архитектуры распределенных приложений. Web-сервисы
- •Простая web-служба
- •Код клиента web-службы
- •Архитектура web-служб
- •Jms. Архитектура jms
- •Модели сообщений jms
- •Архитектура “точка-точка”
- •Пример распределенного jms-приложения
Промежуточное программное обеспечение распределительных компьютерных систем
Промежуточное программное обеспечение распределительных компьютерных систем (midleware) программное обеспечение осуществляющее взаимодействие и сетевыми ОС.
В основе middleware лежит концепция RPC (вызовы удаленных процедур). Основная идея RPC обеспечить программистом приложений возможность вызова процедуры развернутой и выполняющейся на удаленном хосте. Таким образом как если бы вызывалась локальная процедура. При этом система RPC должна решать ряд задач:
Трансформировать сложные типы данных приложений (вызовы и результаты удаленных процедур) в транспортное представление (поток байт или дейтаграммы транспортных протоколов). Этот процесс называется маршальным. Выполнить обратное преобразование – демаршальный.
Как правило, клиент вызывающий процедуру и сервер ее выполняющий работают параллельно, потому система RPC должна обеспечить ее синхронизацию.
Центральным архитектурным элементом является stub. В системе RPC они выполняют синхронизацию маршальник-демаршальник и сетевые коммуникации. RPC включает в себя службу называемую реестром RPC (registry). С помощью нее серверы находят себя в сети. Интерфейс активации RPC предназначен для вызова и загрузки байт-кода сервера и программы. Во всех системах RPC используется некоторая разновидность языка интерфейса IDL. Он используется для определения удаленной процедуры. При этом состав RPC входит компилятор IDL, используемый для автоматической организации stub.
JAVA RMI
RMI – удаленный вызов методов, одна из тонкостей создания распределенных приложений на языке java. Определение удаленной службы определяется с помощью интерфейса java, а реализация удаленной службы в отдельном классе.
Архитектура java rmi
В RMI стаб и скелетон генерируются с помощью компилятора RMIС на основе интерфейса распределения удаленной службе. RMI включает в себя службу которая называется реестром RMI (RMI registry). Реестр RMI по умолчанию использует порт 1099. На стороне клиента доступ к реестру RMI осуществляется с помощью класса Naming. Он представляет собой метод lookup() который клиент использует для запроса к реестру. Метод lookup() принимает URL. Он указывает на имя хоста и имя требуемой службы (например: rmi://localhost:1099/имя службы). Метод возвращает клиенту ссылку удаленную на обслуживающий объект. Но на самом деле клиент получает ссылку на старт. Задача стаба и скелетона маршалинг-демаршалинг параметров удаленного вызова и возвращаемых значений. В JAVA маршалинг называется сериализацией. Интерфейс активации предназначен для вызова и загрузки байт-кода серверной программы.
Порядок создания распределенного rmi-приложения
Первым шагом является написание и компилирование Интерфейса RMI. Так интерфейс count определяет простой метод сложения двух чисел.
//count.java
import java.rmi
public interface count extends Remote
{public long add(long a, long b)throws Remote Exception;}
Интерфейс count наследует класс Remote. В JAVA все удаленные интерфейсы должны наследовать класс Remote. Они не содержат ни каких методов, а являются файлом того, что в приложении есть удаленный интерфейс.
Следующим шагом является реализация удаленной службы. Она осуществляется путем создания класса add. Класс countDo:
//countDo.java
import java.rmi;
import java.rmi.server*;
public class CountDo extends Unicast Remote Object implements Count{
public CountDo()throws Remote Exception
{sup object()
public long add(long a, long b)
{super
{return a+b;}}
Класс реализации наследует класс Unicast Remote Object для соединения с системой RMI. Ссылка super() выполняет это соединение и инициализирует удаленный объект. Далее используется компилятор RMI rmic для генерации стаба и скелетона, компилятор запускается с указанного файла класса.
Класс count Server сервер RMI имеет следующий вид:
import java.rmi.*;
import java.net;
public class CountServer{
public CountServer()
{try{CountDo count=newCountDo();
Naming.rebing(“rmi://localhost:1099/CountServer”,count);}
cath(Exception e){System.out.prinln(“Exception:”+e);}}
public static void main (String[]args){
new CountServer();}}
Метод Naming.rebing связывает имя URL с объектом по умолчанию в качестве хоста используется текущий хост. Код клиента RMI-приложение имеет вид:
import java.rmi.*;
import java.net.*;
public class CountClient
{public static void main(String[]args){
try{StringCountURL=
“rmi://localhost:1099/CountServer”;
Count count=(count)Naming.lookup(Count URL);
System.out.println(count.add)(4,5);}
cath(Exception e)
{System.out.println(:Exception;”+e);}}}
Метод lookup возвращает ссылку на удаленный объект. Запуск распределенного RMI-приложения осуществляется с помощью трех консолей. Первый из них запускаем реестр RMI, во второй консоли запускаем сервер, в третьей клиентскую программу. Если все выполнено верно, на экране появиться 9.