Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст


НазваТехнологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст
Дата конвертації24.02.2013
Розмір445 b.
ТипПрезентации


Технологія Java Remote Method Invocation (Java RMI)

  • 2007-2008


Зміст

  • Спрощена архітектура RMI. Особливості програмування RMI/JRMP-проектів.

  • Активація RMI-об'єктів. Демон активації rmid.

  • Віддалені інтерфейси та класи реалізації віддалених інтерфейсів. Порівняння RMI/JRMP та RMI/IIOP. “Експортування” об'єктів. Статичний метод ExportObject.

  • RMI/IIOP-проекти. Використання rmic та orbd.



Спрощена архітектура RMI



Платформа J2EE. Механізми та служби

  • Взаємодія з клієнтом:

    • JSP (Java Server Pages).
    • Java сервлети.
    • Web-служби.
  • Бізнес-логіка:

    • Enterprise Java Beans (EJB).
  • (Специфікація EJB є серцевиною платформи J2EE).



Поняття про служби іменування



Використання "служби іменування RMI/JRMP” (RMI- реєстратора) для зв'язувань з віддаленими об'єктами

  • Проблема отримання посилань на віддалені об'єкти (проблема отримання “найпершого” посилання на один із віддалених об'єктів)



Особливості програмування RMI/JRMP-проектів:

  • 1) використання "служби іменування" (" RMI-реєстратора");

  • 2) визначення віддалених інтерфейсів, успадкованих від Remote;

  • 3) розробка класів реалізації для визначених віддалених інтерфейсів;

  • 4) урахування можливості Remote-виключень (RemoteException):

    • при визначенні інтерфейсних функцій та кожного метода з класу реалізації треба передбачити використання конструкції throws;
    • при визначенні конструкторів (у тому числі конструкторів за замовчуванням) також треба передбачити використання конструкції throws.


До угоди про іменування (суфікси) складових частин RMI/JRMP-проектів

  • MyInterface віддалений інтерфейс;

  • MyInterfaceImpl – клас реалізації;

  • MyInterfaceImpl_Stub – клас-проксі (у вигляді байт-коду з розширенням class). Він призначений як для клієнтської частини (так звана заглушка), так і для серверної (так званий скелетон). Цей клас генерується (при наявності файлів MyInterface.class, MyInterfaceImpl.class) утилітою (Java RMI компілятором) rmic: (Для останніх версій JDK генерація стаб-класів шляхом запуску rmic вимагається не завжди – див. проект “02 NoStub”).

  • MyInterfaceServer – клас-сервер;

  • MyInterfaceClient – клас-клієнт.



RMI/JRMP-проекти без файлів з проксі-класами



Java RMI/JRMP. Віддалені інтерфейси та класи реалізації віддалених інтерфейсів



Приклад. Віддалений інтерфейс Sm та клас реалізації SmImpl

  • визначення віддалених інтерфейсів, успадкованих від Remote



Приклад. Java-модулі SmServer та SmClient

  • Віддалений

  • інтерфейс



