The other thing I'm working on is a PackageVersion annotation, using the implementation version and package name from the Java Package Version spec, so developers can version their proxy's allowing sharing of compatible bytecode for reduced codebase downloads.

I'm hoping that these things combined will assist to enable lookup over the internet.

Peter Firmstone wrote:
Gregg Wonderly wrote:
Many of my service APIs have streaming sockets needed for I/O based activities. For example, remote event monitoring happens through an ObjectInputStream that is proxied through the smart proxy on the client to a socket end point that the proxy construction provided the details of on the server.

This too is interesting Gregg, I've done something similar with the StreamServiceRegistrar; I've created a new interface called ResultStream, to mimic an ObjectInputStream, which is returned from lookup. The idea is to provide a simple interface and minimise network requests by allowing a smart proxy implementation to request and cache larger chunks. The main advantage of the Stream like behaviour, is to enable incremental filtering stages and delay unmarshalling of proxy's until after initial Entry filtering, then to control the progress of unmarshalling, so your only dealing with one proxy at at time. Further filtering can be performed after each unmarshalling, such as checking method constraints. Any unsuitable proxy's can be thrown away before the next is unmarshalled, allowing garbage collection to clean as you go and prevent memory exhaustion.

The StreamServiceRegistrar lookup method also takes parameters for Entry classes that are to be unmarshalled for initial filtering, allowing delayed unmarshalling of uninteresting entries.

Unmarshalling will still be performed by the Registrar implementation, the client just gets to chose when it happens.

Cheers,

Peter.


Reply via email to