Professional Documents
Culture Documents
DKS 4 Dalecinsko Povikuvanje Na Proceduri - Java RMI 2022-23
DKS 4 Dalecinsko Povikuvanje Na Proceduri - Java RMI 2022-23
java.rmi.*
RMI Концепт
❑ Оддалечени класи и интерфејси (СЕРВЕР)
- Класата на серверот е составена од два дела:
❑Интерфејс (т.н. Оддалечен интерфејс)
❑ Мора да е public
❑ Mора да го имплементира интерфејсот java.rmi.Remote
❑ Секој деклариран метод во интерфејсот мора да го фрла исклучокот
java.rmi.RemoteException . Овие методи може да се повикуваат од
клиентите
❑ Самата класа на серверот
❑ Мора да имплементира оддалечен интерфејс
❑ Mора да ја наследува класата java.rmi.server.UnicastRemoteObject
❑ Може да има методи кои не се дел од интерфејсот. Овие методи се
локални и не се достапни на клиентите
RMI Концепт
❑ Оддалечени класи и интерфејси (КЛИЕНТ)
-Класата на клиентот треба да има :
-инстанцирано објект од оддалечениот интерфејс кој се користи
за повикување и изврпување на неговите методи
-Објект од класата Registry кој се користи за повикување и
поврзување со оддалечениот RMI сервер
-Да лови RemoteException (може да лови и други исклучоци)
import java.rmi.*;
public interface PORAKA extends Remote{
void PorakaKonServer(String x) throws RemoteException;
}
5
RMI Пример
1. ОДДАЛЕЧЕН СЕРВЕР (1)
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;
public class RmiServer extends java.rmi.server.UnicastRemoteObject implements PORAKA {
static int porta;
static String adresa, primenaporaka;
static Registry R; // rmi registar za povrzuvanje I rabota so metodite od interfejsot
//mora da postoi makar prazen konstruktor koj ke go frla isklucokot remoteException
public RmiServer() throws RemoteException { }
//predefiniranje na metodot od interfejsot
public void PorakaKonServer(String x) throws RemoteException {
primenaporaka=x;
System.out.println(primenaporaka);
} 6
…..
RMI Пример
1. ОДДАЛЕЧЕН СЕРВЕР (2)
…
public static void main(String args[]) {
try{
adresa= (InetAddress.getLocalHost()).toString();
}catch(Exception e){
System.out.println("Ne moze da dobijam adresa.");
System.exit(1);
}
porta=3232;
System.out.println("Adresa na serverot="+adresa+",porta="+porta);
try{
//sozdavanjeto na registerot za rabota so oddalecenite metodi
R= LocateRegistry.createRegistry( porta);
R.rebind("rmiServer", new RmiServer());
} catch(RemoteException e){
e.printStackTrace();
System.exit(1);
}
} 7
}
1. КЛИЕНТ
import java.rmi.*;
RMI Пример
import java.rmi.registry.*;
import java.net.*;
public class RmiKlient {
static public void main(String args[]) {
PORAKA oddalecenServer; //objekt od oddaleceniot interfejs
Registry R;
String adresa_na_Serverot=args[0]; //prv atribut pri povik od CMD
String porta_na_serverot=args[1]; //vtor atribut pri povik na serverot
String tekst=args[2]; //tekst vnesen od klientot
System.out.println("Prakam: "+tekst+" NA "+adresa_na_Serverot+":”+porta_na_serverot);
int porta=Integer.parseInt(porta_na_serverot);
try{
// definiranje registar kon serverot so dadena adresa I porta
R=LocateRegistry.getRegistry(adresa_na_Serverot, porta);
// pronajdi go I povrzi se so serverot koj e instanca od interfejsot PORAKA
oddalecenServer= (PORAKA)(R.lookup("rmiServer"));
// povikuvanje na oddalecen metod
oddalecenServer. PorakaKonServer(tekst);
}
catch(Exception e){ e.printStackTrace();}
} 8
}
Компајлирање
1. Се компајлираат сите java фајлови
javac *.java
9
Активирање
1. Отворете CMD и повикајте го серверот