Gregg Wonderly wrote:
Exposing those details in a way that doesn't cause "downloading" or "unmarshalling" (which can lead to codebase contamination because of local class uses) is what is left to do.

There are updates visible at http://reef.dev.java.net which change the
MarshalledDataAccess interface to include

        public Map<String,Object> getFieldValues();

There is also work that happens in MarshalledInstance (for the service) and EntryRep (for attributes) to make them create this map as the objects are "Marshalled".

Thus if you wrote code such as

        public void discovered( ServiceRegistrar regs[] ) {
                for( ServiceRegistar reg: regs ) {
                        if( reg instanceof ServiceLookup ) {
                                doLookup( (ServiceLookup)reg );
                        } else {
                                ... normal ServiceRegistrar
                        }
                }
        }

        private void doLookup( ServiceLookup lu ) {
                RemoteIterator<ServiceEntry> it =
                        lu.lookup( template, Integer.MAX_VALUE );
                ...
        }

you could look at both ServiceDataAccess for the service proxy and each of the Entry objects to see the public, native valued fields names and values via ServiceDataAccess.getFieldValues.

If you've never looked at reef, go to the 'Documents and files' link on http://reef.dev.java.net and download the api docs and look at them. The reef.jar and reef-dl.jar files are there too, and you can swap out reggie.jar and reggie-dl.jar in our jini deployment to make use of this lookup server.

Again, it is backward compatible with any existing use of reggie (to the best of my ability to determine that compatibility) because it provides a ServiceRegistrar implementation. But, it adds to the proxy, the implementation of the ServiceLookup interface so that you can look for that to be implemented by ServiceRegistrar, and take advantage of the extra features.

I started on a ServiceDiscoveryManager like replacement that would hide the differences of the two lookup services and provide new features that only ServiceLookup would provide the "fast, no downloads" capabilities, but existing ServiceRegistrars would cause downloads and not be as scaleable.

Still haven't found time to finish that, but if there is real interest in this, than I might be more motivated.

Gregg Wonderly

Reply via email to