[
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