Yes, that is correct. If the underlying class interface changed, java will raise CCE. Rulebase must be recompiled in that case.
[]s Edson 2008/12/2 seemamani <[EMAIL PROTECTED]> > > Thanks Dean, we have removed the AOP implementation to check if that is the > source of the problem. > > Edson, Is there any chance for a ClassCastException if the fact classes in > the application were changed, but the fact model classes that are part of > the compiled rule package were not updated to the most recent version? But > then it would cause exceptions consistently, right? In our case, the > exceptions are thrown occasionally only. > > Thanks, > Seema > > > Dean Turner wrote: > > > > FYI: Spring AOP enhances objects via CGLIB when no interface is > available. > > If an interface is avaiable, it uses an jdk dynamic proxy. > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf Of seemamani > > Sent: Wednesday, November 26, 2008 11:18 AM > > To: [email protected] > > Subject: Re: [rules-users] ClassCastException when firing rules > > > > > > Edson, > > > > We are not sure how the CGLIB proxy is getting created. We were under the > > impression that it is the shadow fact proxy generated by Drools itself. I > > would like to share a few more points about our application in case they > > are > > somehow related to this problem. > > > > 1. We are using Spring AOP for intercepting method calls and passing the > > facts, globals etc to a class that invoke Drools. Version of Spring is > > 2.0.7 > > 2. We are using Hibernate 3.x/JPA for persistence. In fact the Inventory > > POJO that is causing the ClassCastException is a JPA entity > > 3. We have rules defined in multiple packages. The Inventory POJO is used > > by > > rules in all the packages. But the exception is occurring only for rules > > in > > a particular package. That too only occasionally. > > > > Please let me know if any other information is required. > > > > Thanks, > > Seema > > > > > > Edson Tirelli-3 wrote: > >> > >> What are you guys doing with CGLIB? or is this WebSphere doing some > >> sneaky thing behind the scenes? Or is it SpringAOP doing sneaky things? > >> > >> Caused by: > >> java.lang.ClassCastException: com.adesa.data.grounding.pojo.Inventory > >> incompatible with > >> com.adesa.data.grounding.pojo.Inventory$$EnhancerByCGLIB$$de81aab3 > >> > >> At compile time we determine that "inventory" is a > >> com.adesa.data.grounding.pojo.Inventory. If at runtime what arrives into > >> the > >> expression is a > >> com.adesa.data.grounding.pojo.Inventory$$EnhancerByCGLIB$$de81aab3, > >> and it is not a proper subclass, you might get such problems. > >> > >> Having said that, I will talk to Mike to check if this can be > > prevented > >> somehow, but I really don't know if it will be possible... > >> > >> []s > >> Edson > >> > >> > >> > >> 2008/11/25 seemamani <[EMAIL PROTECTED]> > >> > >>> > >>> hi, > >>> > >>> We are using Drools 4.0.7 in a web application deployed in WebSphere > > 6.1. > >>> Occasionally, we have rule engine failure caused by > >>> RuntimeDroolsException > >>> (whose root cause is shown as ClassCastException) when firing rules. > >>> Other > >>> times, the rules are executing without errors. Here is the stack trace > > of > >>> the exception. What are the possible reasons? > >>> > >>> Thanks, > >>> Seema > >>> > >>> org.drools.RuntimeDroolsException: Exception executing predicate eval( > >>> inventory.leaseInformation != null ) > >>> at > >>> > > > org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:216 > > ) > >>> at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137) > >>> at > >>> > >>> > > > org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Composi > > teObjectSinkAdapter.java:318) > >>> at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:145) > >>> at > >>> > >>> > > > org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Composi > > teObjectSinkAdapter.java:318) > >>> at > >>> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:162) > >>> at org.drools.reteoo.Rete.assertObject(Rete.java:175) > >>> at > >>> org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) > >>> at > >>> > > > org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71 > > ) > >>> at > >>> > >>> > > > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java: > > 911) > >>> at > >>> > >>> > > > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java: > > 883) > >>> at > >>> > >>> > > > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java: > > 684) > >>> at > >>> > >>> > > > com.adesa.business.framework.rules.process.drools.ManagedStatefulSession.i > > nit(ManagedStatefulSession.java:87) > >>> at > >>> > >>> > > > com.adesa.business.framework.rules.process.drools.ManagedStatefulSession.f > > ireAllRules(ManagedStatefulSession.java:100) > >>> at > >>> > >>> > > > com.adesa.business.framework.rules.process.drools.RuleEngineImpl.execute(R > > uleEngineImpl.java:60) > >>> at > >>> > >>> > > > com.adesa.business.framework.rules.interceptor.RulesInterceptor.applyAnnot > > edRules(RulesInterceptor.java:109) > >>> at > >>> > >>> > > > com.adesa.business.framework.rules.interceptor.RulesInterceptor.applyRules > > (RulesInterceptor.java:80) > >>> at sun.reflect.GeneratedMethodAccessor575.invoke(Unknown Source) > >>> at > >>> > >>> > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm > > pl.java:43) > >>> at java.lang.reflect.Method.invoke(Method.java:618) > >>> at > >>> > >> > >>> > > > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWi > > thGivenArgs(AbstractAspectJAdvice.java:597) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(A > > bstractAspectJAdvice.java:583) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAd > > vice.java:60) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(Exp > > oseInvocationInterceptor.java:89) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor > > .intercept(Cglib2AopProxy.java:629) > >>> at > >>> > >>> > > > com.adesa.business.rules.RuleHandler$$EnhancerByCGLIB$$3ab6eda.fireUpdateP > > ricing(<generated>) > >>> at > >>> > >>> > > > com.adesa.business.auction.manager.SaleEventManagerImpl.updatePricing(Sale > > EventManagerImpl.java:2599) > >>> at > >>> > >>> > > > com.adesa.business.auction.manager.SaleEventManagerImpl.cascadeAtEndOfAuct > > ion(SaleEventManagerImpl.java:1993) > >>> at > >>> > >>> > > > com.adesa.business.auction.manager.SaleEventManagerImpl.cascadeAtEndOfGrou > > ndingSaleEventForHyundai(SaleEventManagerImpl.java:1783) > >>> at > >>> > >>> > > > com.adesa.business.auction.manager.SaleEventManagerImpl.cascadeAtEndOfGrou > > ndingSaleEvent(SaleEventManagerImpl.java:1180) > >>> at > >>> > >>> > > > com.adesa.business.auction.manager.SaleEventManagerImpl.cascadeAtEndOfGrou > > ndingSaleEvent(SaleEventManagerImpl.java:1134) > >>> at > >>> > >>> > > > com.adesa.business.auction.service.AuctionServiceImpl.cascadeAtEndOfGround > > ingSaleEvent(AuctionServiceImpl.java:766) > >>> at sun.reflect.GeneratedMethodAccessor263.invoke(Unknown Source) > >>> at > >>> > >>> > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm > > pl.java:43) > >>> at java.lang.reflect.Method.invoke(Method.java:618) > >>> at > >>> > >>> > > > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(Ao > > pUtils.java:304) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoi > > nt(ReflectiveMethodInvocation.java:182) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:149) > >>> at > >>> > >>> > > > org.springframework.transaction.interceptor.TransactionInterceptor.invoke( > > TransactionInterceptor.java:106) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.procee > > d(MethodInvocationProceedingJoinPoint.java:77) > >>> at > >>> > >>> > > > com.adesa.business.framework.logging.LoggingInterceptor.profileLog(Logging > > Interceptor.java:136) > >>> at sun.reflect.GeneratedMethodAccessor74.invoke(Unknown Source) > >>> at > >>> > >>> > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm > > pl.java:43) > >>> at java.lang.reflect.Method.invoke(Method.java:618) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWi > > thGivenArgs(AbstractAspectJAdvice.java:597) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(A > > bstractAspectJAdvice.java:583) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAd > > vice.java:60) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor. > > invoke(AfterReturningAdviceInterceptor.java:50) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJA > > fterThrowingAdvice.java:54) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.in > > voke(MethodBeforeAdviceInterceptor.java:50) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJA > > fterThrowingAdvice.java:54) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(Exp > > oseInvocationInterceptor.java:89) > >>> at > >>> > >>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Refle > > ctiveMethodInvocation.java:171) > >>> at > >>> > >>> > > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopP > > roxy.java:204) > >>> at $Proxy58.cascadeAtEndOfGroundingSaleEvent(Unknown Source) > >>> at > >>> > >>> > > > com.adesa.business.pricing.ejb.PricingBean.updateMBPPrice(PricingBean.java > > :112) > >>> at > >>> > >>> > > > com.adesa.business.pricing.ejb.EJSRemoteStatelessPricing_a0966b04.updateMB > > PPrice(EJSRemoteStatelessPricing_a0966b04.java:183) > >>> at > >>> > >>> > > > com.adesa.business.pricing.ejb._EJSRemoteStatelessPricing_a0966b04_Tie.upd > > ateMBPPrice(_EJSRemoteStatelessPricing_a0966b04_Tie.java:243) > >>> at > >>> > >>> > > > com.adesa.business.pricing.ejb._EJSRemoteStatelessPricing_a0966b04_Tie._in > > voke(_EJSRemoteStatelessPricing_a0966b04_Tie.java:108) > >>> at > >>> > >>> > > > com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.jav > > a:621) > >>> at > >>> com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:474) > >>> at com.ibm.rmi.iiop.ORB.process(ORB.java:503) > >>> at com.ibm.CORBA.iiop.ORB.process(ORB.java:1571) > >>> at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2701) > >>> at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2575) > >>> at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:62) > >>> at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118) > >>> at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) > >>> Caused by: > >>> java.lang.ClassCastException: com.adesa.data.grounding.pojo.Inventory > >>> incompatible with > >>> com.adesa.data.grounding.pojo.Inventory$$EnhancerByCGLIB$$de81aab3 > >>> at ASMAccessorImpl_11448003161226563261710.getValue(Unknown > >>> Source) > >>> at > >>> > >>> > > > org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableD > > eepPropertyNode.java:22) > >>> at > >>> > >>> > > > org.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.ja > > va:21) > >>> at > >>> > >>> > > > org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.ja > > va:21) > >>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:90) > >>> at > >>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:111) > >>> at org.mvel.MVEL.executeExpression(MVEL.java:235) > >>> at > >>> > >>> > > > org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpress > > ion.java:45) > >>> at > >>> > > > org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:209 > > ) > >>> -- > >>> View this message in context: > >>> > > > http://www.nabble.com/ClassCastException-when-firing-rules-tp20694738p2069 > > 4738.html > >>> Sent from the drools - user mailing list archive at Nabble.com. > >>> > >>> _______________________________________________ > >>> rules-users mailing list > >>> [email protected] > >>> https://lists.jboss.org/mailman/listinfo/rules-users > >>> > >> > >> > >> > >> -- > >> Edson Tirelli > >> JBoss Drools Core Development > >> JBoss, a division of Red Hat @ www.jboss.com > >> > >> _______________________________________________ > >> rules-users mailing list > >> [email protected] > >> https://lists.jboss.org/mailman/listinfo/rules-users > >> > >> > > > > -- > > View this message in context: > > > http://www.nabble.com/Occasional-ClassCastException-when-firing-rules-tp20 > > 694738p20705144.html > > Sent from the drools - user mailing list archive at Nabble.com. > > > > _______________________________________________ > > rules-users mailing list > > [email protected] > > https://lists.jboss.org/mailman/listinfo/rules-users > > _______________________________________________ > > rules-users mailing list > > [email protected] > > https://lists.jboss.org/mailman/listinfo/rules-users > > > > > > -- > View this message in context: > http://www.nabble.com/Occasional-ClassCastException-when-firing-rules-tp20694738p20794410.html > Sent from the drools - user mailing list archive at Nabble.com. > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > -- Edson Tirelli JBoss Drools Core Development JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
