You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/07/01 21:43:38 UTC

svn commit: r1688715 [21/23] - in /karaf/site/production/manual/latest: ./ commands/ developers-guide/ users-guide/

Modified: karaf/site/production/manual/latest/users-guide/log.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/users-guide/log.html?rev=1688715&r1=1688714&r2=1688715&view=diff
==============================================================================
--- karaf/site/production/manual/latest/users-guide/log.html (original)
+++ karaf/site/production/manual/latest/users-guide/log.html Wed Jul  1 19:43:35 2015
@@ -8,7 +8,7 @@
     <link href="../css/style.css" rel="stylesheet" type="text/css"/>
     <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
     <title>
-      Apache Karaf 3.0.3-SNAPSHOT Guides
+      Apache Karaf 4.0.1-SNAPSHOT Guides
     </title>
   </head>
   <body>
@@ -152,18 +152,18 @@ log4j.appender.sift.appender.append=true
 log4j.rootLogger=INFO, out, stdout, osgi:*
 </pre><p>The <tt>out</tt> appender is the default one. It's rolling file appender that maintain and rotate 10 log files of 1MB each.<br/>The log files are located in <tt>data/log/karaf.log</tt> by default.</p><p>The <tt>sift</tt> appender is not enabled by default. This appender allows you to have one log file per deployed bundle.<br/>By default, the log file name format uses the bundle symbolic name (in the <tt>data/log</tt> folder).</p><p>You can edit this file at runtime: any change will be reloaded and be effective immediately (no need to restart Apache Karaf).</p><p>Another configuration file is used by Apache Karaf: <tt>etc/org.apache.karaf.log.cfg</tt>. This files configures the Log Service<br/>used by the log commands (see later).</p><h2 id="Commands">Commands</h2><p>Instead of changing the <tt>etc/org.ops4j.pax.logging.cfg</tt> file, Apache Karaf provides a set of commands allowing to<br/>dynamically change the log configuration and see the log content:</p><h3 id="logclear"
 ><tt>log:clear</tt></h3><p>The <tt>log:clear</tt> command clears the log entries.</p><h3 id="logdisplay"><tt>log:display</tt></h3><p>The <tt>log:display</tt> command displays the log entries.</p><p>By default, it displays the log entries of the <tt>rootLogger</tt>:</p><pre>
 karaf@root()> log:display
-2013-11-29 19:12:46,208 | INFO  | FelixStartLevel  | SecurityUtils                    | 16 - org.apache.sshd.core - 0.9.0 | BouncyCastle not registered, using the default JCE provider
-2013-11-29 19:12:47,368 | INFO  | FelixStartLevel  | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Starting JMX OSGi agent
+2015-07-01 19:12:46,208 | INFO  | FelixStartLevel  | SecurityUtils                    | 16 - org.apache.sshd.core - 0.12.0 | BouncyCastle not registered, using the default JCE provider
+2015-07-01 19:12:47,368 | INFO  | FelixStartLevel  | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Starting JMX OSGi agent
 </pre><p>You can also display the log entries from a specific logger, using the <tt>logger</tt> argument:</p><pre>
 karaf@root()> log:display ssh
-2013-11-29 19:12:46,208 | INFO  | FelixStartLevel  | SecurityUtils                    | 16 - org.apache.sshd.core - 0.9.0 | BouncyCastle not registered, using the default JCE provider
+2015-07-01 19:12:46,208 | INFO  | FelixStartLevel  | SecurityUtils                    | 16 - org.apache.sshd.core - 0.12.0 | BouncyCastle not registered, using the default JCE provider
 </pre><p>By default, all log entries will be displayed. It could be very long if your Apache Karaf container is running since a long time.<br/>You can limit the number of entries to display using the <tt>-n</tt> option:</p><pre>
 karaf@root()> log:display -n 5
-2013-11-30 06:53:24,143 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.BundleStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=bundleState,version=1.7,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
-2013-11-30 06:53:24,150 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.PackageStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=packageState,version=1.5,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
-2013-11-30 06:53:24,150 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.ServiceStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=serviceState,version=1.7,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
-2013-11-30 06:53:24,152 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.wiring.BundleWiringStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=wiringState,version=1.1,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
-2013-11-30 06:53:24,530 | INFO  | FelixStartLevel  | RegionsPersistenceImpl           | 78 - org.apache.karaf.region.persist - 3.0.0 | Loading region digraph persistence
+2015-07-01 06:53:24,143 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.BundleStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=bundleState,version=1.7,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
+2015-07-01 06:53:24,150 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.PackageStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=packageState,version=1.5,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
+2015-07-01 06:53:24,150 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.ServiceStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=serviceState,version=1.7,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
+2015-07-01 06:53:24,152 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.wiring.BundleWiringStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=wiringState,version=1.1,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1
+2015-07-01 06:53:24,501 | INFO  | FelixStartLevel  | RegionsPersistenceImpl           | 78 - org.apache.karaf.region.persist - 4.0.0 | Loading region digraph persistence
 </pre><p>You can also limit the number of entries stored and retain using the <tt>size</tt> property in <tt>etc/org.apache.karaf.log.cfg</tt> file:</p><pre>
 #
 # The number of log statements to be displayed using log:display. It also defines the number
@@ -179,10 +179,10 @@ size = 500
 pattern = %d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
 </pre><p>You can also change the pattern dynamically (for one execution) using the <tt>-p</tt> option:</p><pre>
 karaf@root()> log:display -p "%d - %c - %m%n"
-2013-11-30 07:01:58,007 - org.apache.sshd.common.util.SecurityUtils - BouncyCastle not registered, using the default JCE provider
-2013-11-30 07:01:58,725 - org.apache.aries.jmx.core - Starting JMX OSGi agent
-2013-11-30 07:01:58,744 - org.apache.aries.jmx.core - Registering MBean with ObjectName [osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=6361fc65-8df4-4886-b0a6-479df2d61c83] for service with service.id [13]
-2013-11-30 07:01:58,747 - org.apache.aries.jmx.core - Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=6361fc65-8df4-4886-b0a6-479df2d61c83
+2015-07-01 07:01:58,007 - org.apache.sshd.common.util.SecurityUtils - BouncyCastle not registered, using the default JCE provider
+2015-07-01 07:01:58,725 - org.apache.aries.jmx.core - Starting JMX OSGi agent
+2015-07-01 07:01:58,744 - org.apache.aries.jmx.core - Registering MBean with ObjectName [osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=6361fc65-8df4-4886-b0a6-479df2d61c83] for service with service.id [13]
+2015-07-01 07:01:58,747 - org.apache.aries.jmx.core - Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=6361fc65-8df4-4886-b0a6-479df2d61c83
 </pre><p>The pattern is a regular Log4j pattern where you can use keywords like %d for the date, %c for the class, %m for the log<br/>message, etc.</p><h3 id="logexceptiondisplay"><tt>log:exception-display</tt></h3><p>The <tt>log:exception-display</tt> command displays the last occurred exception.</p><p>As for <tt>log:display</tt> command, the <tt>log:exception-display</tt> command uses the <tt>rootLogger</tt> by default, but you can<br/>specify a logger with the <tt>logger</tt> argument.</p><h3 id="logget"><tt>log:get</tt></h3><p>The <tt>log:get</tt> command show the current log level of a logger.</p><p>By default, the log level showed is the one from the root logger:</p><pre>
 karaf@root()> log:get
 Logger | Level
