| |
| |
| h1. Developer commands |
| |
| Karaf provides a set of commands specific for developer use. |
| |
| They allow for getting detailed detailed information about the Karaf instance and the applications running in them. |
| |
| h2. Diagnostic dump command |
| |
| Karaf provides a {{dev:create-dump}} command which creates a dump files containing diagnostic information. The dumps can be |
| packaged in a zip archive (default) or directly into a given directory. |
| |
| {code} |
| karaf@root> dev:create-dump |
| Diagnostic dump created. |
| {code} |
| |
| The previous command generates a zip archive in the KARAF_HOME (by default the name is the generation timestamp). |
| |
| The following dumps are available in the zip archive: |
| * {{features.txt}} provides an overview of the features. It means: |
| ** the repository list |
| ** the feature list including bundles URL |
| * {{bundles.txt}} provides an overview of the installed bundles, with the ID and the state of each bundle. |
| * {{threads.txt}} provides a complete threads dump. It describe all threads running in Karaf and their current state (blocked, |
| waiting, etc) with the associated class hierarchy. |
| |
| These dumps are very helpful when you would like to take a snapshot of a current Karaf running instance. |
| |
| h2. Dynamic import |
| |
| The {{dev:dynamic-import}} command allows you to enable or disable the dynamic import of a given bundle: |
| |
| {code} |
| karaf@root> dev:dynamic-import 41 |
| Enabling dynamic imports on bundle org.apache.karaf.shell.config [41] |
| {code} |
| |
| h2. OSGi framework |
| |
| The {{dev:framework}} command shows you the current OSGi framework in use, and enables debugging of the underlying OSGi framework. |
| |
| {code} |
| karaf@root> dev:framework |
| Current OSGi framework is Felix |
| karaf@root> dev:framework -debug |
| Enabling debug for OSGi framework (Felix) |
| - set felix.log.level=4 in etc/config.properties |
| |
| Restart Karaf now to enable Felix debug logging |
| karaf@root> dev:framework -nodebug |
| Disabling debug for OSGi framework (Felix) |
| - removed felix.log.level from etc/config.properties |
| |
| Restart Karaf now to disable Felix debug logging |
| {code} |
| |
| h2. Print stack trace |
| |
| The {{dev:print-stack-traces}} command prints the full stack trace in the console when the execution of a command |
| throws an exception. |
| |
| You can enable or disable this behavior by passing true (to enable) or false (to disable) on the command on the fly: |
| |
| {code} |
| karaf@root> dev:print-stack-traces |
| karaf@root> osgi:start |
| Error executing command osgi:start: argument ids is required |
| org.apache.felix.gogo.commands.CommandException: Argument ids is required |
| at org.apache.felix.gogo.commands.basic.DefaultActionPreparator.prepare(DefaultActionPreparator.java:284) |
| at org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:34) |
| at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78) |
| at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474) |
| at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400) |
| at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108) |
| at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183) |
| at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120) |
| at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:79) |
| at org.apache.karaf.shell.console.jline.Console.run(Console.java:180) |
| at java.lang.Thread.run(Thread.java:619) |
| karaf@root> dev:print-stack-traces false |
| karaf@root> osgi:start |
| Error executing command osgi:start: argument ids is required |
| {code} |
| |
| h2. Karaf restart |
| |
| The {{dev:restart}} command allows you to restart the running Karaf instance: |
| |
| {code} |
| karaf@root> dev:restart |
| karaf@root> |
| __ __ ____ |
| / //_/____ __________ _/ __/ |
| / ,< / __ `/ ___/ __ `/ /_ |
| / /| |/ /_/ / / / /_/ / __/ |
| /_/ |_|\__,_/_/ \__,_/_/ |
| |
| Apache Karaf (2.1.99-SNAPSHOT) |
| |
| Hit '<tab>' for a list of available commands |
| and '[cmd] --help' for help on a specific command. |
| Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown Karaf. |
| |
| karaf@root> |
| {code} |
| |
| h2. Bundle tree |
| |
| The {{dev:show-tree}} command shows the bundle dependency tree based on the wiring information of a given single bundle ID. |
| |
| {code} |
| karaf@root> dev:show-tree 40 |
| Bundle org.apache.karaf.diagnostic.command [40] is currently ACTIVE |
| |
| org.apache.karaf.diagnostic.command [40] |
| +- org.apache.aries.blueprint [10] |
| | +- org.apache.aries.util [8] |
| | +- org.apache.felix.configadmin [5] |
| | +- org.apache.aries.proxy [7] |
| | | +- org.apache.aries.util [8] |
| | | +- org.apache.servicemix.bundles.asm [9] |
| | | +- org.ops4j.pax.logging.pax-logging-api [3] |
| | +- org.ops4j.pax.logging.pax-logging-api [3] |
| +- org.apache.karaf.shell.console [22] |
| | +- org.apache.aries.blueprint [10] |
| | +- org.ops4j.pax.logging.pax-logging-api [3] |
| | +- org.apache.karaf.jaas.modules [13] |
| | +- org.apache.aries.blueprint [10] |
| | +- org.apache.felix.configadmin [5] |
| | +- org.apache.karaf.jaas.config [29] |
| | | +- org.apache.aries.blueprint [10] |
| | | +- org.ops4j.pax.logging.pax-logging-api [3] |
| | +- org.ops4j.pax.logging.pax-logging-api [3] |
| +- org.apache.karaf.diagnostic.core [23] |
| {code} |
| |
| h2. Watching and updating bundle |
| |
| The {{dev:watch}} watches and updates bundles. It's especially helpful in development mode. |
| |
| It allows you to configure a set of URLs that will be monitored. All bundles whose location matches the given URL will be |
| automatically updated. This avoids needing to manually update the bundles or even copy the bundles to the system folder. |
| |
| Note that only Maven based URLs and Maven SNAPSHOTs will actually be updated automatically, so if you do: |
| |
| {code} |
| karaf@root> dev:watch * |
| {code} |
| |
| it will actually monitor all bundles that have a location matching mvn:* that have '-SNAPSHOT' in their URL. |