Originariamente inviato da foralobo
Non ho capito la domanda.

Vediamo se riesco ad interpretarla:

Il server mette nel registro il riferimento di se stesso:

codice:
try {
	LocateRegistry.createRegistry(1099);
} catch (ExportException ex) { System.out.println("ERRORE...");		}
	
	String path = "rmi://localhost/ServerImpl";
	Naming.rebind( path, this );
Il client si collega ed ottiene un riferimento al server cosi:
codice:
String remoteName = "rmi://" + ipServer + "/ServerImpl";
server = (IServer) Naming.lookup( remoteName );
dove "ipServer" è l'ip del pc dove gira il server.

Una volta che il client ottiene un riferimento al server, chiama un , metodo sul server perchè il server possa ottenere il riferimento al client. Il metodo in questione è quello citato prima (initalizeChannel) e come parametro di questo metodo viene passato il riferimento stesso al client di modo che il server possa invocare i metodi del client.
Il metodo che chiami sul client è un metodo remoto? E' cioè presente in un'interfaccia remota implementata dal client? In caso contrario, è corretto che il codice del client venga eseguito sulla macchina del server: quando il server ottiene il riferimento al client in realtà ne ottiene una copia: il client sulla macchina client e il client sulla macchina server ora sono due oggetti distinti, senza legami. Dovresti avere un metodo remoto per fare quello che vuoi fare.