As an update: I tried several things to remedy this problem. I tried adding the classloader to the JPA classes to the RuleBaseConfiguration but that had no effect. After much code digging, debugging and research I decided to setShadowProxy(false) on the RuleBaseConfiguration and low-and-behold things worked. No sure why Drools can't create the proxies for the JPA classes. I will save that for the next rainy day.

Earnie1


From: Earnest Dyke <earniedyke@yahoo.com>
To: JBoss Rules <rules-users@lists.jboss.org>
Sent: Wednesday, May 6, 2009 11:15:10 AM
Subject: [rules-users] Drools and OpenJPA

Greetings all,

I am trying to use Drools 4.0.7 with objects that are retrieved via OpenJPA. So I have a Person entity which is in the package com.my.company.entity. When I retrieve it via OpenJPA what I get, and subsequently insert into working memory, is a org.apache.openjpa.enhance.com$my$company$entity$Person$pcsubclass. I have tried casting before inserting into working memory but that does not change things. Drools is throwing java.lang.NoClassDefFoundError: org/apache/openjpa/enhance/com$my$company$entity$Person$pcsubclass exception.

Any ideas of how to get around this? I really don't want to have to declare the concrete (OpenJPA) classes in my rules if I can help it.

Thanks in advance for any and all help!

Earnie!