That subject should be RFC - Request for Comment.

I'm experimenting with Evolving ServiceRegistrar.

I know that evolving this interface is not a trivial undertaking and, previously change has been resisted for good reason.

There is a new Interface called StreamingServiceRegistrar,

This differs in the following way from ServiceRegistrar:

- EventRegistration notify(ServiceTemplate tmpl, int transitions, RemoteEventListener listener, MarshalledObject handback, long leaseDuration) throws RemoteException; + EventRegistration notify(MarshalledInstance handback, ServiceTemplate tmpl, int transitions, RemoteEventListener listener, long leaseDuration) throws RemoteException; + ObjectInput lookup(ServiceTemplate tmpl, boolean marshalled) throws RemoteException;

PortableServiceRegistrar is a common super interface for ServiceRegistrar and StreamingServiceRegistrar.

As you can see there is a replacement for notify, the handback's type has changed from MarshalledObject to MarshalledInstance.

The second new method allows objects to be received as a stream.

My comment from the source file:

   /**
    * Returns the service object (i.e., just ServiceItem.service) from an
* item matching the template. It makes the service object available via * the returned ObjectInput. *
    * If the returned object cannot be deserialized, it can be returned in
    * marshalled form as a MarshalledInstance.
    *
* Implementations of this interface should return the Objects in order of * their package implementation version, so that the number of ClassLoaders * are minimised and common packages can share code. This is intended to
    * be used with the new codebase services (TODO once implemented).
    *
    * ObjectInput should be an InputStream, in order to minimise
    * memory consumption requirements at the client.
    *
    * @param tmpl template to match
    * @param marshalled if true return objects in marshalled form.
    * @return an object input that represents a service that matches the
    * specified template
    * @throws java.rmi.RemoteException
    * @see MarshalledInstance
    * @since 2.2.0
    */

Reggie's existing proxy can be changed to support both interfaces, however Java CDC clients will require a new proxy that doesn't include MarshalledObject or any missing RMI components. This will require changes to Reggie's Registrar interface, used by reggie to communicate with it's proxy, not residing in the net.jini.* namespace, Registrar is safe to be altered. By altering Registrar, Reggie can support two different proxy's with the same internal communication interface. One proxy will have full functionality, the second will lack the ServiceRegistrar interface for Java CDC.

On that matter, has anyone extended IncomingUnicastResponse?

There are no classes in Apache River that extend this class, which has been designed for extension with protected fields. I want to change the fields to have private access.

N.B. This is an experiment at this stage, so these changes could be rolled back, however please feel free to participate and help improve.

Also, I need someone who has excellent Ant skills (hint hint JC if you've got some time) to assist me to run tests on different JVM versions, compile some release artifacts with different compiler options (don't want to compile release artifacts for the Java 5 platform, or greater, with -jsr14 )

Cheers,

Peter.



Peter Firmstone wrote:
Please see the following in the latest commit:

PortableServiceRegistrar - SuperInterface of ServiceRegistrar
StreamingServiceRegistrar - extends PortableServiceRegistrar.

http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/core/lookup/ http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/core/lookup/PortableServiceRegistrar.java?revision=935433&view=markup http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/core/lookup/StreamingServiceRegistrar.java?revision=935433&view=markup

All comments and suggestions welcome.

Best Regards,

Peter Firmstone.


Reply via email to