I haven't been aware of ObjectSpace Voyager. I just briefly looked at it and it seems like it is based on Java 1.x (ancient beast) and - as I understand it - the issues you describe are mainly caused by having only a single class name space (single ClassLoader).

But sending IMHO class bytes in-band is not necessary (nor good).

What is needed is:
1. Encoding dependency information in codebases (either in-band or by providing a downloadable descriptor) so that it is possible to recreate proper ClassLoader structure (hierarchy or rather graph - see below) on the client. 2. Provide non-hierarchical class loading to support arbitrary object graph deserialization (otherwise there is a problem with "diamond shaped" object graphs).

A separate issue is with the definition of codebase identity. I guess originally Jini designers wanted to avoid this issue and left it undefined... but it is unavoidable :)

Thanks,
Michal

Gregg Wonderly wrote:
That’s what I was suggesting.  The code works, but only if you put the required 
classes into codebases or class paths.  It’s not a problem with mobile code, 
it’s a problem with resolution of objects in mobile code references.  That’s 
why I mentioned ObjectSpace Voyager.  It automatically sent/sends class 
definitions with object graphs to the remote VM.

Gregg

On Jan 23, 2017, at 3:03 PM, Michał Kłeczek (XPro Sp. z o. 
o.)<michal.klec...@xpro.biz>  wrote:

The problem is that we only support (smart) proxies that reference only objects 
of classes from their own code base.
We do not support cases when a (smart) proxy wraps a (smart) proxy of another 
service (annotated with different codebase).

This precludes several scenarios such as for example "dynamic exporters" - 
exporters that are actually smart proxies.

Thanks,
Michal




Reply via email to