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

Hrumph Herman.Post at imail.org
Wed Feb 22 13:39:43 EST 2012


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


--
View this message in context: 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 at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120222/57ac494e/attachment.html 


More information about the rules-users mailing list