@@ -204,11 +204,11 @@ my.logger | DEBUG
 </pre><p>The <tt>log:list</tt> command is an alias to <tt>log:get ALL</tt>.</p><h3 id="loglog"><tt>log:log</tt></h3><p>The <tt>log:log</tt> command allows you to manually add a message in the log. It's interesting when you create Apache Karaf<br/>scripts:</p><pre>
 karaf@root()> log:log "Hello World"
 karaf@root()> log:display
-2013-11-30 07:20:16,544 | INFO  | Local user karaf | command                          | 59 - org.apache.karaf.log.command - 3.0.0 | Hello World
+2015-07-01 07:20:16,544 | INFO  | Local user karaf | command                          | 59 - org.apache.karaf.log.command - 4.0.0 | Hello World
 </pre><p>By default, the log level is INFO, but you can specify a different log level using the <tt>-l</tt> option:</p><pre>
 karaf@root()> log:log -l ERROR "Hello World"
 karaf@root()> log:display
-2013-11-30 07:21:38,902 | ERROR | Local user karaf | command                          | 59 - org.apache.karaf.log.command - 3.0.0 | Hello World
+2015-07-01 07:21:38,902 | ERROR | Local user karaf | command                          | 59 - org.apache.karaf.log.command - 4.0.0 | Hello World
 </pre><h3 id="logset"><tt>log:set</tt></h3><p>The <tt>log:set</tt> command sets the log level of a logger.</p><p>By default, it changes the log level of the <tt>rootLogger</tt>:</p><pre>
 karaf@root()> log:set DEBUG
 karaf@root()> log:get
@@ -245,10 +245,10 @@ my.logger=appender1
 my.logger.custom=appender2
 </pre><p>So, both <tt>my.logger.custom</tt> and <tt>my.logger</tt> use the log level of the parent <tt>rootLogger</tt>.</p><p>It's not possible to use DEFAULT keyword with the <tt>rootLogger</tt> and it doesn't have parent.</p><h3 id="logtail"><tt>log:tail</tt></h3><p>The <tt>log:tail</tt> is exactly the same as <tt>log:display</tt> but it continuously displays the log entries.</p><p>You can use the same options and arguments as for the <tt>log:display</tt> command.</p><p>By default, it displays the entries from the <tt>rootLogger</tt>:</p><pre>
 karaf@root()> log:tail
