The tricky part is how to enumerate multiple domains?

Perhaps this could be done by finding other lookup services globally via a DNS-SD directly by two new methods in LookupDiscovery?

public void addDomains(String[] domains) throws IOException {...}
public void removeDomains(String[] domains) throws IOException {...}

We might then have another class that enumerates the domains for us.

Then we have to figure out how to retrieve the remote ServiceItem's for each result for ServiceAttribute Entry comparisons.

This could require an array of smart proxies that each process their domain results? Putting the load and the risk back onto the client. Perhaps it would be best to perform most entry matches on the lookup server to reduce remote network bandwidth requirements.

Anyway I don't think I've got the interactions conceptualised properly, I doesn't feel right. Feel free to come up with ideas.

Cheers,

Peter.


Peter Firmstone wrote:
QCG - Sim IJskes wrote:
Peter Firmstone wrote:
Sim IJskes - QCG wrote:
When we have several reggies running on the internet, it would be
handy to find them via DNS SRV records. It would only create an extra layer of indirection. With DDNS zone updates one could build some kind of super registry, but i would prefer just to code it in java.
Sim, I hear you when you say you'd just prefer to code it in Java, has anyone any experience with dnsjava? Their website is so simple, I

Sorry, i was unclear. I think i was expressing that i prefer to code it in Jini services, instead of DDNS etc. This is only for the prototyping phase. I've noticed that i can work much faster when everything is java and nothing is unmodifiable. When it works, and behaves like expected then we can refactor it to fit the DDNS service, and put in a factory for the implementation to enable to switch between DDNS and the Java Ref Implementation. Much easier for testing and other bench activities. As we can code the ref. impl. in any form we want, we can also detect mismatches between the DDNS and what we need, early during development.

Gr. Sim


Ok , that's a good idea, I'm just trying to imagine the way it might work, the GlobalLookupService should be a smart proxy service that allows current jini services to be registered to DNS without requiring any changes to those services , perhaps my semantics are poor, a better name might be DNSLookupService that also implements ServiceRegistrar. This could be discovered by the usual Jini Multicast Request, Announcement or Unicast Discovery methods currently utilised by jini services. We could also have some kind of boot strap utility that finds DNSLookupService's using DNS-SD returning the URL's to LookupLocator instances when we need to avoid Jini Multicast Discovery or just use the exiting LookupLocator with a public URL (we might do this if we're roaming outside a Jini network). Later our DNSLookupService smart proxy implementations (after prototyping) are free to be re implemented or compared for improvement. The Marshalled Entry instances will have to be cached at the DNSLookupService Server at Registration as DNS-SD cannot support Entry's. I had in mind that the client do most of the compute work for comparing entry's rather than the server.

The Sequence might work like this:

  1. Jini Service discovers a LookupService registrar obtained through
     discovery.
  2. Jini Service uses the ServiceRegistrar to register its service.
  3. The LookupService registrar accepts the ServiceItem and caches it
     at the Server and updates the DNS-SD (one dns service record for
     each ServiceType interface)
  4. A client utilises a LookupService smart proxy to find the DNS-SD
     from the ServiceTemplate object passed in, we can utilise DNS-SD
     to retrieve a service based on a ServiceID or the ServiceType.
  5. Any entry matches are performed for the LookupService server by
     its smart proxy after first filtering the results aginst
     ServiceType and ServiceID, processed at the client. Althernately
     they could be matched at the server using marshalled object
     comparisons as Reggie currently does.

Initially, as you point out, we don't need to actually utilise DNS-SD to start with, we could prototype with a simple file behind the DNSLookupService registrar with similar semantics to DNS-SD until we've got a partial implementation working.

Cheers,

Peter.



Reply via email to