Problema

Los subprocesos correspondientes en algunos servicios personalizados de CQ se bloquean entre sí debido a la sincronización.

Solución

Construya sus servicios de CQ para que cada servicio de CQ use su propio ticket (y no el ticket del sistema). Superponga rep. en la propia implementación de AbstractService#getServiceTicket(Ticket) y cree un ticket separado con el método Ticket#duplicate().

Cuando utilice ticket.duplicate(), asegúrese de que dichos objetos estén cerrados (ver [1]).

Nota:

El propio ticket del sistema se inicia en el arranque de CQ y se cierra sólo cuando se cierra CQ.

Información adicional

Este problema ocurre cuando los servicios de CQ extienden AbstractService y no superponen AbstractService#getServiceTicket(Ticket) para obtener un ticket separado. Por lo tanto, se utiliza la misma sesión de JCR para todos los servicios de CQ.

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

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea