[rules-users] KnowledgeAgent custom class loader not working for PKG resources

Esteban Aliverti esteban.aliverti at gmail.com
Wed Feb 22 13:49:14 EST 2012


Are you sure that the binary package was also created with the same drools
version you are using in your tests?

Best Regards,

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Esteban Aliverti
- Developer @ http://www.plugtree.com
- Blog @ http://ilesteban.wordpress.com


On Wed, Feb 22, 2012 at 7:39 PM, Hrumph <Herman.Post at imail.org> wrote:

> I have a 5.4.0-SNAPSHOT version with your changes built and made the
> KnowledgeAgentConfiguration change you suggested.  My test code is now like
> this:****
>
> ** **
>
>         KnowledgeAgentConfiguration aconf =
> KnowledgeAgentFactory.newKnowledgeAgentConfiguration();****
>
>         aconf.setProperty("drools.agent.useKBaseClassLoaderForCompiling",
> "true"); // new****
>
>         // KnowledgeAgent kagent =
> KnowledgeAgentFactory.newKnowledgeAgent("test", kbase, aconf,
> kbuilderConfig);****
>
>         KnowledgeAgent kagent =
> KnowledgeAgentFactory.newKnowledgeAgent("test", kbase, aconf);  // not
> passing kBuilderConfig****
>
> ** **
>
> My project is attached – let me know if it doesn’t upload.****
>
> ** **
>
> I can see I’m stepping threw your new code,  and I’m now getting a new
> error, below.****
>
> ** **
>
> I can also tell you that we tried to just use the KnowledgeBuilder with
> custom classloader as in the Expert documentation (4.1.1) and could not get
> that to work either.  Stack trace follows:****
>
> ** **
>
> java.lang.RuntimeException: KnowledgeAgent exception while trying to
> deserialize KnowledgeDefinitionsPackage  ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:770)
> ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:1029)
> ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:812)
> ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:671)
> ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:202)
> ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:181)
> ****
>
>                 at
> drools.cookbook.chapter02.KnowledgeAgentClassloaderTest.createKnowledgeBase(KnowledgeAgentClassloaderTest.java:62)
> ****
>
>                 at
> drools.cookbook.chapter02.KnowledgeAgentClassloaderTest.customClassloaderTest(KnowledgeAgentClassloaderTest.java:30)
> ****
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)****
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> ****
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ****
>
>                 at java.lang.reflect.Method.invoke(Method.java:601)****
>
>                 at
> org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)****
>
>                 at
> org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
> ****
>
>                 at
> org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)****
>
>                 at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
> ****
>
>                 at
> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)****
>
>                 at
> org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)****
>
>                 at
> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
> ****
>
>                 at
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
> ****
>
>                 at
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
> ****
>
>                 at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
> ****
>
>                 at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)**
> **
>
>                 at
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
> ****
>
>                 at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> ****
>
>                 at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> ****
>
>                 at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> ****
>
>                 at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> ****
>
>                 at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> ****
>
>                 at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> ****
>
> Caused by: java.io.OptionalDataException****
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1367)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at org.drools.rule.Pattern.readExternal(Pattern.java:118)*
> ***
>
>                 at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)***
> *
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at java.util.ArrayList.readObject(ArrayList.java:733)****
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)****
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> ****
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ****
>
>                 at java.lang.reflect.Method.invoke(Method.java:601)****
>
>                 at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)****
>
>                 at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)****
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at
> org.drools.rule.GroupElement.readExternal(GroupElement.java:63)****
>
>                 at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)***
> *
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at org.drools.rule.Rule.readExternal(Rule.java:180)****
>
>                 at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)***
> *
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at
> java.util.IdentityHashMap.readObject(IdentityHashMap.java:1216)****
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)****
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> ****
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ****
>
>                 at java.lang.reflect.Method.invoke(Method.java:601)****
>
>                 at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)****
>
>                 at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)****
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at
> org.drools.rule.MVELDialectRuntimeData.readExternal(MVELDialectRuntimeData.java:92)
> ****
>
>                 at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)***
> *
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at java.util.HashMap.readObject(HashMap.java:1043)****
>
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)****
>
>                 at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> ****
>
>                 at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ****
>
>                 at java.lang.reflect.Method.invoke(Method.java:601)****
>
>                 at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)****
>
>                 at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)****
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at
> org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:59)
> ****
>
>                 at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)***
> *
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at org.drools.rule.Package.readExternal(Package.java:205)*
> ***
>
>                 at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)***
> *
>
>                 at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)*
> ***
>
>                 at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)****
>
>                 at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)****
>
>                 at
> org.drools.core.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:205)
> ****
>
>                 at
> org.drools.core.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:189)
> ****
>
>                 at
> org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:756)
> ****
>
>                 ... 29 more****
>
> ** **
>
> Thanks,****
>
> ** **
>
> Herm****
>
> *knowledge-agent-classloader-5.4.zip* (53K) Download Attachment<http://attachment/3767414/0/knowledge-agent-classloader-5.4.zip>
>
> ------------------------------
> View this message in context: RE: [rules-users] KnowledgeAgent custom
> class loader not working for PKG resources<http://drools.46999.n3.nabble.com/KnowledgeAgent-custom-class-loader-not-working-for-PKG-resources-tp3746456p3767414.html>
> Sent from the Drools: User forum mailing list archive<http://drools.46999.n3.nabble.com/Drools-User-forum-f47000.html>at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120222/fd0a3874/attachment.html 


More information about the rules-users mailing list