У меня есть много сомнений относительно последовательности вызовов во время Удаленный вызов метода. Ниже приведены 4 ошибки, которые я прочитал, чтобы понять, что такое RMA. RMI.понимание последовательностей вызовов во время RMI
1.) ИНТЕРФЕЙС
import java.rmi.*;
public interface AddServerIntf extends Remote {
double add(double d1, double d2) throws RemoteException;
}
2.) ОСУЩЕСТВЛЕНИЕ
import java.rmi.*;
import java.rmi.server.*;
public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf {
public AddServerImpl() throws RemoteException {} // what is it meant for ?
public double add(double d1 , double d2) throws RemoteException {
return d1 + d2;
}
}
3.) AddServer Класс
import java.net.*;
import java.rmi.*;
public class AddServer {
public static void main(String args[]) {
try {
AddServerImpl addServerImpl = new AddServerImpl();
Naming.rebind("AddServer",addServerImpl); // what does it do and how ?
} catch(Exception exc) {
System.out.println("Exception : " + exc);
}
}
}
4.) AddClient Класс
import java.rmi.*;
public class AddClient {
public static void main(String args[]) {
try {
String addServerURL = "rmi://" + args[0] + "/AddServer";
AddServerIntf addServerIntf = (AddServerIntf)Naming.lookup(addServerURL); // how does it look up and how does it return ?
System.out.println("The first number is : " + args[1]);
double d1 = Double.valueOf(args[1]).doubleValue();
System.out.println("The second number is : " + args[2]);
double d2 = Double.valueOf(args[2]).doubleValue();
System.out.println("The sum is : " + addServerIntf.add(d1,d2)); // what does it mean to call the method of an interface ?
} catch(Exception exc) {
System.out.println(exc);
}
}
}
файлов на компьютере-сервере: AddServer.class, AddServerImpl.class, AddServerImpl_Stub.class, AddServerIntf.class
файлов на клиентском компьютере: AddServerIntf.class , AddClient.class, AddServerImpl_Stub.class
После хранения вышеуказанных файлов в соответствующих местах я запускаю rmiregistry на сервере, а затем запустить сервер с помощью java AddServer
, а затем запустить клиент с помощью java 127.0.0.1 20 30
Как только клиент начинает то, что делает заявление (AddServerIntf)Naming.lookup(addServerURL);
в коде AddClient
делать?
Каковы процедуры, выполняемые при запуске программы-клиента? Как он возвращает сумму?
Что делает заявление Naming.rebind("AddServer",addServerImpl);
в классе AddServer
?
Наконец, когда я звоню, чтобы получить сумму, используя addServerIntf.add(d1,d2)
, что это значит (вызов метода интерфейса)? Почему я вызываю метод интерфейса? И что это делает?
Я не могу понять механизм RMI, который называет кого и как?
@voterToClose Я спросил, как работает вышеуказанный код? каковы шаги, которые связаны с возвратом результата w.r.t к вышеуказанному коду? –
Я обновил свой ответ на основе отзывов. – Santosh
Пожалуйста, позвольте мне, если мой обновленный ответ ответит на ваши вопросы! – Santosh