Ragazzi ho una domanda su questo tipo di comunicazione client/server: devo creare un client che, grazie ad una chiamata remota fatta con RMI, si registri ad un server, il quale può far capire al client alcune cose (come ad esempio l'entrata di un altro client nel sistema) tramite le callback.

Per quanto riguarda la comunicazione da Client a Server no problem, funziona tutto. Un problema sorge nella gestione delle callback: come saprete, per poter usare le callback io devo creare un'interfaccia, istanziarne un oggetto e passarlo al server al momento della registrazione. Il server userà l'oggetto che gli ho passato per invocare i metodi che vuole. Il punto è questo: se instanzio l'interfaccia da passare al server, il client non termina mai...mi spiego meglio: qualora io non gestisca le callback il client termina senza problemi (nonostante i suoi vari thread e altre cose), ma se io creo l'oggetto (istanza dell'interfaccia) da passare al server per usarlo nelle callback, allora il client arriva alla fine del codice ma non si ferma...rimane in attesa di qualcosa che non so cosa sia!

posto il pezzo di codice che da problemi:

//ottengo il registro per le chiamate RMI
registro=LocateRegistry.getRegistry(hostServer,por taRMI);
//vado a prendere l'oggetto remoto su cui invocherò i metodi verso il server
rmiInterface = (RemoteInterface_Server)(registro.lookup("server") );
//************************************************
//istanzio l'interfaccia per le callback del server
callClient = new Cbimpl_Client();
//************************************************
//effettuo la registrazione al server passandogli l'oggetto per le callback
rmiInterface.register(callClient);

Ecco, se TOGLIETE quello che ho scritto fra asterischi il client termina perfettamente! Ma nel momento in cui istanzio quell'oggetto, il client continua a rimanere attivo. Qualcuno sa dirmi il motivo di questa strana cosa? Grazie mille