Newsgroup: it.comp.java
Titolo: Come posso temporizzare una sequanza di azioni?

Ciao a tutti,
sto progettanto un'applicazione J2EE che gira su più server.
Ho la necessità di sincronizzare le azioni degli N server in un qualche modo.
Senza entrare troppo nel dettaglio della mia applicazione, vi basti sapere che 
ho pensato di avviare un thread per ogni azione eseguita da un server. Questo 
Thread gestirà le varie fasi dell'azione (ogni operazione è composta da due fasi 
che si ripetono finchè l'azione non termina).
Una stessa azione può essere eseguita su diversi server e per questo ho la 
necessità che i Thread che la gestiscono sui vari server (1 per ogni server che 
compie l'azione in esame) siano in un qualche modo sincronizzato tra loro, 
ovvero ho la necessità che quando termina la FASE1 dell'azione sul Server 1 
allora voglio che anche sul Server2 termini la FASE1.
Esiste un modo migliore nell'utilizzare i Thread per eseguire quello che mi 
serve? in altre parole posso utilizare un altro oggetto (magari serilizzabile 
così da poter essere reprito in remoto tramite RMI) che mi permette di 
temporizzare le varie fasi di un'operazione senza però bloccare l'esecuzione di 
tuta l'aplicazione (ovvero che mi indichi quando è scaduto un certo intervallo 
di tempo o che si auto-gestisca alla terminazione di un certo intervallo di tempo)?
Grazie a chi mi risponderà! :)
ciao a tutti,
Mauro.

Ciao, Mauro!
Il giorno 14/06/2004 alle ore 13:45 hai scritto:
 M> Esiste un modo migliore nell'utilizzare i Thread per eseguire quello che
 M> mi serve?
Usare il clustering dei server ? Cosi' tutto il lavoro di aggiornamento e
sincronizzazione viene fatto in automatico ?
Bye
-- 
There is no emotion; There is peace.
http://www.maccasoft.com

 
Si lo so ma non posso usarlo perchè non è detto che la sincronizzazione avvanga 
in un dato istante per tutti i server (problemi di latenza e balle varie).
A me serve proprio un temporizzatore che non mi blocchi l'esecuzione 
dell'applicazione.
Mauro.

Ciao, Mauro!
Il giorno 14/06/2004 alle ore 14:08 hai scritto:
 M> Si lo so ma non posso usarlo perchè non è detto che la sincronizzazione
 M> avvanga in un dato istante per tutti i server (problemi di latenza e
 M> balle varie). A me serve proprio un temporizzatore che non mi blocchi
 M> l'esecuzione dell'applicazione.
Boh, senza sapere cosa vuoi fare e' come parlare del sesso degli angeli.
Fai una serie di web service che facciano quello che devono fare e poi
chiamali dai servlet che ti gestiscono i dati che vuoi tenere aggiornati.
L'applicazione sara' sempre bloccata se non usi i thread, ma se usi i thread
comunque l'accesso sincronizzato alle risorse comporta il blocco dei
processi concorrenti e quindi non risolvi praticamente niente.
Nota a margine: io penso che il modo migliore per risolvere certe
problematiche e' quello di spiegare esattamente cosa si vuole fare, senza
tante storie di segretezza e balle varie (non penso che qui ci sia qualcuno
a caccia di idee da copiare). Hai un'esigenza che puo' essere discutibile ma
senza specificare cosa devi aggiornare, il perche' e qual'e' lo scopo finale
di questa operazione, e' impossibile darti dei suggerimenti.
So per esperienza che per certi problemi, molto spesso e' sufficente
ragionarci sopra, anche solo per descriverli a qualcuno, per risolverli.


prova con JMS:
http://www.javaworld.com/javaworld/jw-07-2003/jw-0718-mdb.html
-- 
  -- + Setaceous Pig + --
http://www.jroller.com/page/megadix/

 
Non ho spiegaso quello che devo fare effettivamente non per motivi di segretezza 
ma perchè non ho implementato assolutamente niente! il mio è uno studio di 
fattibilità su come possa utilizzare la piattaforma J2EE per poter realizzare un 
servizio availability 24h/7 e distribuito su più server.
Quello che c'era da sapere l'ho detto! non è che voglio mantenre segreti di 
nessun tipo, solo che lo spiegare il perchè abbia bisogno di una 
sincronizzazione di questo tipo non ha niente a che fare con il come fare questa 
cosa.
ciao,
Mauro.

 
Grazie per la segnalazione.
Mauro

Ciao, Mauro!
Il giorno 14/06/2004 alle ore 17:02 hai scritto:
 M> Non ho spiegaso quello che devo fare effettivamente non per motivi di
 M> segretezza ma perchè non ho implementato assolutamente niente!
Si ma allora, parliamo proprio del sesso degli angeli.
 M> il mio è uno studio di fattibilità su come possa utilizzare la
 M> piattaforma J2EE per poter realizzare un servizio availability 24h/7 e
 M> distribuito su più server.
La soluzione a questo specifico problema e' il clustering unito al load
balancing che serve proprio ad avere un servizio sempre disponibile (se un
server appartenente al cluster non funziona, entrano in gioco gli altri) e
distribuito su piu' server (load balancing). Tutte cose implementabili con
JBoss + MySQL.
 M> Quello che c'era da sapere l'ho detto! non è
 M> che voglio mantenre segreti di nessun tipo, solo che lo spiegare il
 M> perchè abbia bisogno di una sincronizzazione di questo tipo non ha
 M> niente a che fare con il come fare questa cosa.
Questo non e' vero e quello che hai detto piu' sopra ne e' la dimostrazione.
Sono sicuro che se avessi specificato fin da subito il problema anche altri
avrebbero dato la risposta che ti ho dato io ora.
Bye
-- 
There is no passion; There is serenity.
http://www.maccasoft.com

 
Tutto questo lo so già. Il fatto che non mi è possibile usarlo perchè il servizo 
che sto progettando si basa su una architettura pensata per evitare l'utilizzo 
del clustering per la sincronizzazione perchè necessito di una sincronizzazione 
perfetta cosa che il clustering non mi garantisce per un certo istante fissato.
In ogni caso non stiamo a genereare un flame. Ti ringrazio per il tuo aiuto.
Mauro

 alla terminazione di un certo intervallo di tempo)? 
Se vuoi sincronizzazione.. sincrona, devi fare in modo che i vari thread 
che stanno in processi diversi possano inviarsi e ricevere segnali. Quindi 
qualunque cosa serva per fare interprocess communication va benone: la 
prima cosa che viene in mente sono sockets, che sono nate apposta.