[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [ecf-dev] OSGi Remote Management Services | 
Hi Folks,
To support my company's OSG+ECF Remote Services-based web server I've 
been creating some 'Remote Management' Services.   What are 'Remote 
Management' Services?  To explain by example, here are the four 
existing/implemented framework services from the new github repo [1]:
org.eclipse.ecf.mgmt.framework.IFrameworkManager - Introspection about 
framework, get/set start level, etc.
IBundleManager - Introspection about bundles, start/stop bundles, 
install/uninstall/update bundles, etc
IServiceManager - Introspection about running services
IWiringManager - Introspection about the bundle wiring/capabilities in a 
running framework
Some of you probably are familiar with the OSGI R6 'Data Transfer 
Objects -- DTOs'.   You might ask:  what's different about the above 
from DTO's?  The answer is that the above services are defined such that 
they can be trivially exported as OSGi Remote Services by ECF's Remote 
Services implementation (any provider), and therefore made available for 
remote management of any OSGi R5+ framework (Equinix, Concierge, Felix, 
Karaf, whatever).   This means, for example that service method 
parameters and return values for the above services are all Serializable 
and so can easily be remoted by ECF Remote Services  In fact, if you 
look at the implementation of the above services in the 
org.eclipse.ecf.mgmt.framework.host bundle, you will see that the 
implementation of what I call 'management transfer objects...MTOs' which 
are Serializable and *use* the OSGi DTOs to populate the relevant 
BundleMTO, ServiceMTO, WiringMTO, and FrameworkMTO instances...but 
that's pretty much an implementation detail.
There are a number of use cases for these (remote) services, but one 
that I would like to see is to use these services in the Remote Services 
Tooling effort [2].   Then, any such tooling would work on either a 
local OSGi framework (Eclipse), and/or with a remote framework 
(Eclipse/Equinox server, Karaf, Concierge, whatever).
The bundles above are quite small in code size, as with OSGi R6 most of 
the code is actually provided by the Framework (DTOs, etc).
One nice thing that comes for 'free' using ECF Remote Services: Each of 
the above service types has an asynchronous service type...e.g. 
IBundleManager -> IBundleManagerAsync.  With ECF's asynchronous proxy 
support, on java8 any remote service client can use these async API 
(and/or the sync versions) and be guaranteed that the remote call will 
not block (which is particularly important for the UI/SWT thread for 
tooling).
My plan is to continue working on this work at [1].  I welcome any 
contributions and/or collaboration for those interested.   Further, I'm 
planning to add support for the OSGI DS (Service Component Runtime) and 
perhaps other subsystems.  For SCR, this would/will allow remote 
management of DS implementations...e.g. introspection about service 
components, enable/disable of those components, dependency/ref info, 
satisfied/unsatisfied info, info about association with OSGi services, 
etc., etc. all of which could be presented and/or manipulated.
Thanks,
Scott
[1] https://github.com/ECF/OSGIRemoteManagement
[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=454610