Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator03 [2015/11/06 07:36]
Andrei Roșu-Cojocaru
laboratoare:laborator03 [2015/12/01 15:07] (current)
Andrei Roșu-Cojocaru
Line 139: Line 139:
 import ro.pub.cs.aipi.lab03.result.*Information;​ import ro.pub.cs.aipi.lab03.result.*Information;​
  
-public interface ​BookManagerInterface ​extends Remote {+public interface ​*ManagerInterface ​extends Remote {
   public List<​*Information>​ method1(int param) throws RemoteException;​   public List<​*Information>​ method1(int param) throws RemoteException;​
   public List<​*Information>​ method2(String param) throws RemoteException;​   public List<​*Information>​ method2(String param) throws RemoteException;​
 } }
 </​file>​ </​file>​
 +
 +<note tip>Prin noteția * se înțelege faptul că acest caracter poate fi înlocuit cu orice unitate de gestiune a unui serviciu, respectiv cu orice entitate persistentă.</​note>​
  
 Prin extinderea interfeţei ''​java.rmi.Remote''​ se specifică faptul că metodele declarate de interfaţa ''​Reservation''​ vor putea fi apelate din altă maşină virtuală Java. Orice obiect care implementează interfaţa ''​Reservation''​ va putea fi considerat un obiect "la distanţă"​. Prin extinderea interfeţei ''​java.rmi.Remote''​ se specifică faptul că metodele declarate de interfaţa ''​Reservation''​ vor putea fi apelate din altă maşină virtuală Java. Orice obiect care implementează interfaţa ''​Reservation''​ va putea fi considerat un obiect "la distanţă"​.
Line 230: Line 232:
     if (System.getSecurityManager() == null) {     if (System.getSecurityManager() == null) {
       System.setSecurityManager(new SecurityManager());​       System.setSecurityManager(new SecurityManager());​
-  ​}+    ​}
  
