classcastexception deployment rules

ClassCastException in a module with drools rule after deployment

Question

When you deploy a new version of a module, which contains a java class for the drools rule service, it could happen that you get a ClassCastException like:

java.lang.ClassCastException: class org.jahia.modules.comment.rules.CommentRuleService cannot be cast to class org.jahia.modules.comment.rules.CommentRuleService

 

Answer

The problem comes from the OSGI - class loader. Which use the old version of the class. The class loader didn't change the reference to the new module. So it could lead to this ClassCastException.

Since Jahia 7.3.6.0 an improvement was done, to unlink all classes from the class loader.  Before this version, only a restart of the node helps to solve this issue.