Skip to main content

[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




Back to the top