ClassNotFound During Deserialization(canot use even TCCL)
I have use cases where framework bundle does deserialization of the object.
Now the framework cannot import object which has to be deserialized. [as framework is generic]
How do i handle this case ?
Code:
2010-04-16 08:16:37.045] PacketDigestTaskManager TaskDelegator #18 System.err com.springsource.kernel.osgi.framework.ExtendedClassNotFoundException: com.pg.jms.messages.JMSUserProfile in KernelBundleClassLoader: [bundle=XXX_0.0.0]
[2010-04-16 08:16:37.046] PacketDigestTaskManager TaskDelegator #18 System.err at com.springsource.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:149)
[2010-04-16 08:16:37.047] PacketDigestTaskManager TaskDelegator #18 System.err at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
[2010-04-16 08:16:37.047] PacketDigestTaskManager TaskDelegator #18 System.err at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
[2010-04-16 08:16:37.047] PacketDigestTaskManager TaskDelegator #18 System.err at java.lang.Class.forName0(Native Method)
[2010-04-16 08:16:37.047] PacketDigestTaskManager TaskDelegator #18 System.err at java.lang.Class.forName(Class.java:247)
[2010-04-16 08:16:37.048] PacketDigestTaskManager TaskDelegator #18 System.err at java.io.ObjectInputStream.resolveC
This was caused by this piece of framework code
public static Object getObject(byte[] bArr){
try{
ByteArrayInputStream bais = new ByteArrayInputStream(bArr);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject(); - was failing
}catch(Exception err){
err.printStackTrace();
}
return null;
}
In the above case how can i use TCCL ?
Is there any way I can achieve TCCL visiblity during deserialization ?