08 noiembrie 2011

Java RMI

How to make it work:

1) adaugarea in variabila de mediu PATH a caii sdk-ului pt java, daca nu exista deja:
C:\ProgramFiles\Java\jdk1.7.0\bin

2) pornire RMI cu:
start rmiregistry 1099
1099 reprezinta portul.

3) crearea fisierelor de policy (cu permisiuni de accesare) atat pt client cat si pt server:

grant codebase "file:///C:\\Users\\anna\\Desktop\\lab5\\Eclipse\\ProgramareClient\\-" {
permission java.security.AllPermission;
};

grant codebase "file:///C:\\Users\\anna\\Desktop\\lab5\\Eclipse\\ProgramareServer\\-" {
permission java.security.AllPermission;
};

unde calea trebuie sa duca la intreg folderul clientului/serverului, pentru a se putea accesa orice resursa de acolo. Fisierul numit "policy" se afla si el tot in acest folder.
Atentie la backslash - trebuie dublat.

4) In Eclipse - in Run configurations - Arguments, atat pt server cat si pt client se adauga (daca exista o astfel de arhiva jar):

server:
-classpath .;programare.jar -Djava.rmi.server.codebase=file:///C:\Users\anna\Desktop\lab5\Eclipse\ProgramareServer\programare.jar -Djava.rmi.server.hostname=localhost -Djava.security.policy=policy
Proprietatea java.rmi.server.codebase specificã locatia de unde pot fi descãrcate definitii pentru clasele provenind de la server.
Proprietatea java.rmi.hostname specificã numele masinii sau adresa care urmeazã a fi completatã în obiectele de tip ciot care vor fi exportate.

client: asemanator, dar fara hostname

-classpath .;programare.jar -Djava.rmi.server.codebase=file:///C:\Users\anna\Desktop\lab5\Eclipse\ProgramareClient\programare.jar -Djava.security.policy=policy

Aici, "programare.jar" contine definitia obiectelor transmise intre client si server (= obiecte serializabile).

------

Cu aceste configuratii realizate, puteti testa un mic program de gestiune a unui orar, in care clientul (student) poate sa rezerve un interval de timp in intervalele specificate in "orar.txt" , de exemplu spre a-i prezenta ceva profesorului. Serverul raspunde cu "da"/"nu" si in functie de asta face rezervarea in fisierul "rezervari.txt". Ulterior, folosind acelasi id cu care a trimis cerere pentru un interval de timp, clientul poate sa renunte la rezervare.

Niciun comentariu: