[jboss-user] [JBoss Cache: Core Edition] - ClassNotFoundException during deserialisation

mbrade do-not-reply at jboss.com
Wed Aug 20 15:08:56 EDT 2008


Hello

I want to use JBoss Cache to store the result of different method calls (The objects are all serializable). The results and the method-data (method-name, class-name, parameters) are stored in a database.

I created some test classes with test methods which return different objects. The storage in the memory cache works fine.

When I activate the jdbc config it writes the method data into the database. But when I try to write the result into the same node but under a different key. I get the following Exception:

anonymous wrote : 
  | org.jboss.cache.CacheException: java.lang.Exception: Unable to load to deserialize result: 
  | 	at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:227)
  | 	at org.jboss.cache.invocation.CacheInvocationDelegate.getNode(CacheInvocationDelegate.java:420)
  | 	at org.jboss.cache.invocation.CacheInvocationDelegate.getNode(CacheInvocationDelegate.java:61)
  | 	at de.arvatomobile.bdev.cache.methodresultcacher.MethodResultCacheManager.executeMethod(MethodResultCacheManager.java:104)
  | 	at de.arvatomobile.bdev.cache.methodresultcacher.TestLock.main(TestLock.java:60)
  | Caused by: java.lang.Exception: Unable to load to deserialize result: 
  | 	at org.jboss.cache.loader.AdjListJDBCCacheLoader.loadNode(AdjListJDBCCacheLoader.java:378)
  | 	at org.jboss.cache.loader.AdjListJDBCCacheLoader.exists(AdjListJDBCCacheLoader.java:292)
  | 	at org.jboss.cache.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:296)
  | 	at org.jboss.cache.interceptors.CacheLoaderInterceptor.visitGetNodeCommand(CacheLoaderInterceptor.java:147)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  | 	at org.jboss.cache.interceptors.PessimisticLockInterceptor.handleGetNodeCommand(PessimisticLockInterceptor.java:317)
  | 	at org.jboss.cache.interceptors.base.PostProcessingCommandInterceptor.visitGetNodeCommand(PostProcessingCommandInterceptor.java:257)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
  | 	at org.jboss.cache.commands.AbstractVisitor.visitGetNodeCommand(AbstractVisitor.java:94)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  | 	at org.jboss.cache.interceptors.MarshalledValueInterceptor.visitGetNodeCommand(MarshalledValueInterceptor.java:93)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  | 	at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(TxInterceptor.java:266)
  | 	at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxInterceptor.java:253)
  | 	at org.jboss.cache.commands.AbstractVisitor.visitGetNodeCommand(AbstractVisitor.java:94)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
  | 	at org.jboss.cache.commands.AbstractVisitor.visitGetNodeCommand(AbstractVisitor.java:94)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  | 	at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:155)
  | 	at org.jboss.cache.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:108)
  | 	at org.jboss.cache.commands.AbstractVisitor.visitGetNodeCommand(AbstractVisitor.java:94)
  | 	at org.jboss.cache.commands.read.GetNodeCommand.acceptVisitor(GetNodeCommand.java:42)
  | 	at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:215)
  | 	... 4 more
  | Caused by: java.lang.ClassNotFoundException: int
  | 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  | 	at java.security.AccessController.doPrivileged(Native Method)
  | 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  | 	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  | 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
  | 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  | 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
  | 	at java.lang.Class.forName0(Native Method)
  | 	at java.lang.Class.forName(Class.java:247)
  | 	at org.jboss.util.stream.MarshalledValueInputStream.resolveClass(MarshalledValueInputStream.java:60)
  | 	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
  | 	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
  | 	at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
  | 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
  | 	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
  | 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
  | 	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
  | 	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
  | 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
  | 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
  | 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
  | 	at org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:549)
  | 	at org.jboss.cache.marshall.CacheMarshaller200.populateFromStream(CacheMarshaller200.java:759)
  | 	at org.jboss.cache.marshall.CacheMarshaller200.unmarshallHashMap(CacheMarshaller200.java:722)
  | 	at org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:580)
  | 	at org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:512)
  | 	at org.jboss.cache.marshall.CacheMarshaller200.objectFromObjectStream(CacheMarshaller200.java:140)
  | 	at org.jboss.cache.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:189)
  | 	at org.jboss.cache.marshall.VersionAwareMarshaller.objectFromStream(VersionAwareMarshaller.java:223)
  | 	at org.jboss.cache.loader.AdjListJDBCCacheLoader.unmarshall(AdjListJDBCCacheLoader.java:681)
  | 	at org.jboss.cache.loader.AdjListJDBCCacheLoader.loadNode(AdjListJDBCCacheLoader.java:374)
  | 	... 34 more
  | 

I found out that there is an old bug in suns ObjectInputStream.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4171142

Is there something I can configure to fix that? Or do I have to write my own Marshaller?

Thanks

Marco


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4171608#4171608

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4171608



More information about the jboss-user mailing list