A Service Diagnostics service and graphical WebConsole plugin
-------------------------------------------------------------

                 Key: FELIX-3128
                 URL: https://issues.apache.org/jira/browse/FELIX-3128
             Project: Felix
          Issue Type: New Feature
          Components: Web Console
            Reporter: Arjun Panday
            Priority: Minor


Hi all,

I'd like to suggest/contribute the attached project.

The project aims at easing diagnostics of OSGi services and finding about 
missing dependencies.

Typically in a large system with many cascading dependencies managed by 
different trackers such as DeclarativeService, DependencyManager or others, 
tracking the root cause of a top level service not being started can become 
very cumbersome. When building service oriented architectures, it is often the 
case that a single missing requirement will lock a full stack of services, but 
to find that one requirement is like finding a needle in a haystack!

The basic idea here is to ask each dependency manager instance about its 
unresolved dependencies, merge all answers and filter the result to keep only 
the root causes.

Typically, if A depends on B which depends on C which depends on D, and D is 
nowhere to be found, I need only show the "C -> D" missing requirement; if D is 
resolved, then the whole stack is unlocked.

Similarly, if D is known by another dependency management system, but 
unregistered because it depends on E which is missing, then only the "D -> E" 
requirement is relevant.

The proposed code is composed as follows:

* servicediagnostics: the API package. It holds the main service interface as 
well as the plugin interface, to extend to other dependency management systems

* servicediagnostics.impl: the implementation package. It contains plugins 
implementations for org.apache.felix.scr and 
org.apache.felix.dependencymanager, as well as the main service implementation.

* servicediagnostics.webconsole: a Felix WebConsole plugin that displays a 
graphical view of the diagnostics result. Alternatively it can also show a 
graph of all services currently registered in the service registry and the 
bundles using them. See Screenshot-notavail.png and Screenshot-all.png. Using 
the Raphael graffle library (http://raphaeljs.com/graffle.html) allows for nice 
interactive views of the service registry. 

The attached package is provided as a maven project, along with a sample 
runner. Simply untar the files, run mvn install and then run.sh. 
Follow the Readme file  for details.

It is not perfect and still needs some improvements (in handling service 
filters for instance) but as such it is already quite useful. 

I hope you'll like the idea. 
Regards,
Arjun

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to