[
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