Hehe ups. Grunden til at jeg skulle lege med RemoteExceptions var, at jeg havde lavet noget rod i en anden fil..
Nu har jeg så rettet det, og nu brokker den sig ikke længere.. Jeg har nu lavet funktionerne:
public static Dealer serverCreate () {
Dealer dealer = null;
try {
dealer = new Dealer();
if (System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager());
if (RMISocketFactory.getSocketFactory() == null) RMISocketFactory.setSocketFactory(new FixedPortRMISocketFactory());
} catch (RemoteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return dealer;
}
public static Registry serverListening (boolean setOn, int port, Dealer dealer) {
Registry registry = null;
try {
if (setOn) {
// denne laver måske et helt nyt pokerspil
registry = LocateRegistry.createRegistry(port);
Naming.rebind("
rmi://localhost:" + port + "/PokerServer", dealer);
} else {
Naming.unbind("
rmi://localhost:" + port + "/PokerServer");
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return registry;
}
public static void serverStop(Registry registry) {
try {
UnicastRemoteObject.unexportObject(registry, true);
} catch (NoSuchObjectException e) {
e.printStackTrace();
}
}
Her er det min dealer der extender remote.
Jeg kan bare ikke rigtigt lukke for forbindelsen når jeg først har startet den.
Jeg har i min GUI (i common) lavet en knap "Host Game" som kalder serverCreate(), og gemmer dealeren (remote) i en variabel.
Den bliver så brugt når serverListening() bliver kaldt, som laver registry og binder objektet. her returneres registry som skal bruges når registry skal lukkes igen.
Når jeg gerne vil afslutte serveren bruger jegserverStro() som bruger UnicastRemoteObject.unexportObject(registry, true)
Men serveren stopper igge.. Hvad er der galt?