Problème
Les threads correspondants dans certains services CQ personnalisés se bloquent mutuellement en raison de la synchronisation.
Solution
Créez vos services CQ afin que chaque service CQ utilise son propre ticket (et non le ticket du système). Recouvrez la représentation de l’implémentation de AbstractService#getServiceTicket(Ticket) et créez un ticket distinct avec la méthode Ticket#duplicate().
Lorsque vous utilisez ticket.duplicate(), vérifiez que ces objets sont fermés (voir [1]).
Le ticket du système lui-même est initialisé au démarrage de CQ et fermé uniquement lorsque CQ se ferme.
Informations supplémentaires
Ce problème se produit lorsque les services CQ personnalisés étendent AbstractService et ne recouvrent pas AbstractService#getServiceTicket(Ticket) pour obtenir un ticket distinct. Par conséquent, la même session JCR est utilisée pour tous les services CQ.
[1] http://javadoc.day.com/com/day/cq/contentbus/Ticket.html#close()
Accéder à votre compte