[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ecf-dev] plan for remote services admin

 Hi Folks,

I've begun work on the OSGI 4.2 remote service admin specification (chap 122)....and I wanted to throw out a short proposed plan for further coordinated work on the implementation. Please comment on the plan...and if you are able/willing to contribute to some part of this, please make it known on the relevant bug (see below).

a) The plan bug for this enhancement is [1]. Let's use this bug (as well as this mailing list) to coordinate further work on the ECF remote service admin implmentation.

b) The OSGi 4.2 spec is available here from the OSGi alliance [2]. The remote services admin spec (chap 122) is part of the Enterprise Experts group.

c) There are OSGi API classes that are part of the spec, and I've submitted a CQ for use/redistribution of these classes. Happily the CQ for our use is a piggy-back CQ, and has already been approved [3]. Just for everyone's reference, the spec also has a piggyback CQ that's been approved as well [4].

d) I've committed a new project to hold these OSGi classes for our usage/ecf impl development...it's now here
host: dev.eclipse.org
cvsroot: /cvsroot/rt
path: org.eclipse.ecf/osgi/bundles
project: org.eclipse.osgi.services.remoteserviceadmin

NOTE: These are classes from the OSGi alliance...they are not ECF classes...and we cannot modify them (the src is actually in src.zip...and the src can be accessed by opening the associated class file in the Eclipse java editor).

e) I've created the following new project and started the implementation of remote service admin. The implementation is just beginning and I've so far focused on just implementing the 'discovery' part of remote service admin (i.e. implementing EndpointListener with the ECF discovery API/IServiceListener). Even this is not completed yet, but it's pretty close at this point.

The next steps are to

f) Finish implementation of the discovery portion. Support needs to be added to a) use the Equinox eventmgr to asynchronously (with queue/thread) call the registered EndpointListeners; b) on startup of the ECF remote services admin bundle to call any previously registered event listeners with any extant EndpointDescriptions; c) support the modification of the filter service property for EndpointListeners (according to spec the filter property on EndpointListeners can be modified, and this changes the matching behavior for notification of those EndpointListeners).

g) Begin the implementation of the Topology manager and the Remote Services Admin service (defined by the RemoteServiceAdmin OSGi interface). These two pieces will be where integration with the existing ECF remote services implementation (discovery and distribution) will be necessary. In most cases it will be straightforward to have the functions in the current ECF remote services implementation be replaced by and use the API classes from the remote service specification. For example, in the current distribution implementation we have the equivalent of this function of remote services admin (org.osgi.service.remoteserviceadmin.RemoteServiceAdmin service interface class):

Collection<ExportRegistration> exportService(ServiceReference reference, Map<String, Object> properties);

Now that these classes are available (ExportRegistration) we will be able to make implementations (and/or subclasses) that represent the ExportRegistration created by exporting a service via ECF remote services API.

So in general this will be an exercise in taking the OSGi API classes, and creating ECF-specific implementations that take the existing distribution code and perform the appropriate ECF operations (e.g. exporting/distributing a service via the appropriate remote service containers).

That's the basic plan...it's frankly not a huge thing, but it will take some coordination/effort by several people over the next few weeks. Please let all know what you think via the mailing list...and register your own interest and ability to participate in the implementation effort, integration, testing, documentation, etc by adding yourself to the bug [1].



[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=324215
[2] http://www.osgi.org/Download/Release4V42
[3] http://dev.eclipse.org/ipzilla/show_bug.cgi?id=4470
[4] http://dev.eclipse.org/ipzilla/show_bug.cgi?id=4471