Pagina 1 di 1

[Java] RMI ConnectException

Inviato: lunedì 18 maggio 2015, 17:55
da pincia
Salve a tutti,

Alle prime armi con le RMI sto provando a creare una piccola applicazione client/server per lo studio.
Riscontro quest'errore a tempo di esecuzione nel momento in cui vado a registrare lo stub con la rebind.

Codice: Seleziona tutto

java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
	java.net.ConnectException: Connection refused
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
	at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
	at CongressoServer.main(CongressoServer.java:59)
Caused by: java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at java.net.Socket.connect(Socket.java:538)
	at java.net.Socket.<init>(Socket.java:434)
	at java.net.Socket.<init>(Socket.java:211)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
	... 5 more
La porzione di codice del server è questa:

Codice: Seleziona tutto

public static void main(String[] args){
	
		try {
			CongressoServer congresso = new CongressoServer();
			Congresso stub = (Congresso) UnicastRemoteObject.exportObject(congresso, 0);
	
		
			Registry r= LocateRegistry.getRegistry();
		
			/* Pubblicazione dello stub nel registry */
			r.rebind("CongressoServer", stub);
		
			System.out.println("Server ready");
		
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
sapete indicarmi una soluzione?

Grazie.

Re: [Java] RMI ConnectException

Inviato: giovedì 21 maggio 2015, 22:03
da cortinico
Ciao,

Potrebbe essere molto probabilmente un problema con il recupero del registro,
Ti consiglio di fare nel modo seguente:
sostituisci la riga dove hai scritto

Codice: Seleziona tutto

Registry r= LocateRegistry.getRegistry();
Con il codice seguente:

Codice: Seleziona tutto

int port = 56789;
Registry r;
try {
	r = LocateRegistry.createRegistry(port);
} catch (RemoteException e) {
	r = LocateRegistry.getRegistry(port);
}
Ovvio che la porta la puoi prendere anche in input negli argomenti che arrivano al main.
Tieni in considerazione che poi ti dovrai collegare su rmi://localhost:56789/CongressoServer

Se ti può servire ti linko anche questo progetto che ho fatto per un esame in cui veniva chiesto di usare RMI:
https://github.com/cortinico/tdp

In particolare le classi che ti interessano le trovi qui:
https://github.com/cortinico/tdp/tree/m ... p/user/rmi