Nicholas,
I assume that you are using your classes not only in the consequence, but
in the LHS of the rules as well, right? In this case, a knowledge base
recompilation will be necessary. That is because Drools must indeed keep
references to your class in order to be able to properly match incoming
facts, extract their attribute values, etc. Drools already provides
re-wiring for most of its artifacts, but providing the same to user defined
classes would be close to recompile the knowledge base again.
Now, I am curious about your use case? why do you need to re-load your
classes?
[]s
Edson
2009/10/14 Nicholas Hemley <nic.hemley(a)sidonis.com>
Hello,
I am using various classes in the consequences of my rules and I would like
to dynamically re-load the classes.
Currently, I include the following code snippet which sets the class
loader:
KnowledgeBaseConfiguration kbConf =
KnowledgeBaseFactory.newKnowledgeBaseConfiguration(properties,
MyClassLoader.getInstance());
KnowledgeBase knowledgeBase =
KnowledgeBaseFactory.newKnowledgeBase(kbConf);
However, if I change the underlying jar and inform my classloader of this
change, the old class is still used in the rule consequences.
I therefore assume that Drools is storing a reference to the old class in
the previously created KnowledgeBases so MyClassLoader.loadClass() is only
invoked the first time the class is required.
My question is thus: Is there any way to force a class reload on a
KnowledgeBase or do I have to re-create the Knowledgebase?
If so, would it be a case of getAllFactHandles() (or similar) and assert
these into a newly created KnowledgeBase with a new instance of
MyClassloader?
Cheerio,
Nic
*Nicholas Hemley*
*Senior Developer*
*Sidonis | Powering a New Generation of Service Assurance*
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com