2011-08-18 3 views
5

Abbiamo un VIP (BIG-IP) che sposta effettivamente le richieste del servizio Web su due nodi ciascuna con il proprio server GlassFish 3.1 ei servizi distribuiti. Quindi non è un vero cluster di pesce cristallo. Il mio problema è che ho un sacco di servizi di pianificazione come quella di seguito elencati:Disabilitazione del timer EJB (GlassFish 3.1, Java EE 6)

@Schedule(minute = "55", hour = "23", dayOfWeek = "Wed") 
public void runScheduledMedicaidPaymentProcess() { 

C'è un modo per me di disattivare il servizio Timer di EJB su un nodo in modo che il metodo di cui sopra non viene eseguito su entrambi nodi quando sono le 23:55 di mercoledì?

Ho visto l'uso del pool _Default per cluster menzionato nel documento server Glassfish, ma come ho spiegato prima il nostro non è un vero cluster. Per favore fatemi sapere se c'è un modo per fermare il timer su uno in modo che non sia attivato.

risposta

2

Se non si utilizza un cluster, in realtà si hanno solo due istanze indipendenti. Dovrai creare una specie di semaforo che ogni metodo controlla (una colonna db potrebbe essere una buona soluzione). Il metodo restituirebbe se è ok per eseguire il timer. Ciascuna delle tue istanze chiamerebbe il metodo, ma solo una istanza finirebbe per eseguire il timer.

Oppure ...

Imposta un cluster.