Hello All, 

 

We create a Cache client (Proxy) using a classloader CL01. 

Then we load dynamically, classes using another classLoader CL02, because we
don't know the class to be put in cache in advance.

We try to do a PUT and then we get a classical ClassNotFound (see below) 

 

When we do a Put, we can see the input data in the region. 

This means that the object has been correctly serialized and put in the
cache. 

But when we get the old value returned by the PUT, our Java application is
not able to deserialize the object because CL01 and CL02 are different.
Event if CL02 inherites from CL01 that does not work.

We cannot force Geode to use CL02 and we cannot load new jars using the
CL01. 

 

If someone has some idea to solve this issue, she/he will be more than
welcomed 

 

 

java.lang.ClassNotFoundException: pymmaapi.definitiongeode.Person

        at
com.sun.jbi.framework.CustomClassLoader.loadClass(CustomClassLoader.java:281
)

        at
com.sun.jbi.framework.CustomClassLoader.loadClass(CustomClassLoader.java:133
)

        at java.lang.Class.forName0(Native Method)

        at java.lang.Class.forName(Class.java:348)

        at
java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:677)

        at
org.apache.geode.internal.InternalDataSerializer$DSObjectInputStream.resolve
Class(InternalDataSerializer.java:3605)

        at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1826)

        at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1713)

        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2000)

        at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)

        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)

        at
org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDat
aSerializer.java:2992)

        at
org.apache.geode.DataSerializer.readObject(DataSerializer.java:2897)

        at
org.apache.geode.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:99
)

        at
org.apache.geode.internal.cache.tier.sockets.CacheServerHelper.deserialize(C
acheServerHelper.java:76)

        at
org.apache.geode.internal.cache.tier.sockets.Part.getObject(Part.java:268)

        at
org.apache.geode.internal.cache.tier.sockets.Part.getObject(Part.java:276)

        at
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.handleUpdate
(CacheClientUpdater.java:718)

        at
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.processMessa
ges(CacheClientUpdater.java:1702)

        at
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.run(CacheCli
entUpdater.java:455)

 

 

Best regards

 

Paul 

 

Reply via email to