Hi,

I have a use-case where I'm deploying services to the grid where the service
implementation that's deployed to all ignite data nodes is really just a
skeleton that downloads implementation jar files from IGFS and initializes
the "real" service using a URLClassLoader (similar to what Storm, Flink, and
other systems do).

I'm able to do this by having a client node serialize the real service
implementation directly using the grid marshaller which gives me a byte
array, then in the skeleton service's init method, which gets started on a
data node, I use the marshaller again to deserialize the implementation
using the above mentioned URLClassLoader. I can do this using
Marshaller.unmarshal(byte[], ClassLoader).

This works great, but the problem I'm now running into is that the service
will create some caches which use classes that are only available in the
aforementioned URLClassLoader. This means whenever I try to read anything
from the cache I'll get a java.lang.ClassNotFoundException. It seems like
the issue is because there is no way to specify a ClassLoader to use from
the call-site (like in the Marshaller example above) and
BinaryObjectImpl.deserializeValue is not taking the thread context
classloader into account, it is only looking at the classloader specified in
IgniteConfiguration or it defaults to the system classloader.

Is there any way around this or do I have to resort to working with caches
using binary objects only?

Thanks!
-Nick



--
View this message in context: 
http://apache-ignite-users.70518.x6.nabble.com/BinaryObjectImpl-deserializeValue-with-specific-ClassLoader-tp12055.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Reply via email to