Рубрики
Без рубрики

Пример Java RMI Hello World

– Пример Java RMI Hello World

RMI расшифровывается как Удаленный вызов метода и это объектно-ориентированный эквивалент RPC (Удаленные вызовы процедур). RMI был разработан для того, чтобы взаимодействие между приложениями, использующими объектно-ориентированную модель и работающими на разных машинах, выглядело как взаимодействие автономных программ.

Приведенный ниже код даст вам основу для Java RMI с очень простым примером модели взаимодействия Сервер-клиент.

1. Удаленный Интерфейс

Первое, что мы должны спроектировать, это Удаленный Интерфейс, который будет реализован как Сервером, так и Клиентом. Интерфейс всегда должен быть общедоступным и расширяться Удаленный . Все методы, описанные в Удаленный интерфейс должен содержать список Исключение RemoteException в их предложении throws.

Наш интерфейс RMI имеет только один метод; он получает строковый параметр и возвращает строку.

package com.mkyong.rmiinterface;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface RMIInterface extends Remote {

    public String helloTo(String name) throws RemoteException;

}

2. Сервер

Наш сервер расширяет одноадресный объект и реализует Интерфейс мы делали раньше. В основном методе мы привязываем сервер на локальном хосте с именем “myserver”.

package com.mkyong.rmiserver;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import com.mkyong.rmiinterface.RMIInterface;

public class ServerOperation extends UnicastRemoteObject implements RMIInterface{

    private static final long serialVersionUID = 1L;

    protected ServerOperation() throws RemoteException {

        super();

    }

    @Override
    public String helloTo(String name) throws RemoteException{

        System.err.println(name + " is trying to contact!");
        return "Server says hello to " + name;

    }

    public static void main(String[] args){

        try {

            Naming.rebind("//localhost/MyServer", new ServerOperation());            
            System.err.println("Server ready");

        } catch (Exception e) {

            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();

        }

    }

}

3. клиент

Наконец, мы создаем Клиента. Чтобы “найти” Сервер, Клиент использует Интерфейс RMI Объект, который “ищет” ссылку на удаленный объект, связанный с именем, которое мы передаем в качестве параметра. С помощью этого Интерфейса RMI объекта мы теперь можем общаться с Сервером и получать ответы.

package com.mkyong.rmiclient;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import javax.swing.JOptionPane;

import com.mkyong.rmiinterface.RMIInterface;

public class ClientOperation {

	private static RMIInterface look_up;

	public static void main(String[] args) 
		throws MalformedURLException, RemoteException, NotBoundException {
		
		look_up = (RMIInterface) Naming.lookup("//localhost/MyServer");
		String txt = JOptionPane.showInputDialog("What is your name?");
			
		String response = look_up.helloTo(txt);
		JOptionPane.showMessageDialog(null, response);

	}

}

4. Как его запустить

4.1 Создайте три файла java с помощью вашей любимой IDE или загрузите приведенный ниже код. Перейдите в исходную папку, как показано ниже.

4.2 Первое, что нам нужно сделать, это собрать наши исходные тексты. Запустите скомпилируйте все.bat если вы загрузили приведенный ниже код или открыли командное окно в своем каталоге и запустили:

javac src/com/mkyong/rmiinterface/RMIInterface.java src/com/mkyong/rmiserver/ServerOperation.java src/com/mkyong/rmiclient/ClientOperation.java

4.3 Подтвердите, что ваши источники были скомпилированы, обратившись к их соответствующим каталогам:

4.4 Далее нам нужно запустить регистрацию rmiregistry. Снова либо запустите startServer.bat , либо откройте командное окно и запустите:

cd src
start rmiregistry
java com.mkyong.rmiserver.ServerOperation

4.5 Если RmiRegistry успешно запущена, появится другое окно, которое выглядит следующим образом:

4.6 Теперь мы готовы запустить нашего Клиента:

Откройте новое окно командной строки (или запустите runClient.bat из загруженных файлов) и выполните следующее:

cd src
java com.mkyong.rmiclient.ClientOperation

Клиентская операция запускается и запрашивает у нас ввод:

Мы вводим имя в поле ввода (например, “Марилена”) и нажимаем “ОК”.

4.7 На стороне сервера мы можем видеть это:

4.8 И на стороне клиента это:

4.9 Клиент закрывается после завершения обмена, в то время как сервер остается включенным, и мы можем снова общаться, если снова запустим файл клиента. Действительно, мы снова запускаем клиента и:

Сервер:

Клиент:

Скачать Исходный Код

Рекомендации

  1. RMI – Университет Индианы
  2. Дистанционный – Java API
  3. Одноадресный объект – Java API

Оригинал: “https://mkyong.com/java/java-rmi-hello-world-example/”