Подробно про RMI в Java

Удаленный вызов метода — это способ, которым программист использует язык программирования Java и его среду разработки удаленно.

Что такое RMI в Java?

RMI (Remote Method Invocation) — это API, который предоставляет механизм для создания распределенного приложения на Java. RMI позволяет объекту вызывать методы объекта, запущенного в другой JVM. Удаленный вызов метода обеспечивает удаленную связь между приложениями с использованием двух объектов.

Объект-заглушка на клиентском компьютере создает информационный блок и отправляет эту информацию на сервер. Блок состоит из:

  • Идентификатор удаленного объекта, который будет использоваться;
  • Имя метода, который должен быть вызван;
  • Параметры для удаленной JVM.

rmi в Java

Скелетный объект передает запрос от объекта-заглушки к удаленному объекту. Он выполняет следующие задачи:

  • Вызывает нужный метод для реального объекта, присутствующего на сервере.
  • Он передает параметры, полученные от объекта-заглушки, в метод.

Теперь рассмотрим шаги для создания приложения RMI.

Шаг 1: Определение удаленного интерфейса

Первое, что нам нужно сделать, это создать интерфейс. Это предоставит описание методов, которые могут быть вызваны удаленными клиентами. Этот интерфейс должен расширять интерфейс Remote, а прототип метода в интерфейсе должен выдавать исключение RemoteException.

// Creating a Search interface
import java.rmi.*;
public interface Search extends Remote{
// Declaring the method prototype
public String Query(String search) throws RemoteException;
}

Шаг 2: Реализация удаленного интерфейса

Следующим шагом является реализация удаленного интерфейса. Для реализации удаленного интерфейса класс должен быть расширен до класса UnicastRemoteObject пакета java.rmi. Кроме того, конструктор по умолчанию должен быть создан для выброса java.rmi.RemoteException от его родительского конструктора.

// Java program to implement the Search interface
import java.rmi.*;
import java.rmi.server.*;
public class SearchQuery extends UnicastRemoteObject implements Search{
// Default constructor to throw RemoteExceptionnbsp;from its parent constructor
SearchQuery() throws RemoteException{
super();
}// Implementation of the query interface
public String query(String search) throws RemoteException{
String result;
if (search.equals("Reflection in Java"))
result = "true";
else
result = "false";
return result;
}
}

Шаг 3: Создание объектов Stub и Skeleton из класса реализации с использованием rmic

Инструмент RMIC используется для вызова компилятора RMI, который создает объекты Stub и Skeleton. Его прототип — имя класса RMIC.

ШАГ 4: Запустите RMIregistry

Чтобы запустить службу реестра, введите в командной строке команду запуска RMIregistry.

ШАГ 5. Создание и выполнение прикладной программы сервера

Следующим шагом является создание прикладной программы сервера и ее выполнение в отдельной командной строке.

  • Программа сервера использует метод createRegistry класса LocateRegistry для создания rmiregistry в JVM сервера с номером порта, передаваемым в качестве аргумента.
  • Метод rebind класса Naming используется для привязки удаленного объекта к новому имени.
//program for server application
import java.rmi.*;
import java.rmi.registry.*;
public class SearchServer{
public static void main(String args[]){
try{
// Create an object of the interface implementation class
Search obj = new SearchQuery();

// rmiregistry within the server JVM with
// port number 1900
LocateRegistry.createRegistry(1900);
lt;p style="text-align: justify;"gt;// Binds the remote object by the name
//edureka
Naming.rebind("rmi://localhost:1900"+
"/edureka",obj);
}
catch(Exception ae){
System.out.println(ae);
}
}
}

Шаг 6. Создание и выполнение программы клиентского приложения

Последний шаг — создание программы клиентского приложения и ее выполнение в отдельной командной строке. Метод lookup класса Naming используется для получения ссылки на объект Stub

Вышеуказанная клиентская и серверная программа выполняется на одной машине, поэтому используется localhost. Чтобы получить доступ к удаленному объекту с другого компьютера, локальный хост должен быть заменен IP-адресом, на котором находится удаленный объект.

Оцените статью