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

2.1.3 Рівень віддаленого посилання

Рівень віддаленого посилання визначає і підтримує семантику викликів з'єднання RMI. Цей рівень надає об'єкт RemoteRef, що забезпечує з'єднання з об'єктами, які реалізують віддалені служби. Об'єкти заглушки використовують метод invoke() в об'єкті RemoteRef для направлення виклику методу. Об'єкт RemoteRef розуміє семантику виклику віддалених служб.

Перш ніж клієнт зможе використати віддалену службу, екземпляр об'єкта, що реалізує її, повинен бути створений на сервері й експортований у систему RMI - зареєстрований у реєстрі RMI.

2.1.4 Транспортний рівень

Транспортний рівень здійснює з'єднання між різними JVM. Всі з'єднання являють собою засновані на потоках мережні з'єднання, які використовують TCP/IP або UDP. Протокол TCP/IP забезпечує постійне з'єднання між двома машинами. Це з'єднання використовує адресу IP і номер порту. При цьому, замість IP-адреси можна використовувати ім'я DNS. Навіть якщо дві JVM працюють на одному фізичному комп'ютері, вони з'єднуються через стек мережних протоколів TCP/IP, наприклад 127.0.0.1 або localhost. На вершині TCP/IP RMI використовує протокол рівня з'єднання, Java Remote Method Protocol (JRMP), що має захист у процесі комутації даних.

Хоча транспортний рівень, як правило, використовує TCP/IP з'єднання, деякі мережні конфігурації дозволяють тільки одне TCP/ IP-з'єднання між клієнтом і сервером. У цьому випадку, транспортний рівень розподіляє кілька віртуальних з'єднань усередині одного TCP/IP-з'єднання.

Протокол UDP більш простий у реалізації, але він майже не захищений від помилок у процесі передачі.

2.1.5 Віддалені об'єкти

Клієнти знаходять віддалені служби, використовуючи службу імен або каталогів. Служба імен або каталогів виконується на визначеному хості й має визначений номер порту. RMI може використовувати різні служби каталогів, включаючи Java Naming and Directory Interface (JNDI). Крім того, RMI містить у собі просту службу, що називається реєстром RMI - rmiregistry (поставляється з JDK). Реєстр RMI працює на кожній машині, що містить об'єкти віддалених служб і приймає запити на їхнє обслуговування. За замовчуванням rmiregistry використовує порт 1099.

На хості програма сервера створює віддалену службу, попередньо створюючи локальний об'єкт, що реалізує цю службу. Потім вона експортує цей об'єкт в RMI. Як тільки об'єкт експортований, RMI створює службу прослуховування, що очікує з'єднання із клієнтом і запиту служби.

Після експорту сервер реєструє об'єкт у реєстрі RMI, використовуючи загальнодоступне ім'я. На стороні клієнта доступ до реєстру RMI забезпечується статичним класом Naming. Він надає метод lookup(), що використовується клієнтом для запитів до реєстру. Метод lookup() приймає URL, з ім'ям хосту й ім'ям необхідної служби. Метод повертає віддалене посилання на обслуговуючий об'єкт. URL має такий вигляд:

rmi://<host_name> [:<name_service_port>]/<service_name>

де host_name - ім'я, розпізнаване в локальній мережі (LAN), або DNS-ім'я в мережі Internet. Необхідно тільки вказати name_service_port, якщо служба імен виконується з використанням порту, відмінного від 1099.

Соседние файлы в папке [КОМП СИСТЕМЫ]