Threads em serviços personalizados do CQ se bloqueiam

Problema

Threads correspondentes em alguns serviços personalizados do CQ se bloqueiam devido à sincronização.

Solução

Crie seus serviços CQ para que cada serviço CQ use seu próprio tíquete (e não o tíquete do sistema). Rep. de sobreposição. implementa o próprio AbstractService#getServiceTicket(Ticket) e cria um tíquete separado com o método Ticket#duplicate().

Ao usar o ticket.duplicate(), certifique-se de que tais objetos estejam fechados (veja [1]).

Observação:

O tíquete do sistema em si é inicializado na inicialização do CQ e fechado somente quando o CQ é encerrado.

Informações adicionais

Esse problema ocorre quando o serviços personalizados do CQ estende o AbstractService e não sobrepõe AbstractService#getServiceTicket(Ticket) para obter um tíquete separado. Portanto, a mesma sessão JCR é usada para todos os serviços do CQ.

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

Logotipo da Adobe

Fazer logon em sua conta