[jboss-jira] [JBoss JIRA] Commented: (JBRULES-631) Return of serialize/deserialize - HashMap of Compiled Rule Bases.
Joe Son (JIRA)
jira-events at lists.jboss.org
Tue May 6 10:01:20 EDT 2008
[ http://jira.jboss.com/jira/browse/JBRULES-631?page=comments#action_12411871 ]
Joe Son commented on JBRULES-631:
---------------------------------
Hi Guys.
It took a while for me because I've been trying to figure out where exactly it is failing. Here is something I found out based on the error message. When trying to deserialize the RuleBase, it is looking for a class called "rules.Rule_dept00004_10_0ConsequenceInvoker ". During the chat I've had on Drools chat forum, this is a generated class during RuleBase creation. One thing I noticed was the ConsequenceInvoker portion of the class name. I searched through the API and didn't find any class called ConsequenceInvoker. I did find this class on Drools2.x API. My conclusion is that on my build of Drools 3.0.6, either this class was removed.
What did work for me is to build the RuleBase based on the serialized package. For Drools 3.0.6, this works. This particular method failed for me when i was using Drools 3.0.1 to 3.0.5 but it works for me in 3.0.6.
I've made an effort to write a blog about the process of serializing package and deserializing on my blog site as well.
http://anjoedesign.com/anjoe/2008/04/25/drools-306-serialize-compiled-rules/
I'm sure no one is using drools 3.0.6 ;) but just incase anyone is having issues with it.
> Return of serialize/deserialize - HashMap of Compiled Rule Bases.
> -----------------------------------------------------------------
>
> Key: JBRULES-631
> URL: http://jira.jboss.com/jira/browse/JBRULES-631
> Project: JBoss Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: All
> Affects Versions: 3.0.1
> Environment: Websphere 6.0.
> Reporter: Joe Son
> Assigned To: Mark Proctor
> Fix For: FUTURE
>
>
> I'm trying to deserialize hashMap of compiled RuleBases back so that i can use it.
> I've tried out different ideas but this one kinda kills me as to why i am getting this error.
> It is compiled and serialized during the start up of the webserver (webapp). When the web app is restarted, it uses the same classloader to load the file from the disk.
> I get this error below:
> Am I getting this because of difference in classloader instances?
> say first time around classloader instance A does the serialization. Then when it come time for deserialization during webapp restart, classloader instance B does the desrialize.
> Could this cause such error below?
> I'm also using JANINO compiler.
> Please help.
> java.lang.ClassNotFoundException: rules.Rule_dept00004_10_0ConsequenceInvoker
> at java.net.URLClassLoader.findClass(URLClassLoader.java(Compiled Code))
> at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java(Compiled Code))
> at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
> at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
> at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java(Compiled Code))
> at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java(Compiled Code))
> at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java(Compiled Code))
> at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
> at com.ibm.ws.classloader.ReloadableClassLoader.loadClass(ReloadableClassLoader.java(Compiled Code))
> at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java(Compiled Code))
> at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
> at org.drools.rule.CompositePackageClassLoader.loadClass(Unknown Source)
> at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
> at org.drools.common.ObjectInputStreamWithLoader.resolveClass(Unknown Source)
> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at java.util.ArrayList.readObject(ArrayList.java(Compiled Code))
> at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at java.util.ArrayList.readObject(ArrayList.java(Compiled Code))
> at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at java.util.HashMap.readObject(HashMap.java(Compiled Code))
> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at java.util.HashMap.readObject(HashMap.java(Compiled Code))
> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at org.drools.common.AbstractRuleBase.doReadExternal(Unknown Source)
> at org.drools.reteoo.ReteooRuleBase.readExternal(Unknown Source)
> at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1718)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at java.util.HashMap.readObject(HashMap.java(Compiled Code))
> at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java(Compiled Code))
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java(Compiled Code))
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java(Compiled Code))
> at com.nationwide.pc.util.RulesXmlUtilTest.getRuleBaseFromDisk(RulesXmlUtilTest.java:271)
> at com.nationwide.pc.performers.eProcess.DroolsPerformerTest.initialize(DroolsPerformerTest.java:88)
> at com.nationwide.pc.performers.framework.ServletFrameWork.init(ServletFrameWork.java:86)
> at javax.servlet.GenericServlet.init(GenericServlet.java:256)
> at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:274)
> at com.ibm.ws.webcontainer.servlet.ServletWrapper.initialize(ServletWrapper.java:1398)
> at com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor.createServletWrapper(WebExtensionProcessor.java:86)
> at com.ibm.ws.webcontainer.webapp.WebApp.initializeTargetMappings(WebApp.java:558)
> at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:395)
> at com.ibm.ws.webcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:115)
> at com.ibm.ws.webcontainer.VirtualHost.addWebApplication(VirtualHost.java:128)
> at com.ibm.ws.webcontainer.WebContainer.addWebApp(WebContainer.java:905)
> at com.ibm.ws.webcontainer.WebContainer.addWebApplication(WebContainer.java:858)
> at com.ibm.ws.runtime.component.WebContainerImpl.install(WebContainerImpl.java:167)
> at com.ibm.ws.runtime.component.WebContainerImpl.start(WebContainerImpl.java:391)
> at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1228)
> at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1067)
> at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:547)
> at com.ibm.ws.runtime.component.ApplicationMgrImpl.startModule(ApplicationMgrImpl.java:1651)
> at com.ibm.ws.runtime.component.ApplicationMgrImpl._startModule(ApplicationMgrImpl.java:1599)
> at com.ibm.ws.runtime.component.ApplicationMgrImpl$ApplicationNotifier.classChanged(ApplicationMgrImpl.java:1811)
> at com.ibm.ws.classloader.ClassLoaderManager.checkAndNotify(ClassLoaderManager.java:536)
> at com.ibm.ws.classloader.ClassLoaderManager.access$000(ClassLoaderManager.java:58)
> at com.ibm.ws.classloader.ClassLoaderManager$ReloadTimerTask.alarm(ClassLoaderManager.java:604)
> at com.ibm.ejs.util.am._Alarm.run(_Alarm.java(Compiled Code))
> at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1462)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list