package elte.java2_utikalauz5.rmi; import java.rmi.Naming; import java.rmi.server.UnicastRemoteObject; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; /** Ez a tavolrol elerheto Mutex osztalyok konstruktora. @link.forrásfájl {@docRoot}/../data/rmi/src RMIMutexFactory.java @link.letöltés {@docRoot}/../data/rmi RMIMutex.jar @since Java 2 Útikalauz programozóknak 1.3 */ public class RMIMutexFactory extends UnicastRemoteObject implements RMIMutexFactoryInterface { /** Verziószám. */ private final static long serialVersionUID = 15L; public RMIMutexFactory() throws RemoteException { super(); // Távoli (konstruktor) objektum exportálasa } // Egy új RMI mutex objektum létrehozása public RMIMutexInterface Ujmutex(String nev) throws java.rmi.RemoteException { try { RMIMutex mid = new RMIMutex(); Naming.rebind("RMI_mutex_"+nev,mid); return mid; } catch (Exception e) { System.out.println("RMI mutex bejegyzese sikertelen!"); } return null; // itt csak null-t adunk vissza; jobban is meg lehetne gondolni } // Egy RMI mutex objektumra referencia megszerzese public RMIMutexInterface Refmutex(String nev) throws java.rmi.RemoteException, RMIMutexNemtalalt { try { RMIMutexInterface mid = (RMIMutexInterface)Naming.lookup("RMI_mutex_"+nev); return mid; } catch (java.net.MalformedURLException e) { throw new RMIMutexNemtalalt(" Mutexet nem talalom: "+nev); } catch (java.rmi.NotBoundException e) { throw new RMIMutexNemtalalt(" Mutexet nem talalom: "+nev); } // return null; // itt csak null-t adunk vissza; jobban is meg lehetne gondolni } // A főprogramja példányosít egy mutexgyártót és // bejegyzi a registrybe. public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { RMIMutexFactory mf = new RMIMutexFactory(); Naming.rebind("RMI_mutexek",mf); // bejegyzése System.out.println("RMI mutex factory fut!"); } catch (Exception e) { System.out.println("RMI mutex f. NEM FUT!"+e.getMessage()); } } }