lishunli / kryo

Automatically exported from code.google.com/p/kryo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to deserialize custom Object

GoogleCodeExporter opened this issue · comments

What steps will reproduce the problem?
1. Serialize object using Kryo, return byte[]
2. Cache the value using Ehcache
3. Retrieve from Ehcache and attempt deserialization

What is the expected output? What do you see instead?
Expect to see deserialized object, instead getting exception:
[code]
com.esotericsoftware.kryo.KryoException: Unable to find class: 
mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.CachingObject
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:138)
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:115)
    at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:656)
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:767)
    at mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.KryoSerializer.read(KryoSerializer.java:185)
    at mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.KryoSerializer.deserialize(KryoSerializer.java:126)
    at mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.MessageCache.deserializeCachedObject(MessageCache.java:260)
    at mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.MessageCache.getFromCache(MessageCache.java:73)
    at mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.MessageCache.getFromCacheViaSystemID(MessageCache.java:84)
    at mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.IP2MessageFilter.accept(IP2MessageFilter.java:129)
    at org.mule.routing.MessageFilter.accept(MessageFilter.java:89)
    at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:42)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:47)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:43)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:94)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:69)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:43)
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:105)
    at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55)
    at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:122)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:192)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:185)
    at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:20)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:34)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:18)
    at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:58)
    at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:48)
    at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:54)
    at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:44)
    at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:44)
    at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:52)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:32)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:17)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:113)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:34)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:184)
    at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:43)
    at org.mule.work.WorkerContext.run(WorkerContext.java:311)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: 
mil.ardec.hld_if.ifuicds.adapters.ip2.filtering.CachingObject
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:136)
    ... 42 more
[\code]

What version of the Kryo are you using?
2.22

Please provide any additional information below.
running in Mule ESB 3.4, I made sure that kryo jar (with latest ASM4.0) is 
ordered top in classpath, since mule runtime uses ASM3.1

I can create a simple java test to serialize/deserialize the same object 
multiple times and it works fine, this exception only happens when running 
inside of Mule ESB.

Original issue reported on code.google.com by andrew.d...@gmail.com on 22 Oct 2013 at 3:26