Ho un codice che voglio consentire solo l'accesso a un thread. So come farlo usando i blocchi oi metodi synchronized
, ma funzionerà in un ambiente cluster?Condivisione di un blocco sincronizzato Java in un cluster o utilizzando un blocco globale?
L'ambiente di destinazione è WebSphere 6.0, con 2 nodi nel cluster.
Ho la sensazione che synchronized
non funzionerà, poiché ogni istanza dell'applicazione su ciascun nodo avrà la sua JVM, giusto?
Quello che sto cercando di fare qui è eseguire alcuni aggiornamenti ai record del database quando il sistema viene avviato. Cercherà tutti i record del database che sono più vecchi della versione del codice ed eseguirà attività specifiche per aggiornarli. Voglio solo un nodo per eseguire questi aggiornamenti, dal momento che voglio essere sicuro che ogni elemento di lavoro viene aggiornato solo una volta, e le prestazioni di questi aggiornamenti non sono una grande preoccupazione, dal momento che accade solo all'avvio dell'applicazione, e fa davvero solo qualcosa quando il codice è stato modificato dall'ultima volta che è stato avviato.
Il database è DB2v9 e accedo direttamente tramite JNDI (nessun livello ORM).
È stato suggerito che un blocco globale potrebbe essere la strada da percorrere qui, ma non sono sicuro di come farlo.
Qualcuno ha qualche indicazione in questa arena?
Grazie!
Penso che dovresti essere più specifico nella tua domanda. Quale azione, esattamente, stai cercando di coordinare? –
@Software Monkey- Sure, mi dispiace per quello. Ho appena aggiunto un paragrafo che spiega il mio intento. Per favore fatemi sapere se non è ancora chiaro. – pkaeding
Quindi quello che vuoi veramente, allora, è un blocco globale. Non conosco la websphere quindi non posso aiutare qui, ma chiedere aiuto nella creazione di una serratura probabilmente suonerà più campane con quelli che lo fanno :) – bdonlan