I thread nei servizi CQ personalizzati si bloccano a vicenda

Problema

I thread corrispondenti in alcuni servizi CQ personalizzati si bloccano a vicenda a causa della sincronizzazione.

Soluzione

Costruisci i tuoi Servizi CQ in modo che ogni Servizio CQ utilizzi il proprio ticket (e non il ticket di sistema). Rappres. sovraimpressione implementa per conto tuo AbstractService#getServiceTicket(Ticket) e crea un ticket separato con il metodo Ticket#duplicate().

Quando usi ticket.duplicate(), assicurati che tali oggetti siano chiusi (vedi [1]).

Nota:

Il ticket di sistema stesso viene inizializzato all'avvio di CQ e chiuso solo quando CQ si chiude.

Informazioni aggiuntive

Questo problema si verifica quando i servizi CQ personalizzati estendono AbstractService e non sovrappongono AbstractService#getServiceTicket(Ticket) per ottenere un biglietto separato. Pertanto, viene utilizzata la stessa sessione JCR per tutti i servizi CQ.

[1] http://javadoc.day.com/com/day/cq/contentbus/Ticket.html#close()

Logo Adobe

Accedi al tuo account