Finding the root cause of problems with OSGi declarative services components.
See below for a hands on example in Apache Karaf.
For quickly checking for a root cause of a problem with a declarative services component there is also a handy command.
rootcause <ds-compoment-name>
It prints the top level status of a DS component as well as the tree of DS unsatisfied components it depends on together with their status.
This is a sample output from the DSRootCause tests. It shows the cause of a component that depends on some other components. The root cause of CompWithMissingRef2 not being satisfied is that CompWithMissingConfig is missing its mandatory config.
Component CompWithMissingRef2 unsatisfied references ref other interface CompWithMissingRef Component CompWithMissingRef unsatisfied references ref other interface CompWithMissingConfig Component CompWithMissingConfig missing config on pid [CompWithMissingConfig]
Download, install and run Apache Karaf 4.1.x. Inside the karaf shell execute this:
feature:install scr http-whiteboard config:property-set --pid ServicesCheck services.list org.osgi.service.log.LogService config:property-set --pid SystemReadyServlet osgi.http.whiteboard.context.select "(osgi.http.whiteboard.context.name=default)" install -s mvn:org.apache.felix/org.apache.felix.systemready/0.1.0-SNAPSHOT
Point your browser to http://localhost:8181/system/console/ready .
Check the status of a DS component:
rootcause SystemReadyMonitor Component SystemReadyMonitor statisfied
Try this with some of your own components.