Hi,

Have a look at the latest commit, while I haven't enabled anything other than exact matching for Entry's in Registrar, I have created some interfaces that:

   * Allows unmarshalling to be delayed by the client.
   * Allow selected Entry's to be unmarshalled for filtering, see
     MarshalledServiceItem, an abstract class that extends ServiceItem,
     see also StreamServiceRegistrar.
   * Created a new class that utilises multiple combinations or chains
     of  ServiceItemFilter filters, so these might be combined in a
     selectable user interface with AND OR logic.  Developers who have
     created ServiceItemFilter's over the years will be able to utilise
     them in new ways.  Filters that only compare Entries can be
     utilised prior to unmarshalling, those that require access to the
     proxy to apply MethodConstraints filters or Proxy Verification
     filters can be applied after unmarshalling.

I intend to enable very large result sets to be incrementally returned while also allowing filters and comparisons based on Entry's to be executed locally prior to unmarshalling the service, so that unmarshalling is reduced to the utmost minimum.

The existing Registrar unmarshalling semantics and proxy verification etc can be preserved, without exposing the implementation in River's Jini public API.

I would like comments from the Original Authors (if possible & time permitting), so that I can fully understand any implications of these changes.

These changes are intended to make it possible to implement lookup globally. Result sets can be narrowed down significantly using filtering before unmarshalling and operations can be performed on batches of lookup results (services) that can be discarded after operation, allowing Garbage Collection to clean up de-referenced Class files and ClassLoaders during ongoing lookup result processing, while removing unnecessary codebase downloads. I'd also like to further reduce codebase downloads by allowing packages and codebases to be shared based on package versioning. Security implications are that a codebase would have to be signed by a trusted party, treated separately from the service, which might need to authenticate itself if required by the client, I don't know how to enable the Service to specify a constraint on the signer of the downloaded codebase if not originating from the service, any ideas?

Note that this implementation is intended to not break backward compatibility.

Best Regards,

Peter Firmstone.

Reply via email to