Послідовність запусків RMI-системи типу клієнт-сервер(хост)

  • rmiregistry [port] (Rmi-реєстр запускається як окремий процес, за замовчуванням використовується порт 1099).

    • Зауважимо, що є можливість створення Rmi-реєстру (як об'єкта) безпосередньо програмою-сервером (проте, звичайно, лише на серверному вузлі).
  • java SmServer

  • java SmClient



Програмне створення RMI-реєстру на серверному вузлі

  • Також можна програмно (після виконання одного з варіантів метода LocateRegistry.getRegistry) отримувати безпосереднє посилання на “конкретний” RMI-реєстр (за зазначеними вузлом та/або портом).



Статичний метод ExportObject та (JRMP - IIOP) портабельність Java RMI-проектів



Використання об'єктних параметрів та/або результатів. Серіалізація. (1/3)



Використання об'єктних параметрів та/або результа-тів. Серіалізація. (2/3)



Використання об'єктних параметрів та/або результатів. Серіалізація. (3/3)

  • Client



Використання посилань (віддалених об'єктів) як параметрів та/або результатів (1/4)



Використання посилань (віддалених об'єктів) як параметрів та/або результатів (2/4)



Використання посилань (віддалених об'єктів) як параметрів та/або результатів (3/4)

  • Server.java



Використання посилань (віддалених об'єктів) як параметрів та/або результатів (4/4)



Активація RMI-об'єктів. Демон активації rmid (1/2)

  • Активація об'єктів здійснюється за запитами клієнтів, проте абсолютно прозоро (!) для клієнтів. Суть проблеми полягає у тому, щоб фактично відкласти створення об'єктів до отримання запитів (це обумовлює специфіку конструкторів та й об'єктів у цілому).

  • Кілька штрихів:

  • java-клас найчастіше успадковується від Activatable (альтернатива – “експортування” об'єктів шляхом застосування статичного метода Activatable.exportObject);

  • створюється дескриптор активації desc (з урахуванням імені, місцезнаходження класу, даних ініціалізації об'єкта): ActivationDesc desc=new ActivationDesc(agi,"TestImpl",location,data);

  • дескриптор активації “реєструється у rmid ” з виробленням заглушки: TestI ti = (TestI)Activatable.register(desc);

  • отримана заглушка фіксується у rmiregistry: Naming.rebind("ActivImpl", ti);

  • демон активації rmid “перехоплює” запити та активізує потрібний об'єкт, використовуючи для цього окрему JVM.



Активація RMI-об'єктів. Демон активації rmid (2/2)

  • Додатково треба враховувати використання менеджерів безпеки. Зауважимо, що JVM містить інстальований менеджер безпеки, та й сам запуск rmid , як правило, спряжений з визначенням файлу політики безпеки: rmid -J-Djava.security.policy=rmid.policy (тут опція -J означає, що відповідний параметр “політики безпеки” передається JVM, яка власне запускає демон rmid).

  • Файлом політики безпеки демону rmid надається дозвіл (ExecPermission) на запуск (чи використання запущеної) JVM. Дозвіл ExecOptionPermission загалом пов'язаний з можливістю використання опцій у запусках з командного рядка. Наведемо ще один приклад:

  • permission com.sun.rmi.rmid.ExecOptionPermission

  • "-Djava.security.policy=c:\\. . .\\policies\\group.policy";



Активація RMI-об'єктів. Послідовність запусків

  • rmiregistry

  • rmid -J-Djava.security.policy=rmid.policy

  • java -Djava.security.policy=forall.policy Setup

  • java Client



Активація RMI-об'єктів. Приклад (1/2)



Активація RMI-об'єктів. Приклад (2/2)



Проекти RMI/JRMP та RMI/IIOP у порівнянні

  • технологія RMI/IIOP використовує “повноцінну” (у відповідності з CORBA-специфікацією) службу іменування orbd. (Можна використовувати й “застарілу”, проте також цілком “повноцінну” службу іменування tnameserv);

  • властивості класів реалізації віддалених інтерфейсів для RMI/IIOP-проектів забезпечуються успадкуванням від PortableRemoteObject, а не від UnicastRemoteObject.



Порівняння RMI/JRMP та RMI/IIOP. Віддалені інтерфейси та класи реалізації віддалених інтерфейсів



RMI/IIOP-проекти. Приклад. Віддалений інтерфейс Sm та клас реалізації SmImpl

  • визначення віддалених інтерфейсів, успадкованих від Remote





Статичний метод ExportObject. На шляху до (JRMPIIOP) портабельності Java RMI-проектів (1/3)



Статичний метод ExportObject. На шляху до (JRMPIIOP) портабельності Java RMI-проектів (2/3)



Статичний метод ExportObject. На шляху до (JRMPIIOP) портабельності Java RMI-проектів (3/3)



RMI/IIOP-проекти. Java-модулі SmServer та SmClient

  • Віддалений інтерфейс





RMI/IIOP-проекти. Використання rmic та orbd. Послідовність запусків

  • rmic -iiop CalcImplPortable

  • orbd -ORBInitialPort 1050 (“постійна” служба іменування, забезпечується “зворотна” сумісність із застарілою “тимчасовою” службою іменування tnameserv)

  • java -Djava.naming.factory.initial = com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url = iiop://localhost:1050 HostIIOP

  • java -Djava.naming.factory.initial = com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url = iiop://localhost:1050 CalcClientIIOP

  • - параметри (змінні), що забезпечують налаштування JNDI

  • на конкретну реалізацію цього API (конкретну службу іменування) – тут orbd.



Додаток



Деякі опції Java RMI компілятора rmic, призначені для RMI/JRMP -проектів

  • -v1.2 (за замовчуванням) – генеруються тільки stub-класи для stub-протоколів JRMP 1.2 (для JVM версії 1.2 та версій, старших за 1.2);

  • -v1.1 – генеруються stub- та skeleton-класи для stub-протоколів JRMP 1.1 (при використанні JVM 1.1);

  • -vcompat – генеруються stub- та skeleton-класи, сумісні з обома версіями stub-протоколів JRMP 1.1 та 1.2. (У версіях JDK до 1.5 ця опція була за замовчуванням).



Клас LocateRegistry. Методи createRegistry, getRegistry



Динамічне копіювання класів

  • Аналогія з аплетами.

  • Копіювання клієнтами (у першу чергу) чи серверами stub-класів:

    • stub-класи можуть бути просто відсутні у клієнта;
    • може змінюватись віддалений інтерфейс, при цьому змінюється і stub-клас.
  • Копіювання клієнтами (так само і серверами!) класів, що є успадкованими від класів, представлених у віддалених методах як типи параметрів чи результатів.



Динамічне копіювання класів. Властивість codebase

  • Значення властивості codebase автоматично “приписується” віддаленому об'єкту при реєстрації останнього (у RMI registry).



Копіювання (завантаження) stub-класів. Приклад з використанням http-сервера ClassFileServer

  • java ClassFileServer 2001 c:\java\06_codebase\download

  • rmiregistry (запуск здій

  • java -Djava.rmi.server.codebase=http://localhost:2001/ SmServer

  • java SmClient



Копіювання (завантаження) stub-класів. Приклад з використанням http-сервера ClassFileServer

  • java ClassFileServer 2001 c:\java\06_codebase\download

  • rmiregistry

  • java -Djava.rmi.server.codebase=http://localhost:2001/ SmServer

  • java SmClient



Приклад зміненого rmid.policy та запуску Setup



Схожі:

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconТехнологія Java Remote Method Invocation (Java rmi) 2007 Зміст
Проблема отримання посилань на віддалені об'єкти (проблема отримання "найпершого" посилання на один із віддалених об'єктів)
Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconJava rmi & corba 2007 Зміст

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconJava rmi & corba 2008 Зміст

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconJava rmi & corba 2008 Зміст

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconJava rmi & corba 2007-2009 Зміст

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconТехнологія Java Server Faces (jsf) 2008-2009 Технологія Java Server Faces. Концепції

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconТехнологія Java Server Faces (jsf) 2008 Технологія Java Server Faces. Огляд

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconJava ee 5 ejb 0 2007 Зміст
Дуже складна специфікація, потреба враховувати велику кількість обмежень. Навіть "майстри" не набагато покращували ситуацію. Особливо...
Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconТехнологія Java Server Faces (jsf) 2009 Технологія Java Server Faces. Концепції

Технологія Java Remote Method Invocation (Java rmi) 2007-2008 Зміст iconHttp://java sun com http://java sun com
...

Додайте кнопку на своєму сайті:
dok.znaimo.com.ua


База даних захищена авторським правом ©dok.znaimo.com.ua 2013
звернутися до адміністрації
dok.znaimo.com.ua
Головна сторінка