-  ​try { +    ​try { 
-    Registry registry = LocateRegistry.getRegistry();​ +      Registry registry = LocateRegistry.getRegistry();​ 
-     +      String *ManagerServiceName = Constants.*_MANAGER_SERVICE_NAME;​ 
-    ​String *ManagerServiceName = Constants.*_MANAGER_SERVICE_NAME;​ +      *ManagerInterface *ManagerService = new *Manager();​ 
-    *ManagerInterface *ManagerService = new *Manager();​ +      *ManagerInterface *ManagerProxy = (*ManagerInterface)UnicastRemoteObject.exportObject(*ManagerService,​ 0); 
-    *ManagerInterface *ManagerProxy = (*ManagerInterface)UnicastRemoteObject.exportObject(*ManagerService,​ 0); +      registry.rebind(*ManagerServiceName,​ *ManagerProxy);​ 
-    registry.rebind(*ManagerServiceName,​ *ManagerProxy);​ +      System.out.format("​[%s] successfully bounded%n",​ Constants.*_MANAGER_SERVICE_NAME);​ 
-    System.out.format("​[%s] successfully bounded%n",​ Constants.*_MANAGER_SERVICE_NAME);​ +    } catch (Exception exception) {
-  } catch (Exception exception) {+
     System.out.println("​An exception has occurred: " + exception.getMessage());​     System.out.println("​An exception has occurred: " + exception.getMessage());​
     if (Constants.DEBUG) {     if (Constants.DEBUG) {
Line 295: Line 296:
  
 Lansarea în execuţie a serverului se face prin comanda: Lansarea în execuţie a serverului se face prin comanda:
-  * Linux <​code ​bash>+  * Linux <​code>​
 student@aipi2015:​~$ java -classpath .:​libs/​bookstore-common.jar:​libs/​bookstore-*manager.jar:​... -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-*manager.jar ..." -Djava.rmi.server.hostname=localhost -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.BookStore student@aipi2015:​~$ java -classpath .:​libs/​bookstore-common.jar:​libs/​bookstore-*manager.jar:​... -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-*manager.jar ..." -Djava.rmi.server.hostname=localhost -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.BookStore
 </​code>​ </​code>​
 +  * Windows <​code>​
 C:​\Users\Aipi2015>​ java -classpath .;​libs/​bookstore-common.jar;​libs/​bookstore-*manager.jar;​... -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-*manager.jar ..." -Djava.rmi.server.hostname=localhost -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.BookStore C:​\Users\Aipi2015>​ java -classpath .;​libs/​bookstore-common.jar;​libs/​bookstore-*manager.jar;​... -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Server/​libs/​bookstore-*manager.jar ..." -Djava.rmi.server.hostname=localhost -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.BookStore
 </​code>​ </​code>​
 +
 +<note tip>Prin notația ... se înțelege faptul că în continuare pot urma și alte elemente de același tip.</​note>​
  
 Proprietatea ''​java.rmi.server.codebase''​ specifică locaţia de unde pot fi încărcate definiţii pentru clasele provenind de la server. Dacă în locul unei arhive se specifică o ierarhie de directoare, aceasta trebuie încheiată prin caracterul ''​’/​’''​. În situația în care sunt incluse mai multe fișiere, acestea trebuie să fie delimitate prin separatorul spațiu. Pentru fiecare resursă trebuie indicat și protocoul prin care aceasta este accesată (''​file:​%%///​%%''​ sau ''​http:​%%//​%%''​). Proprietatea ''​java.rmi.server.codebase''​ specifică locaţia de unde pot fi încărcate definiţii pentru clasele provenind de la server. Dacă în locul unei arhive se specifică o ierarhie de directoare, aceasta trebuie încheiată prin caracterul ''​’/​’''​. În situația în care sunt incluse mai multe fișiere, acestea trebuie să fie delimitate prin separatorul spațiu. Pentru fiecare resursă trebuie indicat și protocoul prin care aceasta este accesată (''​file:​%%///​%%''​ sau ''​http:​%%//​%%''​).
Line 387: Line 391:
 student@aipi2015:​~$ java -classpath .:​libs/​bookstore-common.jar:​libs/​bookstore-*manager.jar -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-*manager.jar"​ -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.*ManagerClient student@aipi2015:​~$ java -classpath .:​libs/​bookstore-common.jar:​libs/​bookstore-*manager.jar -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-*manager.jar"​ -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.*ManagerClient
 </​code>​ </​code>​
- * Windows <​code>​+  ​* Windows <​code>​
 C:​\Users\Aipi2015>​ java -classpath .;​libs/​bookstore-common.jar;​libs/​bookstore-*manager.jar -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-*manager.jar"​ -Djava.rmi.server.hostname=localhost -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.*ManagerClient C:​\Users\Aipi2015>​ java -classpath .;​libs/​bookstore-common.jar;​libs/​bookstore-*manager.jar -Djava.rmi.server.codebase="​file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-common.jar file:///<​absolute_path>/​03-BookStore-RMI-Client-*Manager/​libs/​bookstore-*manager.jar"​ -Djava.rmi.server.hostname=localhost -Djava.security.policy=configuration/​policy ro.pub.cs.aipi.lab03.main.*ManagerClient
 </​code>​ </​code>​
Line 511: Line 515:
 student@aipi2015:​~$ ./​startRmiRegistry.sh student@aipi2015:​~$ ./​startRmiRegistry.sh
 </​code>​ </​code>​
 +
 +<note tip>În situația în care scriptul nu are drepturi de execuție, acestea vor fi acordate <​code>​
 +student@aipi2015:​~$ chmod +x startRmiRegistry.sh
 +</​code></​note>​
 +
   * Windows <​code>​   * Windows <​code>​
 C:​\Users\Aipi2015>​ startRmiRegistry.bat C:​\Users\Aipi2015>​ startRmiRegistry.bat
Line 519: Line 528:
 Precizarea căii către directorul ''​bin''​ al SDK-ului Java în variabila de mediu ''​PATH''​ se realizează astfel: ​ Precizarea căii către directorul ''​bin''​ al SDK-ului Java în variabila de mediu ''​PATH''​ se realizează astfel: ​
   * Linux <​code>​   * Linux <​code>​
-export PATH=$PATH:/​usr/​local/​java/​jdk1.8.0_60+export PATH=$PATH:/​usr/​local/​java/​jdk1.8.0_60/bin
 </​code> ​ </​code> ​
   * Windows: //Computer Properties//​ → //Control Panel Home/​Advanced System Properties//​ → //System Properties/​Advanced/​Environment Variables// → //System Variables / Path / Edit// <code bash>   * Windows: //Computer Properties//​ → //Control Panel Home/​Advanced System Properties//​ → //System Properties/​Advanced/​Environment Variables// → //System Variables / Path / Edit// <code bash>
Line 616: Line 625:
 [[http://​docs.oracle.com/​javase/​tutorial/​rmi/​index.html|The Java Tutorials - Trail: RMI]]\\ ​ [[http://​docs.oracle.com/​javase/​tutorial/​rmi/​index.html|The Java Tutorials - Trail: RMI]]\\ ​
 [[http://​www.oracle.com/​technetwork/​java/​javase/​tech/​index-jsp-136424.html|Remote Method Invocation Home]]\\ ​ [[http://​www.oracle.com/​technetwork/​java/​javase/​tech/​index-jsp-136424.html|Remote Method Invocation Home]]\\ ​
-[[http://​www.genady.net/​rmi/​v20/​downloads.html|RMI Plug-in for Eclipse v2.0]]+[[http://​www.genady.net/​rmi/​v20/​downloads.html|RMI Plug-in for Eclipse v2.0]]\\  
 +[[http://​docs.oracle.com/​javase/​7/​docs/​technotes/​guides/​rmi/​codebase.html|Dynamic Code Downloading using Java RMI]]
  
 ===== Soluții ===== ===== Soluții =====
  
-TODO+[[https://​github.com/​aipi2015/​Laborator03/​tree/​master/​solutions/​eclipse|Proiect Eclipse]]\\ 
 +[[https://​github.com/​aipi2015/​Laborator03/​tree/​master/​solutions/​netbeans|Proiect NetBeans]]
laboratoare/laborator03.1446788176.txt.gz · Last modified: 2015/11/06 07:36 by Andrei Roșu-Cojocaru
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0