Problème

Vous avez configuré un service CQ personnalisé placé dans /classes/.../serviceclass. Si vous essayez d’accéder à ce service CQ à partir d’un script JSP (par ServiceManager.getService()), vous obtenez un ClassCastException.

Solution

Pour vous assurer que la classe est chargée à partir du même fichier classloader, placez votre fichier de classe (avc la hiérarchie du répertoire de module) dans un fichier jar. Ensuite, copiez-le dans /system/bin.new/lib. La classe com.day.cq.bootstrap.BootClassLoader charge votre classe. Le gestionnaire de services ainsi que le système JSP utilisent com.day.cq.bootstrap.BootClassLoader.

Remarque :

Assurez-vous que votre classe n’est pas dans /classes/... ou toujours dans le cache de classe (/system/work/classes) d’une compilation antérieure dans cqde. Ensuite, redémarrez.

Informations supplémentaires

Le ClassCastException se produit lorsque le gestionnaire de services et le système JSP n’utilisent pas le même classloader. Par conséquent, votre classe n’est pas la même pour le gestionnaire de services et le système JSP.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne