Hi, for feature wishes use Jira [1].
Now, comp I don't know of but looks a lot like you want some DS command here, we have the scr:* commands for this. For details you might also want to look at the bundle:info it should show you why a service isn't fully available. We have more then 200 commands available, I think there should be something available that actually fits your needs ;) [2] regards, Achim [1] - https://issues.apache.org/jira/browse/KARAF/ [2] - http://karaf.apache.org/manual/latest/commands/commands.html 2014-03-31 12:20 GMT+02:00 SteffeC <[email protected]>: > Hi, > > Sorry for slow (and long) reply... > > ------------------------------------------------- NATIVE > > ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > *This is what I get if I use "ls", "list", "comp" and "ls -c" in native > OSGi > container:* > > osgi> ls *(SteffeC: Same for "list", lists the unsatisfied services and is > very useful.)* > All Components: > ID State Component Name Located in > bundle > 1 Active MyComponent1 a.b.c.d.1 > (bid=13) > 2 Active MyComponent2 a.b.c.d.2 > (bid=17) > ... > *8 Unsatisfied MyComponent3 a.b.c.d.3 > (bid=26)* > ... > > > osgi> comp 8 *(SteffeC: This command gives useful error information about > a > specific service.)* > Component[ > name = MyComponent3 > activate = activate > deactivate = deactivate > modified = > configuration-policy = require > factory = null > autoenable = true > immediate = true > implementation = MyComponent3 > *state = Unsatisfied* > properties = {service.pid= MyComponent3, > MyComponent3=localhost:12001} > serviceFactory = false > serviceInterface = [MyComponent3] > references = null > located in bundle = MyComponent3 [26] > ] > Dynamic information : > The component is satisfied > All component references are satisfied > Component configurations : > Configuration properties: > objectClass = String[MyComponent3] > service.pid = MyComponent3 > component.name = MyComponent3 > component.id = 93 > Instances: > *No instances were created because: Can not activate instance of > component > MyComponent3. The activation throws: java.lang.IllegalArgumentException: > Cannot instantiate MailboxType [akka.dispatch.UnboundedMailbox], defined in > [akka.actor.default-mailbox], make sure it has a public constructor with > [akka.actor.ActorSystem.Settings, com.typesafe.config.Config] parameters* > > > osgi> ls -c 26 *(SteffeC: This command gives useful error information about > all services in a bundle.)* > Components in bundle MyComponent3: > ID Component details > 8 Component[ > name = MyComponent3 > activate = activate > deactivate = deactivate > modified = > configuration-policy = require > factory = null > autoenable = true > immediate = true > implementation = MyComponent3 > *state = Unsatisfied* > properties = {service.pid= MyComponent3, > MyComponent3=localhost:12001} > serviceFactory = false > serviceInterface = [MyComponent3] > references = null > located in bundle = MyComponent3 [26] > ] > Dynamic information : > The component is satisfied > All component references are satisfied > Component configurations : > Configuration properties: > objectClass = String[MyComponent3] > service.pid = MyComponent3 > component.name = MyComponent3 > component.id = 93 > Instances: > *No instances were created because: Can not activate instance of > component MyComponent3. The activation throws: > java.lang.IllegalArgumentException: Cannot instantiate MailboxType > [akka.dispatch.UnboundedMailbox], defined in [akka.actor.default-mailbox], > make sure it has a public constructor with > [akka.actor.ActorSystem.Settings, > com.typesafe.config.Config] parameters* > > > osgi> comp 68 *(SteffeC: This is an example of other useful error > information that the native command gives on a specific service)* > Component[ > name = MyComponent10 > activate = activate > deactivate = deactivate > modified = > configuration-policy = optional > factory = null > autoenable = true > immediate = true > implementation = MyComponent10 > *state = Unsatisfied* > properties = {service.pid= MyComponent10} > serviceFactory = false > serviceInterface = [MyComponent10] > references = { > Reference[name = MyReference1, interface = MyReference1, > policy = static, cardinality = 1..1, target = null, bind = bind, unbind = > unbind] > Reference[name = MyReference2, interface = MyReference2, > policy = static, cardinality = 1..1, target = null, bind = bind, unbind = > unbind] > Reference[name = MyReference3, interface = MyReference3, > policy = static, cardinality = 1..1, target = null, bind = bind, unbind = > unbind] > Reference[name = MyReference4, interface = MyReference4, > policy = static, cardinality = 1..1, target = null, bind = bind, unbind = > unbind] > Reference[name = MyReference5, interface = MyReference5, > policy = static, cardinality = 1..1, target = null, bind = > bindEventProvider, unbind = unbindEventProvider] > } > located in bundle = MyComponent10 [142] > ] > Dynamic information : > **The component is NOT satisfied > The following references are not satisfied: > Reference[name = MyReference2, interface = MyReference2, policy = > static, cardinality = 1..1, target = null, bind = bind, unbind = unbind] > Reference[name = MyReference5, MyReference5, policy = static, > cardinality = 1..1, target = null, bind = bind, unbind = unbind]* > Component configurations : > Configuration properties: > objectClass = String[MyComponent10] > service.pid = MyComponent10 > component.name = MyComponent10 > component.id = 63 > Instances: > > > *It is the bold marked information in "comp" and "ls -c" that is very > useful > during development when trying to find out what/why services are not > satisfied...* > > ------------------------------------------------------- KARAF > > ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > *This is what I get when using "services:list", "ls", "list", "comp" and > "ls > -c" in Karaf 2.3.2:* > > karaf> services:list *(SteffeC: This command failed in Karaf container.)* > Command not found: services:list > > > karaf> ls *(SteffeC: The output from this command is different in Karaf. > Especially it doesn't display the service "State".)* > OSGi System Bundle (0) provides: > -------------------------------- > org.osgi.service.packageadmin.PackageAdmin > org.osgi.service.permissionadmin.PermissionAdmin, > org.osgi.service.condpermadmin.ConditionalPermissionAdmin > org.osgi.service.startlevel.StartLevel > org.eclipse.osgi.service.debug.DebugOptions > java.lang.ClassLoader > ... > org.eclipse.osgi.service.security.TrustEngine > org.eclipse.osgi.signedcontent.SignedContentFactory > org.eclipse.osgi.internal.provisional.verifier.CertificateVerifierFactory > org.osgi.service.framework.CompositeBundleFactory > > OPS4J Pax Url - mvn: (1) provides: > ---------------------------------- > org.osgi.service.cm.ManagedService > org.osgi.service.url.URLStreamHandlerService > > OPS4J Pax Url - wrap: (2) provides: > ----------------------------------- > ... > > > karaf> list *(SteffeC: The command gives information about the bundles > instead of the services in Karaf container?)* > START LEVEL 100 , List Threshold: 50 > ID State Blueprint Level Name > ... > [ 54] [Active ] [ ] [ 80] OPS4J Base - Lang (1.4.0) > [ 55] [Active ] [ ] [ 80] OPS4J Base - Monitors (1.4.0) > [ 56] [Active ] [ ] [ 80] OPS4J Base - Net (1.4.0) > [ 57] [Active ] [ ] [ 80] OPS4J Base - Store (1.4.0) > [ 58] [Active ] [ ] [ 80] OPS4J Base - IO (1.4.0) > [ 59] [Active ] [ ] [ 80] OPS4J Base - Service Provider > Access (1.4.0) > ... > > karaf> comp 143 *(SteffeC: This command failed in Karaf container. The > detailed information about a service is very useful during development.)* > Invalid component ID! > > > karaf> ls -c 45 *(SteffeC: This command failed in Karaf container. The > detailed information about a service is very useful during development.)* > Error executing command osgi:ls undefined option -c > > > *I was not aware of "src", so installed that feature but it only covers the > native "ls" output command.* > > karaf> features:install scr > > > karaf> help > COMMANDS > ... > scr:activate Activates a Component for the > given name > scr:deactivate Deactivates a Component for the > given name > scr:details Displays a list of available > components *(SteffeC: Is this slogan wrong? Same as for scr:list.)* > scr:list Displays a list of available > components > ... > > > karaf> scr:list *(SteffeC: The output from this command gives almost the > same information as "ls" in native container and most important it displays > the service "State".)* > ID State Component Name > ... > [3 ] [ACTIVE ] MyComponent1 > [17 ] [ACTIVE ] MyComponent2 > *[7 ] [UNSATISFIED ] MyComponent3* > ... > > > karaf> scr:details MyComponent3 *(SteffeC: The output from this command > doesn't give any useful information about why the service is unsatisfied? > The "comp" and "ls -c" commands in native container gives useful > information > about this.)* > Component Details > Name : MyComponent3 > State : UNSATISFIED > Properties : > service.pid= MyComponent3 > component.name= MyComponent3 > component.id=7 > References > > *I still don't know how to display the detailed service information in > Karaf > that the native "comp" and "ls -c" command generates.* > > > ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > When using the available Karaf commands, I can't see the important error > information that is displayed in native OSGi container when using "comp" > and "ls -c" commands. > > Am I using the commands above incorrectly or are there other commands I > should use instead? > > Is it possible to use "webconsole-scr" to get the error information that > native "comp" and "ls -c" displays (have not tried it yet)? > > If the service information can't be displayed with the existing commands in > Karaf, is it possible to "wish" for such commands? Where do I do that? > > Regards > StefanC > > > > > -- > View this message in context: > http://karaf.922171.n3.nabble.com/How-see-status-of-services-and-why-they-are-NOT-satisfied-in-Karaf-container-tp4032359p4032493.html > Sent from the Karaf - User mailing list archive at Nabble.com. > -- Apache Karaf <http://karaf.apache.org/> Committer & PMC OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer & Project Lead blog <http://notizblog.nierbeck.de/> Software Architect / Project Manager / Scrum Master
