View Full Version : [JAVA] richiamare una particolare istanza di un oggetto
otrebor86
11-10-2008, 15:45
Ciao a tutti.
Sto sviluppando un web service in java ed ho questo problema :
Il client si connette al web service e attraverso il metodo remoto
client.runInstrument() crea un instanza di un oggetto e inizia la sua esecuzione (lato web service). Fatto cio il client si disconnette.
Ora quando il client si riconnette al web service, esiste un modo per recuperare quella particolare instanza creata dal metodo precedente??????????.
Avevo pensato che il metodo runInstrument potrebbe restiuire un qualche cosa del tipo oggetto.toString e in effetti restituisce qualkosa tipo un seriale dell'oggetto ma cmq nn saprei come richiamare qualla particolare istanza dell' oggetto.
Grazie mille in anticipo
ps Se sono stato poco chiaro (cosa probabile) ditemelo e cerchero di spiegarmi meglio
wingman87
11-10-2008, 18:05
Non so se ho capito bene, l'istanza che vuoi recuperare si trova ancora sul webservice ma non sai come riconoscerla? Oppure non si trova più sul webservice e quindi non sai come fare per salvarla e recuperarla dopo?
otrebor86
11-10-2008, 18:44
Non so se ho capito bene, l'istanza che vuoi recuperare si trova ancora sul webservice ma non sai come riconoscerla? Oppure non si trova più sul webservice e quindi non sai come fare per salvarla e recuperarla dopo?
L'istanza si trova ancora sul web service ed è in esecuzione Il mio obiettivo è recuperarla con un operazione del tipo
Instrument boat=getInstance("nomeIstanza");
dal client .
GetInstance invece è un metodo remoto.
se nn mi sono ancora spiegato bene dimmelo.. ci riprovo
wingman87
11-10-2008, 19:02
Beh, mi sembra che l'idea del toString che dicevi nel primo post potesse andare, oppure più semplicemente puoi usare l'hashcode (che comunque è incluso nel toString di default).
Mi sa che però non ho ancora capito il problema, perché altrimenti avresti già risolto no?
otrebor86
11-10-2008, 19:54
Beh, mi sembra che l'idea del toString che dicevi nel primo post potesse andare, oppure più semplicemente puoi usare l'hashcode (che comunque è incluso nel toString di default).
Mi sa che però non ho ancora capito il problema, perché altrimenti avresti già risolto no?
Non ho risolto per niente.. tento di spiegarmi meglio.
lato client chiamo runInstrument che è un metodo remoto (quindi lato webService) che istanzia un oggetto di tipo instrument.
runInstrument(){
Instrument instrument=new Instrument(....);
instrument.run();
istanza=instrument.toString();
return istanza
}
disconnetto il client
e mi riconnetto
ora voglio accedere a quell'oggetto instrument (propio l'istanza precedente)
per fare ad esempio un destroy
destroyInstrument(String istanza){
Instrument instrument=getInstance(istanza);
instrument.destroy();
}
Quello che cerco è che non ho è il metodo getInstance o qualcosa di simile.
Se neanche mi sono spiegato bene dimmelo ci riprovo.
che io sappia , se non hai una variabile che punta a una particolare istanza , quella istanza e persa , scusate l'ignoranza ma come volete far assegnare una istanza a una variabile ( anche avendo il suo indirizzo di memoria ) , e se poi quella istanza non esistese + ?
wingman87
12-10-2008, 01:17
runInstrument(){
Instrument instrument=new Instrument(....);
instrument.run();
istanza=instrument.toString();
return istanza
}
E' qui il problema, devi tenere da qualche parte un riferimento all'Instrument che hai istanziato, altrimenti come lo ripeschi dopo? E comunque se non tieni un riferimento l'istanza viene cancellata dal garbage collector.
Quindi instrument va dichiarato fuori dal metodo. Se ci sono tanti client che si connettono al webservice allora dovrai avere una collection di instrument. Quando poi vuoi recuperarne uno usi la chiave hash e la confronti con le hashkey dei vari instrument nella collection fino a trovare quello giusto.
Spero di aver capito bene stavolta :)
concordo con wingman87 del fatto che devi mantenere il riferimento alle instanze
per farlo ti conviene comunque di utilizzare magari una Map con delle chiavi che generi tu, e per complertare il tutto magari la Map la inserisci all'interno di un singleton che ti fa anche da factory.
otrebor86
12-10-2008, 16:02
ragazzi credo di aver risolto.
Come consigliato da voi ho fatto una collection di strumenti lato web service e quindi facilmente li recupepro.
grazie mille :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.