Prima di tutto devo dire che sia Server che Client funzionano perfettamente se eseguiti o sulla stessa macchina o in una LAN, compreso RMI.
Il problema nasce quando sono eseguiti in macchine diverse e devono usare RMI, non vengono lanciate eccezioni ma RMI non va.
Qua il codice:
Server side
Codice PHP:
// Start rmi registry
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
System.out.println("RMI registry ready.");
}
catch (Exception e) { System.out.println("RMI registry fail");
}
//rmi settings
String registryUrl = "CallbackServer"+idString;/*In questo modo e' possibile utilizzare piu' clients sulla stessa macchina*/
try{
RMICBsharedListClientInterface clientRMICB = new RMICBsharedListClientImplem(this);
System.out.println("prev bind");
Naming.bind(registryUrl, clientRMICB);
System.out.println("ok rmi bind");
}
catch(AlreadyBoundException a){System.out.println(a+" - "+a.getMessage()+" - Bind ClientInterface RMI registry");}
catch(MalformedURLException b){System.out.println(b+" - "+b.getMessage()+" - Bind ClientInterface RMI registry");}
catch(RemoteException c){System.out.println(c+" - "+c.getMessage()+" - Bind ClientInterface RMI registry");}
Client side
Codice PHP:
String registryUrl = "rmi:/"+clientSock.getInetAddress()+"/CallbackServer"+id;
server.gui.printerStatusArea(registryUrl+"\n");
RMICBsharedListClientInterface h = (RMICBsharedListClientInterface) Naming.lookup(registryUrl);
RMICBsharedListServerImplem callbackObj = new RMICBsharedListServerImplem(server,clientSock.getInetAddress(), clientSock.getPort());
La porta 1099 (default del registro RMI) è aperta su entrambi i lati.
La comunicazione TCP e UDP avviene senza problemi tra i due pc (nei 2 software tutte le funzioni che usano questi protocolli non hanno problemi)
Soltanto quando cè da usare RMI non succede niente, e non vengono nemmeno lanciate eccezioni.
grazie dell aiuto
Nite