Ciao a tutti!! Ho un problema con RMI, ho realizzato un server che offre l'invocazione remota di due metodi tramite questa intefaccia e la sua implementazione:
codice:import java.net.InetAddress; import java.rmi.*; import java.util.Vector; public interface ServiziBoot extends Remote { public Vector<InetAddress> richiediLista(); public void segnalaAffidabile(InetAddress ipAff); }main server:codice:import java.net.InetAddress; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; import java.util.Vector; public class RMIServiziBoot extends UnicastRemoteObject implements ServiziBoot { public RMIServiziBoot() throws RemoteException {} public Vector<InetAddress> richiediLista() { return BootstrapServer.getLista(); } public void segnalaAffidabile(InetAddress ipAff) { BootstrapServer.addInd(ipAff); } }
e un client per testarlo con il seguente codice:codice:.... public static void main(String[] args) { lista = new Vector<InetAddress>(); try { addInd(InetAddress.getByName("144.166.1.1")); addInd(InetAddress.getByName("144.166.2.44")); } catch (UnknownHostException ex) {} ObjectInputStream is = null; lista = new Vector<InetAddress>(); try { is = new ObjectInputStream(new FileInputStream("lista.txt")); lista = (Vector<InetAddress>) is.readObject(); is.close(); } catch (IOException ex) {} catch (ClassNotFoundException ex) {} try { ServiziBoot server = new RMIServiziBoot(); Naming.rebind("//localhost/RMIServiziBoot",server); } catch(RemoteException ex) { } catch(MalformedURLException e) { } ....
Il server viene eseguito e termina, mentre il client genera i seguenti errori:codice:import java.net.InetAddress; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.util.Vector; /** * * @author FedericaB */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { Vector<InetAddress> lista = null; try { ServiziBoot listaServer = (ServiziBoot) Naming.lookup ("rmi://localhost/RMIServiziBoot"); lista = listaServer.richiediLista(); } catch(NotBoundException e) { e.printStackTrace( ); } catch(RemoteException e) { e.printStackTrace( ); } catch(MalformedURLException e) { e.printStackTrace( ); } System.out.println("Lista " + lista.get(0).getHostAddress()); } }
Sapreste dirmi dov'è il problema?codice:java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: java.net.ConnectException: Connection refused: connect at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at testrmiboot.Main.main(Main.java:27) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:519) at java.net.Socket.connect(Socket.java:469) at java.net.Socket.<init>(Socket.java:366) at java.net.Socket.<init>(Socket.java:180) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595) ... 6 more Exception in thread "main" java.lang.NullPointerException at testrmiboot.Main.main(Main.java:40) Java Result: 1 BUILD SUCCESSFUL (total time: 3 seconds)
Grazie

Rispondi quotando