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

Hrumph Herman.Post at imail.org
Thu Feb 23 12:52:17 EST 2012


That was the problem – I updated Guvnor to the new 5.4.0-SNAPSHOT I built and it works!

Thanks much for your help Esteban,

Herm

From: Esteban [via Drools] [mailto:ml-node+s46999n3767458h7 at n3.nabble.com]
Sent: Wednesday, February 22, 2012 11:52 AM
To: Herman Post
Subject: Re: [rules-users] KnowledgeAgent custom class loader not working for PKG resources

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 <[hidden email]</user/SendEmail.jtp?type=node&node=3767458&i=0>> 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

Error! Filename not specified.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
[hidden email]</user/SendEmail.jtp?type=node&node=3767458&i=1>
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
[hidden email]</user/SendEmail.jtp?type=node&node=3767458&i=2>
https://lists.jboss.org/mailman/listinfo/rules-users

________________________________
If you reply to this email, your message will be added to the discussion below:
http://drools.46999.n3.nabble.com/KnowledgeAgent-custom-class-loader-not-working-for-PKG-resources-tp3746456p3767458.html
To unsubscribe from KnowledgeAgent custom class loader not working for PKG resources, click here<http://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3746456&code=SGVybWFuLlBvc3RAaW1haWwub3JnfDM3NDY0NTZ8NDA0OTE1Mzg5>.
NAML<http://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>


--
View this message in context: http://drools.46999.n3.nabble.com/KnowledgeAgent-custom-class-loader-not-working-for-PKG-resources-tp3746456p3770468.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120223/eb328784/attachment.html 


More information about the rules-users mailing list