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.