-2013-11-30 07:40:28,152 | INFO  | FelixStartLevel  | SecurityUtils                    | 16 - org.apache.sshd.core - 0.9.0 | BouncyCastle not registered, using the default JCE provider
-2013-11-30 07:40:28,909 | INFO  | FelixStartLevel  | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Starting JMX OSGi agent
-2013-11-30 07:40:28,928 | INFO  | FelixStartLevel  | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering MBean with ObjectName [osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=b44a44b7-41cd-498f-936d-3b12d7aafa7b] for service with service.id [13]
-2013-11-30 07:40:28,936 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=b44a44b7-41cd-498f-936d-3b12d7aafa7b
+2015-07-01 07:40:28,152 | INFO  | FelixStartLevel  | SecurityUtils                    | 16 - org.apache.sshd.core - 0.9.0 | BouncyCastle not registered, using the default JCE provider
+2015-07-01 07:40:28,909 | INFO  | FelixStartLevel  | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Starting JMX OSGi agent
+2015-07-01 07:40:28,928 | INFO  | FelixStartLevel  | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering MBean with ObjectName [osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=b44a44b7-41cd-498f-936d-3b12d7aafa7b] for service with service.id [13]
+2015-07-01 07:40:28,936 | INFO  | JMX OSGi Agent   | core                             | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=b44a44b7-41cd-498f-936d-3b12d7aafa7b
 </pre><p>To exit from the <tt>log:tail</tt> command, just type CTRL-C.</p><h2 id="JMXLogMBean">JMX LogMBean</h2><p>All actions that you can perform with the <tt>log:*</tt> command can be performed using the LogMBean.</p><p>The LogMBean object name is <tt>org.apache.karaf:type=log,name=*</tt>.</p><h3 id="Attributes">Attributes</h3><ul><li><tt>Level</tt> attribute is the level of the ROOT logger.</li></ul><h3 id="Operations">Operations</h3><ul><li><tt>getLevel(logger)</tt> to get the log level of a specific logger. As this operation supports the ALL keyword, it returns a Map with the level of each logger.</li><li><tt>setLevel(level, logger)</tt> to set the log level of a specific logger. This operation supports the DEFAULT keyword as for the <tt>log:set</tt> command.</li></ul><h2 id="Advancedconfiguration">Advanced configuration</h2><h3 id="Filters">Filters</h3><p>You can use filters on appender. Filters allow log events to be evaluated to determine if or how they should be published.
 </p><p>Log4j provides ready to use filters:</p><ul><li>The DenyAllFilter (<tt>org.apache.log4j.varia.DenyAllFilter</tt>) drops all logging events.<p> You can add this filter to the end of a filter chain to switch from the default "accept all unless instructed otherwise"<br/> filtering behaviour to a "deny all unless instructed otherwise" behaviour.</p></li><li>The LevelMatchFilter (<tt>org.apache.log4j.varia.LevelMatchFilter</tt> is a very simple filter based on level matching.<p> The filter admits two options <tt>LevelToMatch</tt> and <tt>AcceptOnMatch</tt>. If there is an exact match between the value of<br/> the <tt>LevelToMatch</tt> option and the level of the logging event, then the event is accepted in case the <tt>AcceptOnMatch</tt><br/> option value is set to <tt>true</tt>. Else, if the <tt>AcceptOnMatch</tt> option value is set to <tt>false</tt>, the log event is rejected.</p></li><li>The LevelRangeFilter (<tt>org.apache.log4j.varia.LevelRangeFilter</tt> is a very simple fi
 lter based on level matching,<p> which can be used to reject messages with priorities outside a certain range. The filter admits three options <tt>LevelMin</tt>,<br/> <tt>LevelMax</tt> and <tt>AcceptOnMatch</tt>. If the log event level is between <tt>LevelMin</tt> and <tt>LevelMax</tt>, the log event is<br/> accepted if <tt>AcceptOnMatch</tt> is true, or rejected if <tt>AcceptOnMatch</tt> is false.</p></li><li>The StringMatchFilter (<tt>org.apache.log4j.varia.StringMatchFilter</tt>) is a very simple filter based on string matching.<p> The filter admits two options <tt>StringToMatch</tt> and <tt>AcceptOnMatch</tt>. If there is a match between the <tt>StringToMatch</tt><br/> and the log event message, the log event is accepted if <tt>AcceptOnMatch</tt> is true, or rejected if <tt>AcceptOnMatch</tt> is false.</p><p>The filter is defined directly on the appender, in the <tt>etc/org.ops4j.pax.logging.cfg</tt> configuration file.</p><p>The format to use it:</p><pre>
 log4j.appender.[appender-name].filter.[filter-name]=[filter-class]
 log4j.appender.[appender-name].filter.[filter-name].[option]=[value]
@@ -280,12 +280,12 @@ log4j.appender.sift.appender.file=${kara
 log4j.appender.sift.appender.append=true
 </pre><h3 id="EnhancedOSGistacktracerenderer">Enhanced OSGi stack trace renderer</h3><p>By default, Apache Karaf provides a special stack trace renderer, adding some OSGi specific specific information.</p><p>In the stack trace, in addition of the class throwing the exception, you can find a pattern <tt><a href="id:name:version">id:name:version</a></tt> at the<br/>end of each stack trace line, where:</p><ul><li><tt>id</tt> is the bundle ID</li><li><tt>name</tt> is the bundle name</li><li><tt>version</tt> is the bundle version</li></ul><p>It's very helpful to diagnosing the source of an issue.</p><p>For instance, in the following IllegalArgumentException stack trace, we can see the OSGi details about the source of the exception:</p><pre>
 java.lang.IllegalArgumentException: Command not found:  *:foo
-	at org.apache.felix.gogo.runtime.shell.Closure.execute(Closure.java:225)[21:org.apache.karaf.shell.console:3.0.0]
-	at org.apache.felix.gogo.runtime.shell.Closure.executeStatement(Closure.java:162)[21:org.apache.karaf.shell.console:3.0.0]
-	at org.apache.felix.gogo.runtime.shell.Pipe.run(Pipe.java:101)[21:org.apache.karaf.shell.console:3.0.0]
-	at org.apache.felix.gogo.runtime.shell.Closure.execute(Closure.java:79)[21:org.apache.karaf.shell.console:3.0.0]
-	at org.apache.felix.gogo.runtime.shell.CommandSessionImpl.execute(CommandSessionImpl.java:71)[21:org.apache.karaf.shell.console:3.0.0]
-	at org.apache.karaf.shell.console.jline.Console.run(Console.java:169)[21:org.apache.karaf.shell.console:3.0.0]
+	at org.apache.felix.gogo.runtime.shell.Closure.execute(Closure.java:225)[21:org.apache.karaf.shell.console:4.0.0]
+	at org.apache.felix.gogo.runtime.shell.Closure.executeStatement(Closure.java:162)[21:org.apache.karaf.shell.console:4.0.0]
+	at org.apache.felix.gogo.runtime.shell.Pipe.run(Pipe.java:101)[21:org.apache.karaf.shell.console:4.0.0]
+	at org.apache.felix.gogo.runtime.shell.Closure.execute(Closure.java:79)[21:org.apache.karaf.shell.console:4.0.0]
+	at org.apache.felix.gogo.runtime.shell.CommandSessionImpl.execute(CommandSessionImpl.java:71)[21:org.apache.karaf.shell.console:4.0.0]
+	at org.apache.karaf.shell.console.jline.Console.run(Console.java:169)[21:org.apache.karaf.shell.console:4.0.0]
 	at java.lang.Thread.run(Thread.java:637)[:1.7.0_21]
 </pre><h3 id="Customappenders">Custom appenders</h3><p>You can use your own appenders in Apache Karaf.</p><p>The easiest way to do that is to package your appender as an OSGi bundle and attach it as a fragment of the<br/><tt>org.ops4j.pax.logging.pax-logging-service</tt> bundle.</p><p>For instance, you create <tt>MyAppender</tt>:</p><pre>
 public class MyAppender extends AppenderSkeleton {
@@ -316,7 +316,7 @@ Fragment-Host: org.ops4j.pax.logging.pax
         <td id="cell-3-2">
           <div id="footer">
             <div id="site-footer">
-              &copy; 2008-2011 The Apache Software Foundation
+              &copy; 2008-2014 The Apache Software Foundation
               <br/>
               Apache Karaf, Karaf, Apache, the Apache feather logo, and the Apache Karaf project logo are trademarks of The Apache Software Foundation.
             </div>

Modified: karaf/site/production/manual/latest/users-guide/monitoring.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/users-guide/monitoring.html?rev=1688715&r1=1688714&r2=1688715&view=diff
==============================================================================
--- karaf/site/production/manual/latest/users-guide/monitoring.html (original)
+++ karaf/site/production/manual/latest/users-guide/monitoring.html Wed Jul  1 19:43:35 2015
@@ -8,7 +8,7 @@
     <link href="../css/style.css" rel="stylesheet" type="text/css"/>
     <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
     <title>
-      Apache Karaf 3.0.3-SNAPSHOT Guides
+      Apache Karaf 4.0.1-SNAPSHOT Guides
     </title>
   </head>
   <body>
@@ -162,141 +162,47 @@ threaded = true
 #
 objectName = connector:name=rmi
 
-
-* {{rmiRegistryPort}} property contains the port number of the JMX RMI registry. Default is {{1099}}.
-* {{rmiServerPort}} property contains the port number of the JMX RMI server. Default is {{44444}}.
-* {{jmxRealm}} is the security realm to use as authentication backend. By default it uses the {{karaf}} realm.
-
-h2. MBeans
-
-Apache Karaf provides a bunch of MBeans.
-
-The MBeans object names have the same format:
-
-</pre><p>org.apache.karaf:type=<a href="feature.html">feature</a>,name=<a href="instance.html">instance</a></p><pre>
-
-Installing additional Apache Karaf features and external applications can provide new MBeans.
-
-The following MBeans list is non exhaustive:
-
-* {{org.apache.karaf:type=bundle,name=*}}: management of the OSGi bundles.
-* {{org.apache.karaf:type=config,name=*}}: management of the configurations.
-* {{org.apache.karaf:type=diagnostic,name=*}}: creation of dumps containing the current Apache Karaf activity (used for diagnostic).
-* {{org.apache.karaf:type=feature,name=*}}: management of the Apache Karaf features.
-* {{org.apache.karaf:type=http,name=*}}: management of the HTTP service (provided by the {{http}} feature).
-* {{org.apache.karaf:type=instance,name=*}}: management of the instances.
-* {{org.apache.karaf:type=jdbc,name=*}}: management of the JDBC service (provided by the {{jdbc}} feature).
-* {{org.apache.karaf:type=jms,name=*}}: management of the JMS service (provided by the {{jms}} feature).
-* {{org.apache.karaf:type=jndi,name=*}}: management of the JNDI service (provided by the {{jndi}} feature).
-* {{org.apache.karaf:type=kar,name=*}}: management of the KAR file.
-* {{org.apache.karaf:type=log,name=*}}: management of the log service.
-* {{org.apache.karaf:type=obr,name=*}}: management of the OBR service (provided by the {{obr}} feature).
-* {{org.apache.karaf:type=package,name=*}}: details about packages exported/imported.
-* {{org.apache.karaf:type=service,name=*}}: management of the OSGi services.
-* {{org.apache.karaf:type=system,name=*}}: management of the Apache Karaf container itself (halt, restart, etc).
-* {{org.apache.karaf:type=web,name=*}}: management of WebApplications (provided by the {{war}} feature).
-* {{org.apache.karaf:type=wrapper,name=*}}: management of the service wrapper (provided by the {{wrapper}} feature).
-
-h2. RBAC
-
-Apache Karaf provides a complete Role-Based Access Control to the JMX MBeans and operations.
-
-Whenever a JMX operation is invoked, the roles of the user are checked against the required roles for this operation.
-
-The access lists are defined in configuration file in the {{etc}} folder.
-
-The relevant configuration is prefixed with {{jmx.acl}} and based on the JMX ObjectName that it applies to.
-
-For instance, specific configuration for a MBean with the object name {{foo.bar:type=Test}} can be placed in the
-{{etc/jmx.acl.foo.bar.Test.cfg}} configuration file.
-
-More generic configurations can be placed in the domain (e.g. jmx.acl.foo.bar.cfg) or at the top level (jmx.acl.cfg).
-
-A simple configuration file looks like:
-
-</pre><p>    # operation = role<br/>    test = admin<br/>    getVal = manager, viewer</p><pre>
-
-Apache Karaf looks for required roles using the following process
-.
-The most specific configuration file is tried first. It means that in the previous example, the {{etc/jmx.acl.foo.bar.Test.cfg}} is looked at first.
-In this configuration, Apache Karaf looks for a:
-
-1. Specific match for the invocation, e.g. {{test(int)["17"] = role1}}
-
-2. Regex match for the invocation, e.g. {{test(int)[/[0-9]/] = role2}}
- In both cases, the passed argument is converted to a String for the comparison.
- If any of the above match, the search stops and the associated roles are used.
-
-3. Signature match for the invocation, e.g. {{test(int) = role3}}
- If matched, the search stops and the associated roles are used.
-
-4. Method name match for the invocation, e.g. {{test = role4}}
- If matched, the search stops and the associated roles are used.
-
-5. A method name wildcard match, e.g. {{te* = role5}}
- For all the wildcard matches found in the current configuration file, the roles associated with the longest match are used.
- So if you have te* and * and the method invoked is 'test', then the roles defined with te* are used, not the ones defined with *.
-
-If no matching definition is found, the most specific definition always takes the precedence.
-
-You can find some configuration examples:
-
-* Only a {{manager}} can call GC on the Memory MBean:
-</pre><ol><li>etc/jmx.acl.java.lang.Memory.cfg<p>    gc = manager</p><pre>
-
-* Bundles with ID between 0 and 49 can be stopped only by an {{admin}}, other bundles can be stopped by a {{manager}}:
-</pre></li><li>etc/jmx.acl.org.apache.karaf.bundles.cfg<p>    stop(java.lang.String)[/(<a href="1-4.html">1-4</a>)?(<a href="0-9]/.html">0-9]/</a> = admin<br/>    stop = manager</p><pre>
-
-The {{etc/jmx.acl.cfg}} configuration file contains the global configuration for the invocation on any MBean that
-doesn't have a specific configuration:
-
-</pre></li><li>etc/jmx.acl.cfg<p>    list* = viewer<br/>    get* = viewer<br/>    is* = viewer<br/>    set* = admin<br/>    * = admin</p><pre>
-
-By default, all "read-only" operations ({{list*}}, {{get*}}, {{is*}}) can be performed by a {{viewer}}, whereas the "read-write" operations can be performed only by an {{admin}}.
-
-The {{org.apache.karaf:type=security,area=jmx}} MBean can be used to check whether the current user can access a certain MBean or invoke a specific operation on it.
-This MBean can be used by management clients (monitoring tools, etc) to decide whether to show certain MBeans or operations to the end user.
-
-h2. JMX-HTTP bridge with Jolokia
-
-It's not always easy to use a JMX client with the RMI protocol.
-
-Some monitoring tools (Nagios, Zabbix, ...) are not native JMX clients.
-
-But most of them can use HTTP.
-
-More over, you may want to write your own application/web application. In that case, HTTP and JSON can be very interesting and easy to remotely manage Apache Karaf.
-
-[Jolokia|http://www.jolokia.org/] can be installed in Apache Karaf as a remote JMX-HTTP bridge.
-
-First, you have to install the {{http}} feature:
-
-</pre><p>karaf@root()> feature:install http</p><pre>
-
-Now, you can install directly the Jolokia bundle:
-
-</pre><p>karaf@root()> bundle:install -s mvn:org.jolokia/jolokia-osgi/1.1.5</p><pre>
-
-By default, Jolokia is listening on the port {{8181}} (see the [WebContainer (JSP/Servlet)|webcontainer] page for details about the HTTP configuration).
-
-If you point a browser on [http://localhost:8181/jolokia] you will see a JSON output like:
-
-</pre><p>{"timestamp":1387552680,"status":200,"request":{"type":"version"},"value":{"protocol":"7.0","agent":"1.1.5","info":{"product":"felix","vendor":"Apache","version":"4.2.1"}}}</p><pre>
-
-You can manipulate the Apache Karaf JMX layer via HTTP and JSON, via system tools (like {{curl}}, {{jmx4perl}}, monitoring tools (supporting HTTP/JSON), or web applications.
-
-For instance, you can send a JSON request to get details about the current Apache Karaf heap memory usage.
-
-The format of the request is:
-
-</pre><p>{<br/>    "type":"read",<br/>    "mbean":"java.lang:type=Memory",<br/>    "attribute":"HeapMemoryUsage",<br/>    "path":"used"<br/>}</p><pre>
-
-We can send this JSON request using {{curl}} and get the result:
-
-</pre><p>curl -d "{\"type\":\"read\",\"mbean\":\"java.lang:type=Memory\",\"attribute\":\"HeapMemoryUsage\",\"path\":\"used\"}" http://localhost:8080/jolokia/ &amp;&amp; echo ""</p><pre>
-
-You can find details on the [Jolokia website|http://www.jolokia.org] and in the [documentation|http://www.jolokia.org/reference/html/].
-</pre></li></ol>
+#
+# Role name used for JMX access authorization
+# If not set, this defaults to the ${karaf.admin.role} configured in etc/system.properties
+#
+# jmxRole=admin
+</pre><ul><li><tt>rmiRegistryPort</tt> property contains the port number of the JMX RMI registry. Default is <tt>1099</tt>.</li><li><tt>rmiServerPort</tt> property contains the port number of the JMX RMI server. Default is <tt>44444</tt>.</li><li><tt>jmxRealm</tt> is the security realm to use as authentication backend. By default it uses the <tt>karaf</tt> realm.</li></ul><h2 id="MBeans">MBeans</h2><p>Apache Karaf provides a bunch of MBeans.</p><p>The MBeans object names have the same format:</p><pre>
+org.apache.karaf:type=[feature],name=[instance]
+</pre><p>Installing additional Apache Karaf features and external applications can provide new MBeans.</p><p>The following MBeans list is non exhaustive:</p><ul><li><tt>org.apache.karaf:type=bundle,name=*</tt>: management of the OSGi bundles.</li><li><tt>org.apache.karaf:type=config,name=*</tt>: management of the configurations.</li><li><tt>org.apache.karaf:type=diagnostic,name=*</tt>: creation of dumps containing the current Apache Karaf activity (used for diagnostic).</li><li><tt>org.apache.karaf:type=feature,name=*</tt>: management of the Apache Karaf features.</li><li><tt>org.apache.karaf:type=http,name=*</tt>: management of the HTTP service (provided by the <tt>http</tt> feature).</li><li><tt>org.apache.karaf:type=instance,name=*</tt>: management of the instances.</li><li><tt>org.apache.karaf:type=jdbc,name=*</tt>: management of the JDBC service (provided by the <tt>jdbc</tt> feature).</li><li><tt>org.apache.karaf:type=jms,name=*</tt>: management of the JMS service (provided by
  the <tt>jms</tt> feature).</li><li><tt>org.apache.karaf:type=jndi,name=*</tt>: management of the JNDI service (provided by the <tt>jndi</tt> feature).</li><li><tt>org.apache.karaf:type=kar,name=*</tt>: management of the KAR file.</li><li><tt>org.apache.karaf:type=log,name=*</tt>: management of the log service.</li><li><tt>org.apache.karaf:type=obr,name=*</tt>: management of the OBR service (provided by the <tt>obr</tt> feature).</li><li><tt>org.apache.karaf:type=package,name=*</tt>: details about packages exported/imported.</li><li><tt>org.apache.karaf:type=service,name=*</tt>: management of the OSGi services.</li><li><tt>org.apache.karaf:type=system,name=*</tt>: management of the Apache Karaf container itself (halt, restart, etc).</li><li><tt>org.apache.karaf:type=web,name=*</tt>: management of WebApplications (provided by the <tt>war</tt> feature).</li><li><tt>org.apache.karaf:type=wrapper,name=*</tt>: management of the service wrapper (provided by the <tt>wrapper</tt> feature).<
 /li></ul><h2 id="RBAC">RBAC</h2><p>Apache Karaf provides a complete Role-Based Access Control to the JMX MBeans and operations.</p><p>Whenever a JMX operation is invoked, the roles of the user are checked against the required roles for this operation.</p><p>The access lists are defined in configuration file in the <tt>etc</tt> folder.</p><p>The relevant configuration is prefixed with <tt>jmx.acl</tt> and based on the JMX ObjectName that it applies to.</p><p>For instance, specific configuration for a MBean with the object name <tt>foo.bar:type=Test</tt> can be placed in the<br/><tt>etc/jmx.acl.foo.bar.Test.cfg</tt> configuration file.</p><p>More generic configurations can be placed in the domain (e.g. jmx.acl.foo.bar.cfg) or at the top level (jmx.acl.cfg).</p><p>A simple configuration file looks like:</p><pre>
+    # operation = role
+    test = admin
+    getVal = manager, viewer
+</pre><p>Apache Karaf looks for required roles using the following process<br/>.<br/>The most specific configuration file is tried first. It means that in the previous example, the <tt>etc/jmx.acl.foo.bar.Test.cfg</tt> is looked at first.<br/>In this configuration, Apache Karaf looks for a:</p><p>1. Specific match for the invocation, e.g. <tt>test(int)<a href="&quot;17&quot;.html">"17"</a> = role1</tt></p><p>2. Regex match for the invocation, e.g. <tt>test(int)[/<a href="0-9]/.html">0-9]/</a> = role2</tt><br/> In both cases, the passed argument is converted to a String for the comparison.<br/> If any of the above match, the search stops and the associated roles are used.</p><p>3. Signature match for the invocation, e.g. <tt>test(int) = role3</tt><br/> If matched, the search stops and the associated roles are used.</p><p>4. Method name match for the invocation, e.g. <tt>test = role4</tt><br/> If matched, the search stops and the associated roles are used.</p><p>5. A method name wildc
 ard match, e.g. <tt>te* = role5</tt><br/> For all the wildcard matches found in the current configuration file, the roles associated with the longest match are used.<br/> So if you have te* and * and the method invoked is 'test', then the roles defined with te* are used, not the ones defined with *.</p><p>If no matching definition is found, the most specific definition always takes the precedence.</p><p>You can find some configuration examples:</p><ul><li>Only a <tt>manager</tt> can call GC on the Memory MBean:<pre>
+# etc/jmx.acl.java.lang.Memory.cfg
+    gc = manager
+</pre></li></ul><ul><li>Bundles with ID between 0 and 49 can be stopped only by an <tt>admin</tt>, other bundles can be stopped by a <tt>manager</tt>:<pre>
+# etc/jmx.acl.org.apache.karaf.bundles.cfg
+    stop(java.lang.String)[/([1-4])?([0-9]/] = admin
+    stop = manager
+</pre></li></ul><p>The <tt>etc/jmx.acl.cfg</tt> configuration file contains the global configuration for the invocation on any MBean that<br/>doesn't have a specific configuration:</p><pre>
+# etc/jmx.acl.cfg
+    list* = viewer
+    get* = viewer
+    is* = viewer
+    set* = admin
+    * = admin
+</pre><p>By default, all "read-only" operations (<tt>list*</tt>, <tt>get*</tt>, <tt>is*</tt>) can be performed by a <tt>viewer</tt>, whereas the "read-write" operations can be performed only by an <tt>admin</tt>.</p><p>The <tt>org.apache.karaf:type=security,area=jmx</tt> MBean can be used to check whether the current user can access a certain MBean or invoke a specific operation on it.<br/>This MBean can be used by management clients (monitoring tools, etc) to decide whether to show certain MBeans or operations to the end user.</p><h2 id="JMXHTTPbridgewithJolokia">JMX-HTTP bridge with Jolokia</h2><p>It's not always easy to use a JMX client with the RMI protocol.</p><p>Some monitoring tools (Nagios, Zabbix, ...) are not native JMX clients.</p><p>But most of them can use HTTP.</p><p>More over, you may want to write your own application/web application. In that case, HTTP and JSON can be very interesting and easy to remotely manage Apache Karaf.</p><p><a href="http://www.jolokia.org/">
 Jolokia</a> can be installed in Apache Karaf as a remote JMX-HTTP bridge.</p><p>Karaf provides a jolokia feature, ready to install:</p><pre>
+karaf@root()> feature:install jolokia
+</pre><p>By default, Jolokia is listening on the port <tt>8181</tt> (see the <a href="webcontainer.html">WebContainer (JSP/Servlet)</a> page for details about the HTTP configuration).</p><p>If you point a browser on <a href="http://localhost:8181/jolokia">http://localhost:8181/jolokia</a> you will see a JSON output like:</p><pre>
+{"timestamp":1421765829,"status":200,"request":{"type":"version"},"value":{"protocol":"7.2","config":{"useRestrictorService":"false","canonicalNaming":"true","includeStackTrace":"true","listenForHttpService":"true","historyMaxEntries":"10","agentId":"192.168.134.10-5922-6eb8d517-osgi","debug":"false","realm":"karaf","serializeException":"false","agentContext":"\/jolokia","agentType":"servlet","policyLocation":"classpath:\/jolokia-access.xml","user":"karaf","debugMaxEntries":"100","authMode":"jaas","mimeType":"text\/plain"},"agent":"1.2.4-SNAPSHOT","info":{"product":"felix","vendor":"Apache","version":"4.4.1"}}}
+</pre><p>You can manipulate the Apache Karaf JMX layer via HTTP and JSON, via system tools (like <tt>curl</tt>, <tt>jmx4perl</tt>, monitoring tools (supporting HTTP/JSON), or web applications.</p><p>For instance, you can send a JSON request to get details about the current Apache Karaf heap memory usage.</p><p>The format of the request is:</p><pre>
+{
+    "type":"read",
+    "mbean":"java.lang:type=Memory",
+    "attribute":"HeapMemoryUsage",
+    "path":"used"
+}
+</pre><p>We can send this JSON request using <tt>curl</tt> and get the result:</p><pre>
+curl -u karaf -d "{\"type\":\"read\",\"mbean\":\"java.lang:type=Memory\",\"attribute\":\"HeapMemoryUsage\",\"path\":\"used\"}" http://localhost:8181/jolokia/ &amp;&amp; echo ""
+Enter host password for user 'karaf':
+{"timestamp":1421765948,"status":200,"request":{"mbean":"java.lang:type=Memory","path":"used","attribute":"HeapMemoryUsage","type":"read"},"value":69121000}
+</pre><p>You can find details on the <a href="http://www.jolokia.org">Jolokia website</a> and in the <a href="http://www.jolokia.org/reference/html/">documentation</a>.</p>
                 </div>
               </td>
             </tr>
@@ -316,7 +222,7 @@ You can find details on the [Jolokia web
         <td id="cell-3-2">
           <div id="footer">
             <div id="site-footer">
-              &copy; 2008-2011 The Apache Software Foundation
+              &copy; 2008-2014 The Apache Software Foundation
               <br/>
               Apache Karaf, Karaf, Apache, the Apache feather logo, and the Apache Karaf project logo are trademarks of The Apache Software Foundation.
             </div>

Modified: karaf/site/production/manual/latest/users-guide/obr.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/users-guide/obr.html?rev=1688715&r1=1688714&r2=1688715&view=diff
==============================================================================
--- karaf/site/production/manual/latest/users-guide/obr.html (original)
+++ karaf/site/production/manual/latest/users-guide/obr.html Wed Jul  1 19:43:35 2015
@@ -8,7 +8,7 @@
     <link href="../css/style.css" rel="stylesheet" type="text/css"/>
     <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
     <title>
-      Apache Karaf 3.0.3-SNAPSHOT Guides
+      Apache Karaf 4.0.1-SNAPSHOT Guides
     </title>
   </head>
   <body>
@@ -124,10 +124,10 @@ karaf@root()> obr:url-remove -i 0
 karaf@root()> obr:list|more
 Name                                                                         | Symbolic Name                                                             | Version
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-activemq-blueprint                                                           | org.apache.activemq.activemq-blueprint                                    | 5.10.0.SNAPSHOT
-activemq-camel                                                               | org.apache.activemq.activemq-camel                                        | 5.10.0.SNAPSHOT
-activemq-karaf                                                               | activemq-karaf                                                            | 5.10.0.SNAPSHOT
-activemq-osgi                                                                | org.apache.activemq.activemq-osgi                                         | 5.10.0.SNAPSHOT
+activemq-blueprint                                                           | org.apache.activemq.activemq-blueprint                                    | 5.12.0.SNAPSHOT
+activemq-camel                                                               | org.apache.activemq.activemq-camel                                        | 5.12.0.SNAPSHOT
+activemq-karaf                                                               | activemq-karaf                                                            | 5.12.0.SNAPSHOT
+activemq-osgi                                                                | org.apache.activemq.activemq-osgi                                         | 5.12.0.SNAPSHOT
 Apache Aries Application API                                                 | org.apache.aries.application.api                                          | 1.0.1.SNAPSHOT
 ...
 </pre><h3 id="obrinfo"><tt>obr:info</tt></h3><p>The <tt>obr:info</tt> command displays the details about bundles available on the OBR service. Especially, it provides details about<br/>capabilities and requirements of bundles.</p><p>The <tt>obr:info</tt> command expects a bundle symbolic name as argument:</p><pre>
@@ -135,15 +135,15 @@ karaf@root()> obr:info org.apache.karaf.
 -------------------------------
 Apache Karaf :: Wrapper :: Core
 -------------------------------
-id: org.apache.karaf.wrapper.core/3.0.0
+id: org.apache.karaf.wrapper.core/4.0.0
 description: Core implementation and integration of the Java Service Wrapper.        It provides a complete integration of Karaf with your Operating System.
 documentation: http://www.apache.org/
 symbolicname: org.apache.karaf.wrapper.core
 presentationname: Apache Karaf :: Wrapper :: Core
 license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: file:/user/.m2/repository/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/3.0.0/org.apache.karaf.wrapper.core-3.0.0.jar
+uri: file:/user/.m2/repository/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/4.0.0/org.apache.karaf.wrapper.core-4.0.0.jar
 size: 1281352
-version: 3.0.0
+version: 4.0.0
 Requires:
    service:(&amp;(service=org.apache.aries.blueprint.NamespaceHandler)(osgi.service.blueprint.namespace=http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0))
    package:(&amp;(package=javax.management))
@@ -156,42 +156,42 @@ Requires:
    package:(&amp;(package=org.osgi.service.blueprint)(version>=1.0.0)(!(version>=2.0.0)))
    package:(&amp;(package=org.slf4j)(version>=1.7.0)(!(version>=2.0.0)))
 Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.karaf.wrapper.core, presentationname=Apache Karaf :: Wrapper :: Core, version=3.0.0}
+   bundle:{manifestversion=2, symbolicname=org.apache.karaf.wrapper.core, presentationname=Apache Karaf :: Wrapper :: Core, version=4.0.0}
    service:{service=org.apache.karaf.wrapper.WrapperService}
-   package:{package=org.apache.karaf.wrapper, version=3.0.0}
-   package:{package=org.apache.karaf.wrapper.management, uses:=javax.management, version=3.0.0}
-</pre><p>The <tt>obr:info</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to see the info about the wrapper core bundle with version 3.0.0:</p><pre>
-karaf@root()> obr:info org.apache.karaf.wrapper.core,3.0.0
+   package:{package=org.apache.karaf.wrapper, version=4.0.0}
+   package:{package=org.apache.karaf.wrapper.management, uses:=javax.management, version=4.0.0}
+</pre><p>The <tt>obr:info</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to see the info about the wrapper core bundle with version 4.0.0:</p><pre>
+karaf@root()> obr:info org.apache.karaf.wrapper.core,4.0.0
 ...
 </pre><p>You can specific multiple bundles separated by space:</p><pre>
-karaf@root()> obr:info org.apache.karaf.wrapper.core,3.0.0 org.apache.karaf.wrapper.command,3.0.0
+karaf@root()> obr:info org.apache.karaf.wrapper.core,4.0.0 org.apache.karaf.wrapper.command,4.0.0
 ...
 </pre><h3 id="obrsource"><tt>obr:source</tt></h3><p>In addition of the bundles executable, the OBR service can also store the bundles sources.</p><p>The <tt>obr:source</tt> command check the source URL in the OBR metadata for a given bundle, and download the sources on a target folder:</p><pre>
 karaf@root()> obr:source /tmp org.apache.karaf.wrapper.core
-</pre><p>The <tt>obr:source</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to download the source of wrapper core bundle with version 3.0.0:</p><pre>
-karaf@root()> obr:source /tmp org.apache.karaf.wrapper.core,3.0.0
+</pre><p>The <tt>obr:source</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to download the source of wrapper core bundle with version 4.0.0:</p><pre>
+karaf@root()> obr:source /tmp org.apache.karaf.wrapper.core,4.0.0
 </pre><p>You can specify multiple bundles separated by space:</p><pre>
-karaf@root()> obr:source /tmp org.apache.karaf.wrapper.core,3.0.0 org.apache.karaf.wrapper.command,3.0.0
+karaf@root()> obr:source /tmp org.apache.karaf.wrapper.core,4.0.0 org.apache.karaf.wrapper.command,4.0.0
 ...
 </pre><h3 id="obrresolve"><tt>obr:resolve</tt></h3><p>The <tt>obr:resolve</tt> command displays the resolution output for a given set of requirements. Actually, it show the bundles providing<br/>the capabilities to match the requirements. It's what the OBR service does when executing <tt>obr:deploy</tt>.</p><p>Optionally, the <tt>obr:resolve</tt> command can deploy the bundles as the <tt>obr:deploy</tt> command does.</p><p>For instance, to know the OBR bundle resolving the <tt>org.apache.karaf.wrapper</tt> package requirement, you can do:</p><pre>
 karaf@root()> obr:resolve package=org.apache.karaf.wrapper
 Required resource(s):
 ---------------------
-   Apache Karaf :: Wrapper :: Core (3.0.0)
+   Apache Karaf :: Wrapper :: Core (4.0.0)
 </pre><h3 id="obrfind"><tt>obr:find</tt></h3><p>The <tt>obr:find</tt> command is similar to the <tt>obr:resolve</tt> one. It displays the bundles resolving the provided requirements, with details.</p><p>For instance, to find the OBR bundle providing the <tt>org.apache.karaf.wrapper</tt> package, you can do:</p><pre>
 karaf@root()> obr:find package=org.apache.karaf.wrapper
 -------------------------------
 Apache Karaf :: Wrapper :: Core
 -------------------------------
-id: org.apache.karaf.wrapper.core/3.0.0
+id: org.apache.karaf.wrapper.core/4.0.0
 description: Core implementation and integration of the Java Service Wrapper.        It provides a complete integration of Karaf with your Operating System.
 documentation: http://www.apache.org/
 symbolicname: org.apache.karaf.wrapper.core
 presentationname: Apache Karaf :: Wrapper :: Core
 license: http://www.apache.org/licenses/LICENSE-2.0.txt
-uri: file:/user/.m2/repository/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/3.0.0/org.apache.karaf.wrapper.core-3.0.0.jar
+uri: file:/user/.m2/repository/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/4.0.0/org.apache.karaf.wrapper.core-4.0.0.jar
 size: 1281352
-version: 3.0.0
+version: 4.0.0
 Requirements:
    service:(&amp;(service=org.apache.aries.blueprint.NamespaceHandler)(osgi.service.blueprint.namespace=http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0))
    package:(&amp;(package=javax.management))
@@ -204,10 +204,10 @@ Requirements:
    package:(&amp;(package=org.osgi.service.blueprint)(version>=1.0.0)(!(version>=2.0.0)))
    package:(&amp;(package=org.slf4j)(version>=1.7.0)(!(version>=2.0.0)))
 Capabilities:
-   bundle:{manifestversion=2, symbolicname=org.apache.karaf.wrapper.core, presentationname=Apache Karaf :: Wrapper :: Core, version=3.0.0}
+   bundle:{manifestversion=2, symbolicname=org.apache.karaf.wrapper.core, presentationname=Apache Karaf :: Wrapper :: Core, version=4.0.0}
    service:{service=org.apache.karaf.wrapper.WrapperService}
-   package:{package=org.apache.karaf.wrapper, version=3.0.0}
-   package:{package=org.apache.karaf.wrapper.management, uses:=javax.management, version=3.0.0}
+   package:{package=org.apache.karaf.wrapper, version=4.0.0}
+   package:{package=org.apache.karaf.wrapper.management, uses:=javax.management, version=4.0.0}
 </pre><h3 id="obrdeploy"><tt>obr:deploy</tt></h3><p>The <tt>obr:deploy</tt> command installs a bundle from the OBR repository, including all bundles required to satisfy the bundle requirements.</p><pre>
 karaf@root()> obr:deploy org.ops4j.pax.web.samples.helloworld-hs
 Target resource(s):
@@ -220,10 +220,10 @@ Required resource(s):
    OPS4J Pax Web - Jetty Bundle (4.0.0.SNAPSHOT)
 
 Deploying...done.
-</pre><p>By default, the bundles are just installed, not started. You can use the <tt>-s</tt> option to start the bundles.</p><p>The <tt>obr:deploy</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to deploy the wrapper core bundle with version 3.0.0:</p><pre>
-karaf@root()> obr:deploy org.apache.karaf.wrapper.core,3.0.0
+</pre><p>By default, the bundles are just installed, not started. You can use the <tt>-s</tt> option to start the bundles.</p><p>The <tt>obr:deploy</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to deploy the wrapper core bundle with version 4.0.0:</p><pre>
+karaf@root()> obr:deploy org.apache.karaf.wrapper.core,4.0.0
 </pre><p>You can specify multiple bundles separated by space:</p><pre>
-karaf@root()> obr:deploy org.apache.karaf.wrapper.core,3.0.0 org.apache.karaf.wrapper.command,3.0.0
+karaf@root()> obr:deploy org.apache.karaf.wrapper.core,4.0.0 org.apache.karaf.wrapper.command,4.0.0
 ...
 </pre><h2 id="obrstart"><tt>obr:start</tt></h2><p>The <tt>obr:start</tt> command does the same as <tt>obr:deploy -s</tt> command. It installs the bundle (and all required bundles to<br/>satisfy the requirements) and starts all installed bundles.</p><pre>
 karaf@root()> obr:start org.ops4j.pax.web.samples.helloworld-hs
@@ -237,10 +237,10 @@ Required resource(s):
    OPS4J Pax Web - Jetty Bundle (4.0.0.SNAPSHOT)
 
 Deploying...done.
-</pre><p>The <tt>obr:start</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to deploy and start the wrapper core bundle with version 3.0.0:</p><pre>
-karaf@root()> obr:start org.apache.karaf.wrapper.core,3.0.0
+</pre><p>The <tt>obr:start</tt> command uses the following syntax to identify the bundles: <tt>symbolic_name,version</tt> where <tt>version</tt> is optional.<br/>It means that you have to use the following command to deploy and start the wrapper core bundle with version 4.0.0:</p><pre>
+karaf@root()> obr:start org.apache.karaf.wrapper.core,4.0.0
 </pre><p>You can specify multiple bundles separated by space:</p><pre>
-karaf@root()> obr:start org.apache.karaf.wrapper.core,3.0.0 org.apache.karaf.wrapper.command,3.0.0
+karaf@root()> obr:start org.apache.karaf.wrapper.core,4.0.0 org.apache.karaf.wrapper.command,4.0.0
 ...
 </pre><h2 id="JMXObrMBean">JMX ObrMBean</h2><p>On the JMX layer, Apache Karaf provides a MBean dedicated to the management of the OBR service: the ObrMBean.</p><p>The ObjectName to use is <tt>org.apache.karaf:type=obr,name=*</tt>.</p><h3 id="Attributes">Attributes</h3><p>The <tt>Urls</tt> attribute provides the list of registered OBR repositories URLs.</p><p>The <tt>Bundles</tt> attribute provides a tabular data containing all bundles available on the registered OBR repositories.</p><h3 id="Operations">Operations</h3><ul><li><tt>addUrl(url)</tt> registers the OBR repository using the <tt>url</tt> to the <tt>repository.xml</tt>.</li><li><tt>removeUrl(url)</tt> removes the OBR repository at the given <tt>url</tt>.</li><li><tt>refreshUrl(url)</tt> refreshes the OBR repository at the given <tt>url</tt>.</li><li><tt>deployBundle(name)</tt> deploys a bundle (and all bundles required to satisfy the requirements) using the OBR service. The bundles are not automatically started.</li><li><tt>
 deployBundle(name, start, deployOptional)</tt> deploys a bundle (and all bundles required to satisfy the requirements) using the OBR service.<p> If <tt>start</tt> is <tt>true</tt>, the bundles are automatically started. If <tt>deployOptional</tt> is <tt>true</tt>, even the optional requirements will be resolved<br/> by the OBR service (meaning installing more bundles to satisfy the optional requirements).</p><p>The name to identify a bundle uses the following syntax: <tt>symbolic_name,version</tt> where version is optional.</p><h2 id="ApacheKarafCave">Apache Karaf Cave</h2><p>In addition of being an OBR client, Apache Karaf can act as an OBR repositories server, thanks to Apache Karaf Cave.</p><p>See the <a href="http://karaf.apache.org/index/subprojects/cave.html">Apache Karaf Cave sub-project</a> for details.</p></li></ul>
                 </div>
@@ -262,7 +262,7 @@ karaf@root()> obr:start org.apache.karaf
         <td id="cell-3-2">
           <div id="footer">
             <div id="site-footer">
-              &copy; 2008-2011 The Apache Software Foundation
+              &copy; 2008-2014 The Apache Software Foundation
               <br/>
               Apache Karaf, Karaf, Apache, the Apache feather logo, and the Apache Karaf project logo are trademarks of The Apache Software Foundation.
             </div>