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 2021/05/16 05:27:07 UTC

svn commit: r1889921 [2/3] - in /karaf/site/production/manual/latest: ./ commands/

Modified: karaf/site/production/manual/latest/index.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/index.html?rev=1889921&r1=1889920&r2=1889921&view=diff
==============================================================================
--- karaf/site/production/manual/latest/index.html (original)
+++ karaf/site/production/manual/latest/index.html Sun May 16 05:27:06 2021
@@ -734,162 +734,6 @@ table.CodeRay td.code>pre{padding:0}
 <li><a href="#_access">4.19.2. Access</a></li>
 </ul>
 </li>
-<li><a href="#_scheduler">4.20. Scheduler</a>
-<ul class="sectlevel3">
-<li><a href="#_installation_4">4.20.1. Installation</a></li>
-<li><a href="#_configuration_7">4.20.2. Configuration</a></li>
-<li><a href="#_schedule_a_new_job_using_the_whitebox_service_paradigm_recommended">4.20.3. Schedule a new Job using the Whitebox-Service paradigm (recommended)</a></li>
-<li><a href="#_schedule_a_new_job_using_the_gogo_shell">4.20.4. Schedule a new Job using the Gogo Shell</a></li>
-<li><a href="#_schedule_a_command">4.20.5. Schedule a command</a></li>
-<li><a href="#_schedule_a_new_job_using_the_scheduler_service">4.20.6. Schedule a new Job using the Scheduler Service</a></li>
-<li><a href="#_update_scheduling_of_an_existing_job">4.20.7. Update scheduling of an existing job</a></li>
-<li><a href="#_using_shared_jobs_store">4.20.8. Using shared jobs store</a></li>
-</ul>
-</li>
-<li><a href="#_tuning">4.21. Tuning</a>
-<ul class="sectlevel3">
-<li><a href="#_garbage_collection">4.21.1. Garbage Collection</a></li>
-<li><a href="#_threads">4.21.2. Threads</a></li>
-<li><a href="#_system_packages">4.21.3. System packages</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#_developer_guide">5. Developer Guide</a>
-<ul class="sectlevel2">
-<li><a href="#_developer_commands">5.1. Developer commands</a>
-<ul class="sectlevel3">
-<li><a href="#_dump">5.1.1. Dump</a></li>
-<li><a href="#_diagnostic">5.1.2. Diagnostic</a></li>
-<li><a href="#_dynamic_import">5.1.3. Dynamic import</a></li>
-<li><a href="#_osgi_framework">5.1.4. OSGi framework</a></li>
-<li><a href="#_stack_traces_printout">5.1.5. Stack traces printout</a></li>
-<li><a href="#_bundle_tree">5.1.6. Bundle tree</a></li>
-<li><a href="#_watch">5.1.7. Watch</a></li>
-</ul>
-</li>
-<li><a href="#_scripting_2">5.2. Scripting</a>
-<ul class="sectlevel3">
-<li><a href="#_assignation">5.2.1. Assignation</a></li>
-<li><a href="#_expressions">5.2.2. Expressions</a></li>
-<li><a href="#_list_maps_pipes_and_closures">5.2.3. List, maps, pipes and closures</a></li>
-<li><a href="#_startup">5.2.4. Startup</a></li>
-<li><a href="#_constants_and_variables">5.2.5. Constants and variables</a></li>
-<li><a href="#_built_in_variables_and_commands">5.2.6. Built-in variables and commands</a></li>
-<li><a href="#_leveraging_existing_java_capabilities_via_reflection">5.2.7. Leveraging existing Java capabilities (via reflection)</a></li>
-<li><a href="#_examples">5.2.8. Examples</a></li>
-</ul>
-</li>
-<li><a href="#_programmatically_connect">5.3. Programmatically connect</a>
-<ul class="sectlevel3">
-<li><a href="#_to_the_console">5.3.1. To the console</a></li>
-<li><a href="#_to_the_management_layer">5.3.2. To the management layer</a></li>
-</ul>
-</li>
-<li><a href="#_branding">5.4. Branding</a>
-<ul class="sectlevel3">
-<li><a href="#_console_2">5.4.1. Console</a></li>
-<li><a href="#_adding_a_branding_properties_file_to_etc">5.4.2. Adding a branding.properties file to etc</a></li>
-</ul>
-</li>
-<li><a href="#_adding_a_branding_ssh_properties_file_to_etc">5.5. Adding a branding-ssh.properties file to etc</a>
-<ul class="sectlevel3">
-<li><a href="#_branding_bundle">5.5.1. Branding bundle</a></li>
-<li><a href="#_webconsole_3">5.5.2. WebConsole</a></li>
-</ul>
-</li>
-<li><a href="#_extending">5.6. Extending</a>
-<ul class="sectlevel3">
-<li><a href="#_shell_commands">5.6.1. Shell commands</a></li>
-<li><a href="#_webconsole_4">5.6.2. WebConsole</a></li>
-</ul>
-</li>
-<li><a href="#_using_the_karaf_maven_plugin">5.7. Using the karaf-maven-plugin</a>
-<ul class="sectlevel3">
-<li><a href="#_packaging">5.7.1. Packaging</a></li>
-<li><a href="#_commands_goals">5.7.2. Commands goals</a></li>
-<li><a href="#_features_and_kar_goals">5.7.3. Features and kar goals</a></li>
-<li><a href="#_instances_and_distributions_goals">5.7.4. Instances and distributions goals</a></li>
-<li><a href="#_run_client_deploy_goals">5.7.5. Run, client, deploy goals</a></li>
-<li><a href="#_dockerfile_docker">5.7.6. Dockerfile, Docker</a></li>
-</ul>
-</li>
-<li><a href="#_custom_distributions">5.8. Custom distributions</a>
-<ul class="sectlevel3">
-<li><a href="#_maven_assembly">5.8.1. Maven assembly</a></li>
-<li><a href="#_deprecated_old_style_maven_assembly">5.8.2. (deprecated old style) Maven assembly</a></li>
-</ul>
-</li>
-<li><a href="#_creating_bundles">5.9. Creating Bundles</a>
-<ul class="sectlevel3">
-<li><a href="#_add_extended_information_to_bundles">5.9.1. Add extended information to bundles</a></li>
-<li><a href="#_wiki_syntax">5.9.2. Wiki Syntax</a></li>
-</ul>
-</li>
-<li><a href="#_creating_bundles_for_non_osgi_third_party_dependencies">5.10. Creating bundles for non OSGi third party dependencies</a>
-<ul class="sectlevel3">
-<li><a href="#_dynamically_wrapping_jars">5.10.1. Dynamically wrapping jars</a></li>
-<li><a href="#_statically_bundling_jars">5.10.2. Statically bundling jars</a></li>
-</ul>
-</li>
-<li><a href="#_blueprint">5.11. Blueprint</a></li>
-<li><a href="#_scr">5.12. SCR</a></li>
-<li><a href="#_archetypes">5.13. Archetypes</a>
-<ul class="sectlevel3">
-<li><a href="#_create_a_command_karaf_command_archetype">5.13.1. Create a command (karaf-command-archetype)</a></li>
-<li><a href="#_create_an_osgi_bundle_karaf_bundle_archetype">5.13.2. Create an OSGi bundle (karaf-bundle-archetype)</a></li>
-<li><a href="#_create_an_osgi_blueprint_bundle_karaf_blueprint_archetype">5.13.3. Create an OSGi blueprint bundle (karaf-blueprint-archetype)</a></li>
-<li><a href="#_create_a_features_xml_karaf_feature_archetype">5.13.4. Create a features XML (karaf-feature-archetype)</a></li>
-<li><a href="#_create_a_kar_file_karaf_kar_archetype">5.13.5. Create a KAR file (karaf-kar-archetype)</a></li>
-</ul>
-</li>
-<li><a href="#_security_framework">5.14. Security framework</a>
-<ul class="sectlevel3">
-<li><a href="#_overview_2">5.14.1. Overview</a></li>
-<li><a href="#_schema_and_deployer">5.14.2. Schema and Deployer</a></li>
-<li><a href="#_architecture">5.14.3. Architecture</a></li>
-<li><a href="#_available_realm_and_login_modules">5.14.4. Available realm and login modules</a></li>
-<li><a href="#_encryption_service">5.14.5. Encryption service</a></li>
-<li><a href="#_role_discovery_policies">5.14.6. Role discovery policies</a></li>
-<li><a href="#_default_role_policies">5.14.7. Default role policies</a></li>
-</ul>
-</li>
-<li><a href="#_troubleshooting_debugging_profiling_and_monitoring">5.15. Troubleshooting, Debugging, Profiling, and Monitoring</a>
-<ul class="sectlevel3">
-<li><a href="#_troubleshooting">5.15.1. Troubleshooting</a></li>
-<li><a href="#_debugging">5.15.2. Debugging</a></li>
-<li><a href="#_profiling">5.15.3. Profiling</a></li>
-<li><a href="#_monitoring">5.15.4. Monitoring</a></li>
-</ul>
-</li>
-<li><a href="#_configuration_9">5.16. Configuration</a></li>
-<li><a href="#_deployer_3">5.17. Deployer</a></li>
-<li><a href="#_dump_extender">5.18. Dump extender</a></li>
-<li><a href="#_jdbc_jpa">5.19. JDBC &amp; JPA</a></li>
-<li><a href="#_jms_2">5.20. JMS</a></li>
-<li><a href="#_custom_log_appender">5.21. Custom log appender</a></li>
-<li><a href="#_custom_jmx_mbean">5.22. Custom JMX MBean</a></li>
-<li><a href="#_working_with_profiles">5.23. Working with profiles</a></li>
-<li><a href="#_security_jaas">5.24. Security &amp; JAAS</a></li>
-<li><a href="#_servlet">5.25. Servlet</a></li>
-<li><a href="#_war">5.26. WAR</a></li>
-<li><a href="#_http_resources">5.27. HTTP Resources</a></li>
-<li><a href="#_rest_service">5.28. REST service</a></li>
-<li><a href="#_soap_service">5.29. SOAP service</a></li>
-<li><a href="#_websocket">5.30. Websocket</a></li>
-<li><a href="#_scheduler_2">5.31. Scheduler</a></li>
-<li><a href="#_quick_example_with_apache_camel">5.32. Quick example with Apache Camel</a></li>
-<li><a href="#_custom_url_handler">5.33. Custom URL handler</a></li>
-<li><a href="#_integration_tests">5.34. Integration Tests</a></li>
-<li><a href="#_distributions_docker">5.35. Distributions &amp; Docker</a></li>
-<li><a href="#_github_contributions">5.36. Github Contributions</a>
-<ul class="sectlevel3">
-<li><a href="#_introduction">5.36.1. Introduction</a></li>
-<li><a href="#_suggested_workflow">5.36.2. Suggested Workflow</a></li>
-<li><a href="#_license_reminder">5.36.3. License Reminder</a></li>
-<li><a href="#_how_to_generate_a_one_file_patch_via_throw_away_branch">5.36.4. How to Generate a One-File-Patch Via Throw-Away Branch</a></li>
-</ul>
-</li>
 </ul>
 </li>
 </ul>
@@ -3039,10 +2883,9 @@ wrapper.java.additional.1=-Dkaraf.home=%
 wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE%
 wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA%
 wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC%
-wrapper.java.additional.5=-Dcom.sun.management.jmxremote
-wrapper.java.additional.6=-Dkaraf.startLocalConsole=false
-wrapper.java.additional.7=-Dkaraf.startRemoteShell=true
-wrapper.java.additional.8=-Djava.io.tmpdir=%KARAF_DATA%/tmp
+wrapper.java.additional.5=-Dkaraf.startLocalConsole=false
+wrapper.java.additional.6=-Dkaraf.startRemoteShell=true
+wrapper.java.additional.7=-Djava.io.tmpdir=%KARAF_DATA%/tmp
 # Uncomment if you need libraries on Java 8
 #wrapper.java.additional.9=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed
 #wrapper.java.additional.10=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext
@@ -4090,6 +3933,27 @@ More over, you can also browse, download
 <div class="paragraph">
 <p>Apache Karaf embeds a complete SSHd server.</p>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>For security reason, by default, <code>karaf</code> user is disabled. To allow the logon, you have to have an user. You can enable
+<code>karaf</code> user by uncommenting the user in <code>etc/users.properties</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf = karaf,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh</pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
 <div class="sect3">
 <h4 id="_sshd_server">4.6.1. SSHd server</h4>
 <div class="paragraph">
@@ -6781,14 +6645,45 @@ providing the capabilities to satisfy th
 <div class="paragraph">
 <p>A feature has a complete lifecycle: install, start, stop, update, uninstall.</p>
 </div>
+<div class="paragraph">
+<p>By default, the feature service is able to detect bundles which need to be refreshed.
+For instance, a bundle has to be refreshed:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>when bundle A uses an import package, and bundle B is installed providing a new version of the package (matching bundle A import version range). Then bundle A has to be refreshed to use the new version of the package.</p>
+</li>
+<li>
+<p>when bundle A uses an optional import package, and bundle B is installed providing this package. Then, bundle A has to be refreshed to actually use the package.</p>
+</li>
+<li>
+<p>when bundle A uses a package provided by bundle B, then, bundle A will be refreshed as well. This is kind of "cascading" refresh.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>Some users might be concerned about this refresh behavior, and prefer to manage refresh "by hand".</p>
+</div>
+<div class="paragraph">
+<p>In that case, you can disable this auto refresh behavior using the <code>autoRefresh</code> property in <code>etc/org.apache.karaf.features.cfg</code> configuration file:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>autoRefresh=false</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>By default, <code>autoRefresh</code> is <code>true</code>. Using <code>false</code> will disable auto refresh performed by the Karaf features service.</p>
+</div>
 </div>
 <div class="sect3">
 <h4 id="_features_repositories_2">4.10.4. Features repositories</h4>
 <div class="paragraph">
-<p>The features are described in a features XML descriptor. This XML file contains the description of a set of features.</p>
+<p>The features are described in a features XML or JSON descriptor. This file contains the description of a set of features.</p>
 </div>
 <div class="paragraph">
-<p>A features XML descriptor is named a "features repository". Before being able to install a feature, you have to register
+<p>A features descriptor is named a "features repository". Before being able to install a feature, you have to register
 the features repository that provides the feature (using <code>feature:repo-add</code> command or FeatureMBean as described later).</p>
 </div>
 <div class="paragraph">
@@ -6796,7 +6691,7 @@ the features repository that provides th
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>&lt;features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"&gt;
+<pre>&lt;features name="my-features-repo" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"&gt;
   &lt;feature name="feature1" version="1.0.0"&gt;
     &lt;bundle&gt;...&lt;/bundle&gt;
     &lt;bundle&gt;...&lt;/bundle&gt;
@@ -6809,6 +6704,36 @@ the features repository that provides th
 </div>
 </div>
 <div class="paragraph">
+<p>Here&#8217;s the same descriptor in JSON format:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+ "name": "my-features-repo",
+ "feature": [
+    {
+        "name": "feature1",
+        "version": "1.0.0",
+        "bundle": [
+           { "location": "..." },
+           { "location": "..."
+        ]
+    },
+    {
+        "name": "feature2",
+        "version": "1.1.0",
+        "feature": [
+            { "name": "feature1" }
+        ]
+        "bundle": [
+            { "location": "..." }
+        ]
+    }
+ ]
+}</pre>
+</div>
+</div>
+<div class="paragraph">
 <p>We can note that the features XML has a schema. Take a look on [Features XML Schema section|provisioning-schema] of the user guide
 for details.
 The <code>feature1</code> feature is available in version <code>1.0.0</code>, and contains two bundles. The <code>&lt;bundle/&gt;</code> element contains a URL
@@ -6946,6 +6871,28 @@ configuration file, in the <code>karaf.s
   &lt;/feature&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+    "feature": [
+        {
+            "name": "my-project",
+            "version": "1.0.0"
+            "bundle": [
+                {
+                    "startLevel": 80,
+                    "location": "mvn:com.mycompany.myproject/myproject-dao"
+                },
+                {
+                    "startLeve": 85,
+                    "location": "mvn:com.mycompany.myproject/myproject-service"
+                }
+            ]
+        }
+    ]
+}</pre>
+</div>
+</div>
 <div class="paragraph">
 <p>The start-level attribute insures that the <code>myproject-dao</code> bundle is started before the bundles that use it.</p>
 </div>
@@ -6974,15 +6921,55 @@ To do so, a feature can specify the <cod
   &lt;/feature&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+    "feature": [
+        {
+            "name": "my-project",
+            "version": "1.0.0"
+            "bundle": [
+                {
+                    "startLevel": 80,
+                    "start": false,
+                    "location": "mvn:com.mycompany.myproject/myproject-dao"
+                },
+                {
+                    "startLeve": 85,
+                    "start": false,
+                    "location": "mvn:com.mycompany.myproject/myproject-service"
+                }
+            ]
+        }
+    ]
+}</pre>
+</div>
+</div>
 </div>
 <div class="sect4">
 <h5 id="_dependency">Dependency</h5>
 <div class="paragraph">
-<p>A bundle can be flagged as being a dependency, using the <code>dependency</code> attribute set to true on the <code>&lt;bundle/&gt;</code> element.</p>
+<p>A bundle can be flagged as being a dependency, using the <code>dependency</code> attribute set to true on the <code>bundle</code> element.</p>
 </div>
 <div class="paragraph">
 <p>This information can be used by resolvers to compute the full list of bundles to be installed.</p>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;bundle dependency="true"&gt;...&lt;/bundle&gt;</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+    "dependency": true,
+    "location": "..."
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The dependency flag means that the bundle will be installed only if there&#8217;s not other bundle providing the same capability.</p>
+</div>
 </div>
 </div>
 <div class="sect3">
@@ -6999,6 +6986,33 @@ To do so, a feature can specify the <cod
   &lt;/feature&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+    "feature": [
+        {
+            "name": "my-project",
+            "version": "1.0.0",
+            "feature": [
+                { "name": "other" }
+            ],
+            "bundle": [
+                {
+                    "startLevel": 80,
+                    "start": false,
+                    "location": "mvn:com.mycompany.myproject/myproject-dao"
+                },
+                {
+                    "startLevel": 85,
+                    "start": false,
+                    "location": "mvn:com.mycompany.myproject/myproject-service"
+                }
+            ]
+        }
+    ]
+}</pre>
+</div>
+</div>
 <div class="paragraph">
 <p>When the <code>my-project</code> feature will be installed, the <code>other</code> feature will be automatically installed as well.</p>
 </div>
@@ -7013,6 +7027,23 @@ To do so, a feature can specify the <cod
 &lt;/feature&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+    "feature": [
+        {
+            "name": "spring-dm",
+            "feature": [
+                {
+                    "name": "spring",
+                    "version": "[2.5.6,4)"
+                }
+            ]
+        }
+    ]
+}</pre>
+</div>
+</div>
 <div class="paragraph">
 <p>The feature with the highest version available in the range will be installed.</p>
 </div>
@@ -7030,43 +7061,90 @@ To do so, a feature can specify the <cod
 <div class="paragraph">
 <p>A prerequisite feature is a special kind of dependency. If you add the <code>prerequisite</code> attribute to dependant feature tag then it will force installation and also activation of bundles in the dependant feature before the installation of the actual feature. This may be handy in the case that bundles enlisted in a given feature are not using pre installed URLs such as <code>wrap</code> or <code>war</code>.</p>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;feature name="foo" version="1.0.0"&gt;
+    &lt;feature prerequisite="true"&gt;bar&lt;/feature&gt;
+    ...
+&lt;/feature&gt;</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+    "name": "foo",
+    "version": "1.0.0",
+    "feature": [
+        {
+            "prerequisite": true,
+            "name": "bar"
+        }
+    ]
+}</pre>
+</div>
+</div>
 </div>
 </div>
 <div class="sect3">
 <h4 id="_feature_configurations">4.10.10. Feature configurations</h4>
 <div class="paragraph">
-<p>The <code>&lt;config/&gt;</code> element in a feature XML allows a feature to create and/or populate a configuration (identified by a configuration PID).</p>
+<p>The <code>&lt;config/&gt;</code> element in a feature XML (or "config" in feature JSON) allows a feature to create and/or populate a configuration (identified by a configuration PID).</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>&lt;config name="com.foo.bar"&gt;
+<pre>...
+&lt;config name="com.foo.bar"&gt;
   myProperty = myValue
-&lt;/config&gt;</pre>
+&lt;/config&gt;
+...</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>...
+"config": [
+    {
+        "name": "com.foo.bar",
+        "value": "myProperty=myValue"
+    }
+]
+....</pre>
 </div>
 </div>
 <div class="paragraph">
-<p>The <code>name</code> attribute of the <code>&lt;config/&gt;</code> element corresponds to the configuration PID (see the [Configuration section|configuration] for details).</p>
+<p>The <code>name</code> attribute of the <code>config</code> element corresponds to the configuration PID (see the [Configuration section|configuration] for details).</p>
 </div>
 <div class="paragraph">
 <p>The installation of the feature will have the same effect as dropping a file named <code>com.foo.bar.cfg</code> in the <code>etc</code> folder.</p>
 </div>
 <div class="paragraph">
-<p>The content of the <code>&lt;config/&gt;</code> element is a set of properties, following the key=value standard.</p>
+<p>The content (value) of the <code>config</code> element is a set of properties, following the <code>key=value</code> standard.</p>
 </div>
 </div>
 <div class="sect3">
 <h4 id="_feature_configuration_files">4.10.11. Feature configuration files</h4>
 <div class="paragraph">
-<p>Instead of using the <code>&lt;config/&gt;</code> element, a feature can specify <code>&lt;configfile/&gt;</code> elements.</p>
+<p>Instead of using the <code>config</code> element, a feature can specify <code>configfile</code> elements.</p>
 </div>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;configfile finalname="/etc/myfile.cfg" override="false"&gt;URL&lt;/configfile&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>  "configfile": [
+    {
+        "finalname": "/etc/myfile.cfg",
+        "override": false,
+        "location": "URL"
+    }
+  ]</pre>
+</div>
+</div>
 <div class="paragraph">
-<p>Instead of directly manipulating the Apache Karaf configuration layer (as when using the <code>&lt;config/&gt;</code> element), the
-<code>&lt;configfile/&gt;</code> element takes directly a file specified by a URL, and copy the file in the location specified by the
+<p>Instead of directly manipulating the Apache Karaf configuration layer (as when using the <code>config</code> element), the
+<code>configfile</code> element takes directly a file specified by a URL, and copy the file in the location specified by the
 <code>finalname</code> attribute.</p>
 </div>
 <div class="paragraph">
@@ -7081,6 +7159,17 @@ ${karaf.home}, ${karaf.base}, ${karaf.et
 <pre>&lt;configfile finalname="${karaf.etc}/myfile.cfg" override="false"&gt;URL&lt;/configfile&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>  "configfile": [
+    {
+        "finalname": "${karaf.etc}/myfile.cfg",
+        "override": false,
+        "location": "URL"
+    }
+  ]</pre>
+</div>
+</div>
 <div class="paragraph">
 <p>If the file is already present at the desired location it is kept and the deployment of the configuration file is skipped,
 as a already existing file might contain customization. This behaviour can be overriden by <code>override</code> set to true.</p>
@@ -7102,6 +7191,11 @@ the features and bundles capabilities an
 <pre>&lt;requirement&gt;osgi.ee;filter:=&amp;quot;(&amp;amp;(osgi.ee=JavaSE)(!(version&amp;gt;=1.8)))&amp;quot;&lt;/requirement&gt;</pre>
 </div>
 </div>
+<div class="listingblock">
+<div class="content">
+<pre>"requirement": "osgi.ee;filter="(&amp;(osgi.ee=JavaSE)(!(version&gt;1.8)))"</pre>
+</div>
+</div>
 <div class="paragraph">
 <p>The requirement specifies that the feature will work by only if the JDK version is not 1.8 (so basically 1.7).</p>
 </div>
@@ -8976,6 +9070,27 @@ Service) in an OSGi compliant way.</p>
 <div class="paragraph">
 <p>Your applications can also use the security framework (see the developer guide for details).</p>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>For security reason, by default, <code>karaf</code> user is disabled. To allow the logon, you have to have an user. You can enable
+<code>karaf</code> user by uncommenting the user in <code>etc/users.properties</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf = karaf,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh</pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
 <div class="sect3">
 <h4 id="_realms">4.14.1. Realms</h4>
 <div class="paragraph">
@@ -13510,23 +13625,33 @@ to update the slave configuration to bin
 </div>
 </div>
 <div class="paragraph">
-<p>If you don&#8217;t need the remote JMX at all, users can remove</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>-Dcom.sun.management.jmxremote</pre>
-</div>
-</div>
-<div class="paragraph">
-<p>from bin/karaf|bin/karaf.bat to avoid opening the RMI listening port.</p>
-</div>
-<div class="paragraph">
 <p>You have to provide an username and password to access the JMX layer.
 The JMX layer uses the security framework, and so, by default, it uses the users defined in <code>etc/users.properties</code>.</p>
 </div>
 <div class="paragraph">
 <p>You can change the port numbers of the JMX layer in the <code>etc/org.apache.karaf.management.cfg</code> configuration file.</p>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>For security reason, by default, <code>karaf</code> user is disabled. To allow the logon, you have to have an user. You can enable
+<code>karaf</code> user by uncommenting the user in <code>etc/users.properties</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf = karaf,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh</pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 <div class="sect3">
 <h4 id="_configuration_6">4.18.2. Configuration</h4>
@@ -14005,14 +14130,31 @@ with the <code>/system/console</code> co
 </td>
 <td class="content">
 <div class="paragraph">
-<p>By default, only users with the <code>admin</code> role are allowed to logon to the Apache Karaf WebConsole.
-Right now, the WebConsole doesn&#8217;t use RBAC system as we have for console commands, or MBeans.</p>
+<p>For security reason, by default, <code>karaf</code> user is disabled. To allow the logon, you have to have an user. You can enable
+<code>karaf</code> user by uncommenting the user in <code>etc/users.properties</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf = karaf,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh</pre>
+</div>
+</div>
+<div class="exampleblock">
+<div class="content">
+
+</div>
 </div>
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
+<p>By default, only users with the <code>admin</code> role are allowed to logon to the Apache Karaf WebConsole.
+Right now, the WebConsole doesn&#8217;t use RBAC system as we have for console commands, or MBeans.</p>
+</div>
+<div class="exampleblock">
+<div class="content">
+<div class="paragraph">
 <p>You can change the security configuration of the webconsole in the
 <code>etc/org.apache.karaf.webconsole.cfg</code> configuration file:</p>
 </div>
@@ -14025,18 +14167,18 @@ realm=karaf
 role=admin</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>=== Scheduler</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_scheduler">4.20. Scheduler</h3>
 <div class="paragraph">
 <p>Apache Karaf provides an optional Scheduler which provides a Service Listener which listens for Runnable Services and schedules their execution, based  on the service properties.</p>
 </div>
 <div class="paragraph">
 <p>This Scheduler implementation uses the Quartz Scheduler library to understand cron-like expressions.</p>
 </div>
-<div class="sect3">
-<h4 id="_installation_4">4.20.1. Installation</h4>
+<div class="paragraph">
+<p>==== Installation</p>
+</div>
 <div class="paragraph">
 <p>To enable the Apache Karaf Scheduler, you just have to install the <code>scheduler</code> feature:</p>
 </div>
@@ -14057,9 +14199,9 @@ scheduler:unschedule
 scheduler:reschedule</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Configuration</p>
 </div>
-<div class="sect3">
-<h4 id="_configuration_7">4.20.2. Configuration</h4>
 <div class="paragraph">
 <p>All jobs allow configuration using service properties:</p>
 </div>
@@ -14112,11 +14254,9 @@ This property needs to be of type Boolea
 </tr>
 </tbody>
 </table>
-</div>
-<div class="sect3">
-<h4 id="_schedule_a_new_job_using_the_whitebox_service_paradigm_recommended">4.20.3. Schedule a new Job using the Whitebox-Service paradigm (recommended)</h4>
 <div class="paragraph">
-<p>This example uses Declarative Services to register a Service of Type "org.apache.karaf.scheduler.Job" so that it is recognized by the Scheduler Service.</p>
+<p>==== Schedule a new Job using the Whitebox-Service paradigm (recommended)
+This example uses Declarative Services to register a Service of Type "org.apache.karaf.scheduler.Job" so that it is recognized by the Scheduler Service.</p>
 </div>
 <div class="paragraph">
 <p>Alternatively, jobs can be registered as type "Runnable" in a more API neutral way. In this case you won&#8217;t get the "JobContext" information though.</p>
@@ -14203,9 +14343,9 @@ public class PingThread implements Runna
 }</code></pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Schedule a new Job using the Gogo Shell</p>
 </div>
-<div class="sect3">
-<h4 id="_schedule_a_new_job_using_the_gogo_shell">4.20.4. Schedule a new Job using the Gogo Shell</h4>
 <div class="listingblock">
 <div class="content">
 <pre>karaf@root()&gt; scheduler:schedule-script --help
@@ -14239,9 +14379,9 @@ OPTIONS
                 Name of this job</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Schedule a command</p>
 </div>
-<div class="sect3">
-<h4 id="_schedule_a_command">4.20.5. Schedule a command</h4>
 <div class="listingblock">
 <div class="content">
 <pre>karaf@root()&gt; scheduler:schedule-command --help
@@ -14274,9 +14414,9 @@ OPTIONS
                 The cron expression</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Schedule a new Job using the Scheduler Service</p>
 </div>
-<div class="sect3">
-<h4 id="_schedule_a_new_job_using_the_scheduler_service">4.20.6. Schedule a new Job using the Scheduler Service</h4>
 <div class="paragraph">
 <p>Recommendation: Before using this low level api for registering jobs, consider using the whitebox approach instead.</p>
 </div>
@@ -14302,9 +14442,9 @@ public class Demo {
 }</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Update scheduling of an existing job</p>
 </div>
-<div class="sect3">
-<h4 id="_update_scheduling_of_an_existing_job">4.20.7. Update scheduling of an existing job</h4>
 <div class="paragraph">
 <p>You can change the scheduling of an existing job using <code>scheduler:reschedule</code> command.</p>
 </div>
@@ -14312,9 +14452,9 @@ public class Demo {
 <p>This command works as the schedule command (using the same <code>at</code>, <code>period</code>, <code>cron</code>, &#8230;&#8203; options) but taking the job name
 as argument (as given by the <code>scheduler:list</code> command).</p>
 </div>
+<div class="paragraph">
+<p>==== Using shared jobs store</p>
 </div>
-<div class="sect3">
-<h4 id="_using_shared_jobs_store">4.20.8. Using shared jobs store</h4>
 <div class="paragraph">
 <p>By the default, the Apache Karaf scheduler uses a memory storage for jobs. It&#8217;s local to a single Karaf instance.</p>
 </div>
@@ -14375,12 +14515,12 @@ org.quartz.jobStore.driverDelegateClass=
 <div class="paragraph">
 <p>Then several Karaf instances scheduler will share the same JDBC job store and can work in a "clustered" way.</p>
 </div>
+<div class="paragraph">
+<p>=== Tuning</p>
 </div>
+<div class="paragraph">
+<p>==== Garbage Collection</p>
 </div>
-<div class="sect2">
-<h3 id="_tuning">4.21. Tuning</h3>
-<div class="sect3">
-<h4 id="_garbage_collection">4.21.1. Garbage Collection</h4>
 <div class="paragraph">
 <p>Like any Java applications, Apache Karaf uses a JVM. An important feature of the JVM is the Garbage Collector.</p>
 </div>
@@ -14442,8 +14582,9 @@ memory leaks, and see the possible optim
 <div class="paragraph">
 <p>You can find introduction about GC here: [<a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html" class="bare">http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html</a>].</p>
 </div>
-<div class="sect4">
-<h5 id="_java_6">Java 6</h5>
+<div class="paragraph">
+<p>===== Java 6</p>
+</div>
 <div class="paragraph">
 <p>If you have enough resources available on the machine, a good configuration may be:</p>
 </div>
@@ -14475,9 +14616,9 @@ memory leaks, and see the possible optim
 <div class="paragraph">
 <p>See <a href="http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html" class="bare">http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html</a> for details about Java 6 tuning.</p>
 </div>
+<div class="paragraph">
+<p>===== Java 7</p>
 </div>
-<div class="sect4">
-<h5 id="_java_7">Java 7</h5>
 <div class="paragraph">
 <p>Java 7 introduces a new GC algorithm: the GC1.</p>
 </div>
@@ -14500,15 +14641,15 @@ memory leaks, and see the possible optim
 <div class="paragraph">
 <p>You can find a good article about Java 7 tuning here: <a href="http://java-is-the-new-c.blogspot.de/2013/07/tuning-and-benchmarking-java-7s-garbage.html" class="bare">http://java-is-the-new-c.blogspot.de/2013/07/tuning-and-benchmarking-java-7s-garbage.html</a></p>
 </div>
+<div class="paragraph">
+<p>==== Threads</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_threads">4.21.2. Threads</h4>
 <div class="paragraph">
 <p>In a system under high load, the number of threads can be very large.</p>
 </div>
-<div class="sect4">
-<h5 id="_webcontainer">WebContainer</h5>
+<div class="paragraph">
+<p>===== WebContainer</p>
+</div>
 <div class="paragraph">
 <p>If you use the Apache Karaf WebContainer, the Jetty connectors create threads to handle the incoming HTTP requests.</p>
 </div>
@@ -14557,9 +14698,9 @@ this value, the status is "low on resour
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>===== Apache Camel</p>
 </div>
-<div class="sect4">
-<h5 id="_apache_camel">Apache Camel</h5>
 <div class="paragraph">
 <p>For instance, if you use Apache Camel inside Apache Karaf, Camel components can create a lot of threads.</p>
 </div>
@@ -14579,9 +14720,9 @@ this value, the status is "low on resour
 <div class="paragraph">
 <p>See the <a href="http://camel.apache.org" class="bare">http://camel.apache.org</a> for details.</p>
 </div>
+<div class="paragraph">
+<p>===== Apache CXF</p>
 </div>
-<div class="sect4">
-<h5 id="_apache_cxf">Apache CXF</h5>
 <div class="paragraph">
 <p>Apache CXF uses workqueues to handle server request/response.</p>
 </div>
@@ -14608,10 +14749,9 @@ to all workqueues (a workqueue can be as
 <div class="paragraph">
 <p>See the <a href="http://cxf.apache.org" class="bare">http://cxf.apache.org</a> for details.</p>
 </div>
+<div class="paragraph">
+<p>==== System packages</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_system_packages">4.21.3. System packages</h4>
 <div class="paragraph">
 <p>The <code>etc/jre.properties</code> defines the packages directly provided by the JVM.</p>
 </div>
@@ -14628,15 +14768,12 @@ to all workqueues (a workqueue can be as
 <p>In that case, you have to comment the packages in <code>etc/jre.properties</code> to avoid to be provided by the JVM and use the
 ones from the bundles.</p>
 </div>
+<div class="paragraph">
+<p>== Developer Guide</p>
 </div>
+<div class="paragraph">
+<p>=== Developer commands</p>
 </div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_developer_guide">5. Developer Guide</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_developer_commands">5.1. Developer commands</h3>
 <div class="paragraph">
 <p>As you can see in the users guide, Apache Karaf is an enterprise ready OSGi container.</p>
 </div>
@@ -14644,8 +14781,9 @@ ones from the bundles.</p>
 <p>It&#8217;s also a container designed to simplify life for developers and administrators to get details about the
 running container.</p>
 </div>
-<div class="sect3">
-<h4 id="_dump">5.1.1. Dump</h4>
+<div class="paragraph">
+<p>==== Dump</p>
+</div>
 <div class="paragraph">
 <p>If you encounter issues like performance degradations, weird behaviour, it could be helpful to have a kind of snapshot
 about the current activity of the container.</p>
@@ -14717,9 +14855,9 @@ Diagnostic dump created.</pre>
 Diagnostic dump created.</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Diagnostic</p>
 </div>
-<div class="sect3">
-<h4 id="_diagnostic">5.1.2. Diagnostic</h4>
 <div class="paragraph">
 <p>It&#8217;s not always easy for developers to understand why a bundle is not active.</p>
 </div>
@@ -14765,9 +14903,9 @@ Unsatisfied Requirements:
 [81.0] osgi.wiring.package; (&amp;(osgi.wiring.package=org.mortbay.resource)(version&gt;=6.1.0)(!(version&gt;=7.0.0)))</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Dynamic import</p>
 </div>
-<div class="sect3">
-<h4 id="_dynamic_import">5.1.3. Dynamic import</h4>
 <div class="paragraph">
 <p>The <code>bundle:dynamic-import</code> command allows you to enable or disable the dynamic import of a given bundle:</p>
 </div>
@@ -14785,9 +14923,9 @@ bundles to be considered for a wiring im
 <div class="paragraph">
 <p>The <code>bundle:dynamic-import</code> command allows or doesn&#8217;t allow this behaviour.</p>
 </div>
+<div class="paragraph">
+<p>==== OSGi framework</p>
 </div>
-<div class="sect3">
-<h4 id="_osgi_framework">5.1.4. OSGi framework</h4>
 <div class="paragraph">
 <p>The <code>system:framework</code> command allows to display the current OSGi framework in use, and enable/disable debugging inside the OSGi framework.</p>
 </div>
@@ -14801,9 +14939,9 @@ karaf@root()&gt; system:framework -nodeb
 Disabling debug for OSGi framework (felix)</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Stack traces printout</p>
 </div>
-<div class="sect3">
-<h4 id="_stack_traces_printout">5.1.5. Stack traces printout</h4>
 <div class="paragraph">
 <p>The <code>shell:stack-traces-print</code> command prints the full stack trace when the execution of a command
 throws an exception.</p>
@@ -14856,9 +14994,9 @@ karaf@root()&gt; bundle:start
 Error executing command: Access to system bundle 0 denied. You can override with -f</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Bundle tree</p>
 </div>
-<div class="sect3">
-<h4 id="_bundle_tree">5.1.6. Bundle tree</h4>
 <div class="paragraph">
 <p>The <code>bundle:tree-show</code> command shows the bundle dependency tree based on the wiring information of a given single bundle
 ID.</p>
@@ -14892,9 +15030,9 @@ org.ops4j.pax.url.wrap [40]
 +- org.ops4j.base.lang [41]</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Watch</p>
 </div>
-<div class="sect3">
-<h4 id="_watch">5.1.7. Watch</h4>
 <div class="paragraph">
 <p>The <code>bundle:watch</code> command enables watching the local Maven repository for updates on bundles.
 If the bundle file changes in the Maven repository, Apache Karaf will automatically update the bundle.</p>
@@ -14904,20 +15042,13 @@ If the bundle file changes in the Maven
 given URL will be automatically updated. It avoids needing to manually update the bundles or even copy the bundle to the
 system folder.</p>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
+</div>
+</div>
 <div class="paragraph">
 <p>Only Maven based URLs and Maven SNAPSHOTs will actually be updated automatically.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
 <div class="paragraph">
 <p>The following command:</p>
 </div>
@@ -14929,15 +15060,15 @@ system folder.</p>
 <div class="paragraph">
 <p>will monitor all bundles that have a location matching mvn:* and <em>-SNAPSHOT</em> in their URL.</p>
 </div>
+<div class="paragraph">
+<p>=== Scripting</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_scripting_2">5.2. Scripting</h3>
 <div class="paragraph">
 <p>In the console section of the users guide, we introduced the scripting support.</p>
 </div>
-<div class="sect3">
-<h4 id="_assignation">5.2.1. Assignation</h4>
+<div class="paragraph">
+<p>==== Assignation</p>
+</div>
 <div class="paragraph">
 <p>You already know the first usage of scripting: execution of command.</p>
 </div>
@@ -14979,9 +15110,9 @@ mvn:org.apache.karaf.jaas/org.apache.kar
 We access to the <code>bundle</code> variable (an array containing all bundles), and we want to display the bundle location for
 the bundle at the index 1 in the bundle array.</p>
 </div>
+<div class="paragraph">
+<p>==== Expressions</p>
 </div>
-<div class="sect3">
-<h4 id="_expressions">5.2.2. Expressions</h4>
 <div class="paragraph">
 <p>The shell has a built-in expression parser.  Expressions must be enclosed with the <code>%(...)</code> syntax.</p>
 </div>
@@ -15004,8 +15135,9 @@ karaf@root()&gt; %(SQRT(a^2 + b^2))
 1.7320508</pre>
 </div>
 </div>
-<div class="sect4">
-<h5 id="_mathematical_operators">Mathematical Operators</h5>
+<div class="paragraph">
+<p>===== Mathematical Operators</p>
+</div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -15044,9 +15176,9 @@ karaf@root()&gt; %(SQRT(a^2 + b^2))
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== Boolean Operators</p>
 </div>
-<div class="sect4">
-<h5 id="_boolean_operators">Boolean Operators</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -15101,9 +15233,9 @@ karaf@root()&gt; %(SQRT(a^2 + b^2))
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== Supported Functions</p>
 </div>
-<div class="sect4">
-<h5 id="_supported_functions">Supported Functions</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -15197,9 +15329,9 @@ karaf@root()&gt; %(SQRT(a^2 + b^2))
 <div class="paragraph">
 <p>Functions names are case insensitive.</p>
 </div>
+<div class="paragraph">
+<p>===== Supported Constants</p>
 </div>
-<div class="sect4">
-<h5 id="_supported_constants">Supported Constants</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -15226,10 +15358,9 @@ karaf@root()&gt; %(SQRT(a^2 + b^2))
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>==== List, maps, pipes and closures</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_list_maps_pipes_and_closures">5.2.3. List, maps, pipes and closures</h4>
 <div class="paragraph">
 <p>Using [], you can define an array variable:</p>
 </div>
@@ -15279,16 +15410,16 @@ karaf@root()&gt; echo2 hello world
 xxx hello world yyy</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Startup</p>
 </div>
-<div class="sect3">
-<h4 id="_startup">5.2.4. Startup</h4>
 <div class="paragraph">
 <p>The <code>etc/shell.init.script</code> file is executed at startup in each shell session, allowing the definition of additional
 variables or aliases or even complex functions. It&#8217;s like the bashrc or profile on Unix.</p>
 </div>
+<div class="paragraph">
+<p>==== Constants and variables</p>
 </div>
-<div class="sect3">
-<h4 id="_constants_and_variables">5.2.5. Constants and variables</h4>
 <div class="paragraph">
 <p>Apache Karaf console provides a set of implicit constants and variables that you can use in your script.</p>
 </div>
@@ -15319,9 +15450,9 @@ ii
 karaf@root&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Built-in variables and commands</p>
 </div>
-<div class="sect3">
-<h4 id="_built_in_variables_and_commands">5.2.6. Built-in variables and commands</h4>
 <div class="paragraph">
 <p>Apache Karaf console provides built-in variables that are very useful for scripting:</p>
 </div>
@@ -15360,9 +15491,9 @@ karaf@root&gt;</pre>
 <div class="paragraph">
 <p>See the <a href="commands">full list of <code>shell</code> commands</a> for details.</p>
 </div>
+<div class="paragraph">
+<p>==== Leveraging existing Java capabilities (via reflection)</p>
 </div>
-<div class="sect3">
-<h4 id="_leveraging_existing_java_capabilities_via_reflection">5.2.7. Leveraging existing Java capabilities (via reflection)</h4>
 <div class="paragraph">
 <p>Apache Karaf console supports loading and execution of Java classes.</p>
 </div>
@@ -15417,9 +15548,9 @@ karaf@root&gt; $map
 0                   0</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Examples</p>
 </div>
-<div class="sect3">
-<h4 id="_examples">5.2.8. Examples</h4>
 <div class="paragraph">
 <p>The following examples show some scripts defined in <code>etc/shell.init.script</code>.</p>
 </div>
@@ -15483,16 +15614,16 @@ wait-for-command = {
 }</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>=== Programmatically connect</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_programmatically_connect">5.3. Programmatically connect</h3>
 <div class="paragraph">
 <p>As described in the users guide, Apache Karaf supports remote access to both the console (by embedding a SSHd server) and
 the management layer.</p>
 </div>
-<div class="sect3">
-<h4 id="_to_the_console">5.3.1. To the console</h4>
+<div class="paragraph">
+<p>==== To the console</p>
+</div>
 <div class="paragraph">
 <p>You can write a Apache Karaf remote console client in Java (or other language).</p>
 </div>
@@ -15549,9 +15680,9 @@ public class Main {
 }</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== To the management layer</p>
 </div>
-<div class="sect3">
-<h4 id="_to_the_management_layer">5.3.2. To the management layer</h4>
 <div class="paragraph">
 <p>The Apache Karaf management layer uses JMX. Apache Karaf embeds a JMX MBeanServer that you can use remotely.</p>
 </div>
@@ -15579,12 +15710,12 @@ public class Main {
 }</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>=== Branding</p>
 </div>
+<div class="paragraph">
+<p>==== Console</p>
 </div>
-<div class="sect2">
-<h3 id="_branding">5.4. Branding</h3>
-<div class="sect3">
-<h4 id="_console_2">5.4.1. Console</h4>
 <div class="paragraph">
 <p>You can "brand" the Apache Karaf console.</p>
 </div>
@@ -15614,9 +15745,9 @@ public class Main {
 </li>
 </ol>
 </div>
+<div class="paragraph">
+<p>==== Adding a branding.properties file to etc</p>
 </div>
-<div class="sect3">
-<h4 id="_adding_a_branding_properties_file_to_etc">5.4.2. Adding a branding.properties file to etc</h4>
 <div class="paragraph">
 <p>Create a <code>etc/branding.properties</code> file similar to:</p>
 </div>
@@ -15641,23 +15772,23 @@ prompt = \u001B[1m${USER}@${APPLICATION}
 <div class="paragraph">
 <p>Start Karaf and you will see your branded Karaf console.</p>
 </div>
+<div class="paragraph">
+<p>=== Adding a branding-ssh.properties file to etc</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_adding_a_branding_ssh_properties_file_to_etc">5.5. Adding a branding-ssh.properties file to etc</h3>
 <div class="paragraph">
 <p>In a similar way, a <code>etc/branding-ssh.properties</code> file can be added. It should contain the same
 <code>welcome</code> and <code>prompt</code> entries but those will be used for external clients connecting through ssh.
 The values default to the ones in <code>etc/branding.properties</code> if this file is not defined.</p>
 </div>
-<div class="sect3">
-<h4 id="_branding_bundle">5.5.1. Branding bundle</h4>
+<div class="paragraph">
+<p>==== Branding bundle</p>
+</div>
 <div class="paragraph">
 <p>See <a href="https://github.com/apache/karaf/blob/master/examples/karaf-branding-example/README.md" class="bare">https://github.com/apache/karaf/blob/master/examples/karaf-branding-example/README.md</a></p>
 </div>
+<div class="paragraph">
+<p>==== WebConsole</p>
 </div>
-<div class="sect3">
-<h4 id="_webconsole_3">5.5.2. WebConsole</h4>
 <div class="paragraph">
 <p>It&#8217;s also possible to brand the Apache Karaf WebConsole.</p>
 </div>
@@ -15740,31 +15871,30 @@ webconsole.stylesheet = /res/karaf/ui/we
 <p>With the <code>webconsole</code> feature installed, you can install this bundle (using <code>bundle:install</code> or by editing the
 <code>etc/startup.properties</code>), you will see the WebConsole with your branding.</p>
 </div>
+<div class="paragraph">
+<p>=== Extending</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_extending">5.6. Extending</h3>
 <div class="paragraph">
 <p>Apache Karaf is a very flexible container that you can extend very easily.</p>
 </div>
-<div class="sect3">
-<h4 id="_shell_commands">5.6.1. Shell commands</h4>
+<div class="paragraph">
+<p>==== Shell commands</p>
+</div>
 <div class="paragraph">
 <p>See <a href="https://github.com/apache/karaf/blob/master/examples/karaf-command-example/README.md" class="bare">https://github.com/apache/karaf/blob/master/examples/karaf-command-example/README.md</a> to add your own shell commands.</p>
 </div>
+<div class="paragraph">
+<p>==== WebConsole</p>
 </div>
-<div class="sect3">
-<h4 id="_webconsole_4">5.6.2. WebConsole</h4>
 <div class="paragraph">
 <p>You can also extend the Apache Karaf WebConsole by providing and installing a webconsole plugin.</p>
 </div>
 <div class="paragraph">
 <p>A plugin is an OSGi bundle that registers a Servlet as an OSGi service with webconsole properties.</p>
 </div>
+<div class="paragraph">
+<p>=== Using the karaf-maven-plugin</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_using_the_karaf_maven_plugin">5.7. Using the karaf-maven-plugin</h3>
 <div class="paragraph">
 <p>The Karaf Maven plugin allows you:</p>
 </div>
@@ -15784,8 +15914,9 @@ webconsole.stylesheet = /res/karaf/ui/we
 <div class="paragraph">
 <p>See <a href="https://github.com/apache/karaf/blob/master/examples/karaf-maven-example/README.md" class="bare">https://github.com/apache/karaf/blob/master/examples/karaf-maven-example/README.md</a> for details.</p>
 </div>
-<div class="sect3">
-<h4 id="_packaging">5.7.1. Packaging</h4>
+<div class="paragraph">
+<p>==== Packaging</p>
+</div>
 <div class="paragraph">
 <p>The most generally useful features of the karaf-maven-plugin are exposed as packagings.  To use the packagings the pom or an ancestor must configure the karaf-maven-plugin with extensions:</p>
 </div>
@@ -15845,14 +15976,15 @@ webconsole.stylesheet = /res/karaf/ui/we
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>==== Commands goals</p>
 </div>
-<div class="sect3">
-<h4 id="_commands_goals">5.7.2. Commands goals</h4>
 <div class="paragraph">
 <p>The <code>karaf-maven-plugin</code> is able to generate documentation for Karaf commands</p>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_commands_generate_help_code"><code>karaf:commands-generate-help</code></h5>
+<div class="paragraph">
+<p>===== <code>karaf:commands-generate-help</code></p>
+</div>
 <div class="paragraph">
 <p>The <code>karaf:commands-generate-help</code> goal generates documentation containing Karaf commands help.</p>
 </div>
@@ -15860,8 +15992,9 @@ webconsole.stylesheet = /res/karaf/ui/we
 <p>It looks for Karaf commands in the current project class loader and generates the help as displayed with the <code>--help</code>
 option in the Karaf shell console.</p>
 </div>
-<div class="sect5">
-<h6 id="_example">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="paragraph">
 <p>The example below generates help for the commands in the current project:</p>
 </div>
@@ -15893,9 +16026,9 @@ option in the Karaf shell console.</p>
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -15927,30 +16060,22 @@ option in the Karaf shell console.</p>
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>==== Features and kar goals</p>
 </div>
 </div>
 </div>
-<div class="sect3">
-<h4 id="_features_and_kar_goals">5.7.3. Features and kar goals</h4>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
 <div class="paragraph">
 <p>You should use the features or kar packaging instead of these individual goals.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
 <div class="paragraph">
 <p>The <code>karaf-maven-plugin</code> provides several goals to help you create and verify features XML descriptors as well as leverage your features to create a custom Karaf distribution.</p>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_features_generate_descriptor_code"><code>karaf:features-generate-descriptor</code></h5>
+<div class="paragraph">
+<p>===== <code>karaf:features-generate-descriptor</code></p>
+</div>
 <div class="paragraph">
 <p>The <code>karaf:features-generate-descriptor</code> goal generates a features XML file based on the Maven dependencies.
 By default, it will follow Maven transitive dependencies, stopping when it encounters bundles already present in features that are Maven dependencies.</p>
@@ -15961,8 +16086,9 @@ By default, it will follow Maven transit
 <div class="paragraph">
 <p>You can track dependency changes and warn or fail on change.</p>
 </div>
-<div class="sect5">
-<h6 id="_configuration_8">Configuration</h6>
+<div class="paragraph">
+<p>====== Configuration</p>
+</div>
 <div class="paragraph">
 <p>Specify the packaging as a top level element</p>
 </div>
@@ -16038,9 +16164,9 @@ This can be overridden by specifying the
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>====== Example</p>
 </div>
-<div class="sect5">
-<h6 id="_example_2">Example</h6>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;project&gt;
@@ -16078,10 +16204,9 @@ This can be overridden by specifying the
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== <code>karaf:verify</code></p>
 </div>
-</div>
-<div class="sect4">
-<h5 id="_code_karaf_verify_code"><code>karaf:verify</code></h5>
 <div class="paragraph">
 <p>Except in unusual circumstances, use the <code>&lt;packaging&gt;feature&lt;/packaging&gt;</code> to run this goal.</p>
 </div>
@@ -16094,8 +16219,9 @@ for the bundles defined in the features
 It means that it&#8217;s not required to explicitly define the Karaf features descriptor in the repository section of
 your features descriptor.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_3">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="paragraph">
 <p>The example below validates the features defined in the <code>target/features.xml</code> by checking all the imports and exports.
 It reads the definition for the packages that are exported by the system bundle from the <code>src/main/resources/config.properties</code> file.</p>
@@ -16136,9 +16262,9 @@ It reads the definition for the packages
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_2">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -16175,10 +16301,9 @@ It reads the definition for the packages
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== <code>karaf:features-add-to-repository</code></p>
 </div>
-</div>
-<div class="sect4">
-<h5 id="_code_karaf_features_add_to_repository_code"><code>karaf:features-add-to-repository</code></h5>
 <div class="paragraph">
 <p>Consider using the karaf-assembly packaging which makes it easy to assemble a custom distribution in one step instead
 of this individual goal.</p>
@@ -16190,8 +16315,9 @@ You can use this goal to create a <code>
 <div class="paragraph">
 <p>By default, the Karaf core features descriptors (standard and enterprise) are automatically included in the descriptors set.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_4">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="paragraph">
 <p>The example below copies the bundles for the <code>spring</code> and <code>war</code> features defined in the Karaf features XML descriptor
 into the <code>target/features-repo</code> directory.</p>
@@ -16233,9 +16359,9 @@ into the <code>target/features-repo</cod
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_3">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -16272,24 +16398,16 @@ into the <code>target/features-repo</cod
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== <code>karaf:create-kar</code></p>
+</div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_create_kar_code"><code>karaf:create-kar</code></h5>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
 <div class="paragraph">
 <p>Except in unusual circumstances, use the <code>&lt;packaging&gt;kar&lt;/packaging&gt;</code> to run this goal.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
 <div class="paragraph">
 <p>The <code>karaf:kar</code> goal assembles a KAR archive from a features XML descriptor file, normally generated in the same project
 with the <code>karaf:features-generate-descriptor</code> goal.</p>
@@ -16314,8 +16432,9 @@ Therefore resources you want installed i
 This choice is so other resources such as legal files from the maven-remote-resources-plugin can be included under
 META-INF in the kar, without getting installed into Karaf.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_5">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;project&gt;
@@ -16335,39 +16454,31 @@ META-INF in the kar, without getting ins
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== <code>karaf:install-kar</code></p>
 </div>
+<div class="paragraph">
+<p>==== Instances and distributions goals</p>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_install_kar_code"><code>karaf:install-kar</code></h5>
-
-</div>
-</div>
-<div class="sect3">
-<h4 id="_instances_and_distributions_goals">5.7.4. Instances and distributions goals</h4>
 <div class="paragraph">
 <p>The <code>karaf-maven-plugin</code> helps you to build custom Karaf distributions or archives existing Karaf instances:</p>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_assembly_code"><code>karaf:assembly</code></h5>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
 <div class="paragraph">
-<p>This goal is run as part of the karaf-assembly packaging.</p>
+<p>===== <code>karaf:assembly</code></p>
 </div>
-</td>
-</tr>
-</table>
 </div>
+</div>
+<div class="paragraph">
+<p>This goal is run as part of the karaf-assembly packaging.</p>
+</div>
+<div class="exampleblock">
+<div class="content">
 <div class="paragraph">
 <p>The <code>karaf:assembly</code> goal creates a Karaf instance (assembly) filesystem using the Maven dependencies and a provided configuration.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_6">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="listingblock">
 <div class="content">
 <pre>    ...
@@ -16467,9 +16578,9 @@ META-INF in the kar, without getting ins
     &lt;/build&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_4">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -16631,32 +16742,25 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== <code>karaf:archive</code></p>
+</div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_archive_code"><code>karaf:archive</code></h5>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
 <div class="paragraph">
 <p>This goal is run as part of the karaf-assembly packaging.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
 <div class="paragraph">
 <p>The <code>karaf:archive</code> goal packages a Karaf instance archive from a given assembled instance.</p>
 </div>
 <div class="paragraph">
 <p>Both tar.gz and zip formats are generated in the destination folder.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_7">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="paragraph">
 <p>The example below create archives for the given Karaf instance:</p>
 </div>
@@ -16689,9 +16793,9 @@ META-INF in the kar, without getting ins
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_5">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -16758,24 +16862,24 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>==== Run, client, deploy goals</p>
 </div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_run_client_deploy_goals">5.7.5. Run, client, deploy goals</h4>
 <div class="paragraph">
 <p>These goals allows you to run Karaf via Maven or interact with a running instance.</p>
 </div>
-<div class="sect4">
-<h5 id="_code_karaf_run_code"><code>karaf:run</code></h5>
+<div class="paragraph">
+<p>===== <code>karaf:run</code></p>
+</div>
 <div class="paragraph">
 <p><code>karaf:run</code> goal runs a Karaf instance from Maven.</p>
 </div>
 <div class="paragraph">
 <p>It can use the current project if it&#8217;s a bundle to directly deploy the project artifact in the running Karaf instance.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_8">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="listingblock">
 <div class="content">
 <pre>    &lt;build&gt;
@@ -16801,9 +16905,9 @@ META-INF in the kar, without getting ins
     &lt;/build&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_6">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -16855,15 +16959,15 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== <code>karaf:client</code></p>
 </div>
-</div>
-<div class="sect4">
-<h5 id="_code_karaf_client_code"><code>karaf:client</code></h5>
 <div class="paragraph">
 <p>The <code>karaf:client</code> interacts with a running Karaf instance directly from Maven via SSH.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_9">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;execution&gt;
@@ -16882,9 +16986,9 @@ META-INF in the kar, without getting ins
 &lt;/execution&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_7">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -16951,16 +17055,15 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== <code>karaf:deploy</code></p>
 </div>
-</div>
-<div class="sect4">
-<h5 id="_code_karaf_deploy_code"><code>karaf:deploy</code></h5>
 <div class="paragraph">
 <p>The <code>karaf:deploy</code> goal allows you to deploy bundles on a running Karaf instance (via SSH or JMX).</p>
 </div>
+<div class="paragraph">
+<p>===== Example</p>
 </div>
-<div class="sect4">
-<h5 id="_example_10">Example</h5>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;execution&gt;
@@ -16974,9 +17077,9 @@ META-INF in the kar, without getting ins
 &lt;/execution&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Parameters</p>
 </div>
-<div class="sect4">
-<h5 id="_parameters_8">Parameters</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -17048,20 +17151,21 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>==== Dockerfile, Docker</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_dockerfile_docker">5.7.6. Dockerfile, Docker</h4>
 <div class="paragraph">
 <p>The Karaf Maven plugin is also able to generate Dockerfile and eventually interact with a local Docker daemon.</p>
 </div>
-<div class="sect4">
-<h5 id="_dockerfile">Dockerfile</h5>
+<div class="paragraph">
+<p>===== Dockerfile</p>
+</div>
 <div class="paragraph">
 <p>The <code>karaf:dockerfile</code> goal creates a ready to use Dockerfile for a given Karaf distribution/assembly.</p>
 </div>
-<div class="sect5">
-<h6 id="_example_11">Example</h6>
+<div class="paragraph">
+<p>====== Example</p>
+</div>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;execution&gt;
@@ -17072,9 +17176,9 @@ META-INF in the kar, without getting ins
 &lt;/execution&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_9">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -17101,29 +17205,22 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>===== Docker</p>
 </div>
-</div>
-<div class="sect4">
-<h5 id="_docker_2">Docker</h5>
 <div class="paragraph">
 <p>The <code>karaf:docker</code> goal interacts directly with a local Docker daemon (via the command line) to directly create a Docker image with your Karaf assembly.</p>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
+</div>
+</div>
 <div class="paragraph">
 <p>This goal requires a local Docker daemon and runs only on Unix. The <code>docker</code> command has to be in the <code>PATH</code>.</p>
 </div>
-</td>
-</tr>
-</table>
+<div class="exampleblock">
+<div class="content">
+<div class="paragraph">
+<p>====== Example</p>
 </div>
-<div class="sect5">
-<h6 id="_example_12">Example</h6>
 <div class="listingblock">
 <div class="content">
 <pre>&lt;execution&gt;
@@ -17134,9 +17231,9 @@ META-INF in the kar, without getting ins
 &lt;/execution&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>====== Parameters</p>
 </div>
-<div class="sect5">
-<h6 id="_parameters_10">Parameters</h6>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -17163,12 +17260,9 @@ META-INF in the kar, without getting ins
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>=== Custom distributions</p>
 </div>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_custom_distributions">5.8. Custom distributions</h3>
 <div class="paragraph">
 <p>As Karaf is an OSGi container, it&#8217;s heavily used as as application and middleware kernel.</p>
 </div>
@@ -17203,8 +17297,9 @@ META-INF in the kar, without getting ins
 <div class="paragraph">
 <p>See <a href="https://github.com/apache/karaf/tree/master/examples/karaf-maven-example/karaf-maven-example-assembly" class="bare">https://github.com/apache/karaf/tree/master/examples/karaf-maven-example/karaf-maven-example-assembly</a> for a custom distribution example.</p>
 </div>
-<div class="sect3">
-<h4 id="_maven_assembly">5.8.1. Maven assembly</h4>
+<div class="paragraph">
+<p>==== Maven assembly</p>
+</div>
 <div class="paragraph">
 <p>The recommended way to create a Karaf server assembly is to use the karaf-assembly packaging with the karaf-maven-plugin.
 This assembles a server from the maven dependencies in the project pom.  After explanation of the configuration options
@@ -17218,8 +17313,9 @@ limitations we have to simulate rather t
 <p>This packaging creates tar.gz and zip archives containing the assembled server.
 They are identical except that zip archives don&#8217;t unpack with appropriate unix file permissions for the scripts.</p>
 </div>
-<div class="sect4">
-<h5 id="_maven_dependencies">Maven dependencies</h5>
+<div class="paragraph">
+<p>===== Maven dependencies</p>
+</div>
 <div class="paragraph">
 <p>Maven dependencies in a karaf-assembly project can be feature repositories (classifier "features") or kar archives.
 Feature repositories are installed in the internal "system" Maven structured repository.
@@ -17241,9 +17337,9 @@ in the karaf-maven-plugin configuration.
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>===== Plugin configuration</p>
 </div>
-<div class="sect4">
-<h5 id="_plugin_configuration">Plugin configuration</h5>
 <div class="paragraph">
 <p>Control how features are installed using these elements referring to features from installed feature repositories:</p>
 </div>
@@ -17281,9 +17377,9 @@ For instance:</p>
 &lt;/libraries&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Minimal Distribution Example</p>
 </div>
-<div class="sect4">
-<h5 id="_minimal_distribution_example">Minimal Distribution Example</h5>
 <div class="paragraph">
 <p>This is the minimal assembly pom changed to use the packaging and annotated</p>
 </div>
@@ -17359,9 +17455,9 @@ For instance:</p>
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Custom Distribution Example</p>
 </div>
-<div class="sect4">
-<h5 id="_custom_distribution_example">Custom Distribution Example</h5>
 <div class="paragraph">
 <p>It&#8217;s possible to specify feature versions using the name/version format.</p>
 </div>
@@ -17447,10 +17543,9 @@ For instance:</p>
 &lt;/project&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== (deprecated old style) Maven assembly</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_deprecated_old_style_maven_assembly">5.8.2. (deprecated old style) Maven assembly</h4>
 <div class="paragraph">
 <p>Basically a Karaf custom distribution involves:</p>
 </div>
@@ -17914,10 +18009,9 @@ assembly descriptor, configured in POM a
 <div class="paragraph">
 <p>You will find your Karaf custom distribution tar.gz in the target directory.</p>
 </div>
+<div class="paragraph">
+<p>=== Creating Bundles</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_creating_bundles">5.9. Creating Bundles</h3>
 <div class="paragraph">
 <p>The examples provides different kind of bundles and services definition:</p>
 </div>
@@ -17934,8 +18028,9 @@ assembly descriptor, configured in POM a
 </li>
 </ul>
 </div>
-<div class="sect3">
-<h4 id="_add_extended_information_to_bundles">5.9.1. Add extended information to bundles</h4>
+<div class="paragraph">
+<p>==== Add extended information to bundles</p>
+</div>
 <div class="paragraph">
 <p>Karaf supports a OSGI-INF/bundle.info file in a bundle.
 This file is an extended description of the bundle.
@@ -17965,9 +18060,9 @@ h1. SEE ALSO
 <pre>root@karaf&gt; bundles:info</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Wiki Syntax</p>
 </div>
-<div class="sect3">
-<h4 id="_wiki_syntax">5.9.2. Wiki Syntax</h4>
 <div class="paragraph">
 <p>Karaf supports some simple wiki syntax in bundle info files:</p>
 </div>
@@ -17979,12 +18074,12 @@ h1. SEE ALSO
 **text** : bold text</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>=== Creating bundles for non OSGi third party dependencies</p>
 </div>
+<div class="paragraph">
+<p>==== Dynamically wrapping jars</p>
 </div>
-<div class="sect2">
-<h3 id="_creating_bundles_for_non_osgi_third_party_dependencies">5.10. Creating bundles for non OSGi third party dependencies</h3>
-<div class="sect3">
-<h4 id="_dynamically_wrapping_jars">5.10.1. Dynamically wrapping jars</h4>
 <div class="paragraph">
 <p>Karaf supports the wrap: protocol execution.</p>
 </div>
@@ -18048,9 +18143,9 @@ h1. SEE ALSO
 &lt;/features&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Statically bundling jars</p>
 </div>
-<div class="sect3">
-<h4 id="_statically_bundling_jars">5.10.2. Statically bundling jars</h4>
 <div class="paragraph">
 <p>You can also create a wrap bundle for a third party dependency.
 This bundle is simply a Maven POM that shades an existing jar and package into a jar bundle.</p>
@@ -18145,33 +18240,34 @@ This bundle is simply a Maven POM that s
 <pre>root@karaf&gt; bundles:install -s mvn:osgi.commons-lang/osgi.commons-lang/2.4</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>=== Blueprint</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="_blueprint">5.11. Blueprint</h3>
 <div class="paragraph">
 <p>See <a href="https://github.com/apache/karaf/blob/master/examples/karaf-blueprint-example/README.md" class="bare">https://github.com/apache/karaf/blob/master/examples/karaf-blueprint-example/README.md</a></p>
 </div>
+<div class="paragraph">
+<p>=== SCR</p>
 </div>
-<div class="sect2">
-<h3 id="_scr">5.12. SCR</h3>
 <div class="paragraph">
 <p>See <a href="https://github.com/apache/karaf/tree/master/examples/karaf-scr-example" class="bare">https://github.com/apache/karaf/tree/master/examples/karaf-scr-example</a></p>
 </div>
+<div class="paragraph">
+<p>=== Archetypes</p>
 </div>
-<div class="sect2">
-<h3 id="_archetypes">5.13. Archetypes</h3>
 <div class="paragraph">
 <p>Karaf provides archetypes to easily create commands, manage features or repository and create a kar archive.
 This section describes each of them and explain How to use it.</p>
 </div>
-<div class="sect3">
-<h4 id="_create_a_command_karaf_command_archetype">5.13.1. Create a command (karaf-command-archetype)</h4>
+<div class="paragraph">
+<p>==== Create a command (karaf-command-archetype)</p>
+</div>
 <div class="paragraph">
 <p>This archetype creates a Maven skeleton project that you will use to develop new Karaf commands.</p>
 </div>
-<div class="sect4">
-<h5 id="_command_line">Command line</h5>
+<div class="paragraph">
+<p>===== Command line</p>
+</div>
 <div class="paragraph">
 <p>Using the command line, we can create our project:</p>
 </div>
@@ -18187,9 +18283,9 @@ This section describes each of them and
   -Dpackage=com.mycompany.package</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Additional parameters</p>
 </div>
-<div class="sect4">
-<h5 id="_additional_parameters">Additional parameters</h5>
 <div class="paragraph">
 <p>During the maven creation process, additional questions will be asked on the console :</p>
 </div>
@@ -18208,9 +18304,9 @@ This description will be displayed in th
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>===== Result of Maven command execution</p>
 </div>
-<div class="sect4">
-<h5 id="_result_of_maven_command_execution">Result of Maven command execution</h5>
 <div class="listingblock">
 <div class="content">
 <pre>[INFO] Scanning for projects...
@@ -18271,16 +18367,16 @@ scope: my
 <div class="paragraph">
 <p>Next, you can import your project in Eclipse/IntelliJ and developp the Karaf command.</p>
 </div>
+<div class="paragraph">
+<p>==== Create an OSGi bundle (karaf-bundle-archetype)</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_create_an_osgi_bundle_karaf_bundle_archetype">5.13.2. Create an OSGi bundle (karaf-bundle-archetype)</h4>
 <div class="paragraph">
 <p>This archetype creates a Maven skeleton to create an OSGi bundle, including a bundle Activator (a special callback
 class for bundle start/stop).</p>
 </div>
-<div class="sect4">
-<h5 id="_command_line_2">Command line</h5>
+<div class="paragraph">
+<p>===== Command line</p>
+</div>
 <div class="paragraph">
 <p>Using the command line, we can create our project:</p>
 </div>
@@ -18296,9 +18392,9 @@ class for bundle start/stop).</p>
     -Dpackage=com.mycompany.package</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Result of Maven command execution</p>
 </div>
-<div class="sect4">
-<h5 id="_result_of_maven_command_execution_2">Result of Maven command execution</h5>
 <div class="listingblock">
 <div class="content">
 <pre>[INFO] Scanning for projects...
@@ -18346,16 +18442,16 @@ package: com.mycompany.package
 [INFO] ------------------------------------------------------------------------</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Create an OSGi blueprint bundle (karaf-blueprint-archetype)</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_create_an_osgi_blueprint_bundle_karaf_blueprint_archetype">5.13.3. Create an OSGi blueprint bundle (karaf-blueprint-archetype)</h4>
 <div class="paragraph">
 <p>This archetype creates a Maven skeleton project to create an OSGi blueprint bundle, including a sample bean exposed as
 an OSGi service in the blueprint XML descriptor.</p>
 </div>
-<div class="sect4">
-<h5 id="_command_line_3">Command line</h5>
+<div class="paragraph">
+<p>===== Command line</p>
+</div>
 <div class="paragraph">
 <p>Using the command line, we can create our project:</p>
 </div>
@@ -18371,9 +18467,9 @@ an OSGi service in the blueprint XML des
     -Dpackage=com.mycompany.blueprint</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Result of Maven command execution</p>
 </div>
-<div class="sect4">
-<h5 id="_result_of_maven_command_execution_3">Result of Maven command execution</h5>
 <div class="listingblock">
 <div class="content">
 <pre>[INFO] Scanning for projects...
@@ -18421,16 +18517,16 @@ package: com.mycompany.package
 [INFO] ------------------------------------------------------------------------</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Create a features XML (karaf-feature-archetype)</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_create_a_features_xml_karaf_feature_archetype">5.13.4. Create a features XML (karaf-feature-archetype)</h4>
 <div class="paragraph">
 <p>This archetype creates a Maven skeleton project which create a features XML file, using the dependencies that you define
 in the POM.</p>
 </div>
-<div class="sect4">
-<h5 id="_command_line_4">Command line</h5>
+<div class="paragraph">
+<p>===== Command line</p>
+</div>
 <div class="paragraph">
 <p>Using the command line, we can create our project:</p>
 </div>
@@ -18446,9 +18542,9 @@ in the POM.</p>
     -Dpackage=my.company.package</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Result of maven command execution</p>
 </div>
-<div class="sect4">
-<h5 id="_result_of_maven_command_execution_4">Result of maven command execution</h5>
 <div class="listingblock">
 <div class="content">
 <pre>[INFO] Scanning for projects...
@@ -18496,15 +18592,15 @@ package: com.mycompany.package
 [INFO] ------------------------------------------------------------------------</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Create a KAR file (karaf-kar-archetype)</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_create_a_kar_file_karaf_kar_archetype">5.13.5. Create a KAR file (karaf-kar-archetype)</h4>
 <div class="paragraph">
 <p>This archetype creates a Maven skeleton project including a features XML sample, used to generate a KAR file.</p>
 </div>
-<div class="sect4">
-<h5 id="_command_line_5">Command line</h5>
+<div class="paragraph">
+<p>===== Command line</p>
+</div>
 <div class="paragraph">
 <p>Using the command line, we can create our project:</p>
 </div>
@@ -18520,9 +18616,9 @@ package: com.mycompany.package
     -Dpackage=com.mycompany.package</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Result of maven command execution</p>
 </div>
-<div class="sect4">
-<h5 id="_result_of_maven_command_execution_5">Result of maven command execution</h5>
 <div class="listingblock">
 <div class="content">
 <pre>[INFO] Scanning for projects...
@@ -18570,11 +18666,9 @@ package: com.mycompany.package
 [INFO] ------------------------------------------------------------------------</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>=== Security framework</p>
 </div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_security_framework">5.14. Security framework</h3>
 <div class="paragraph">
 <p>Karaf supports <a href="http://download.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html">JAAS</a> with
 some enhancements to allow JAAS to work nicely in an OSGi environment.</p>
@@ -18582,8 +18676,9 @@ some enhancements to allow JAAS to work
 <div class="paragraph">
 <p>This framework also features an OSGi keystore manager with the ability to deploy new keystores or truststores at runtime.</p>
 </div>
-<div class="sect3">
-<h4 id="_overview_2">5.14.1. Overview</h4>
+<div class="paragraph">
+<p>==== Overview</p>
+</div>
 <div class="paragraph">
 <p>This feature allows runtime deployment of JAAS based configuration for use in various parts of the application. This
 includes the remote console login, which uses the <code>karaf</code> realm, but which is configured with a dummy login module
@@ -18597,9 +18692,9 @@ up HTTPS connectors or using certificate
 <div class="paragraph">
 <p>A very simple XML schema for spring has been defined, allowing the deployment of a new realm or a new keystore very easily.</p>
 </div>
+<div class="paragraph">
+<p>==== Schema and Deployer</p>
 </div>
-<div class="sect3">
-<h4 id="_schema_and_deployer">5.14.2. Schema and Deployer</h4>
 <div class="paragraph">
 <p>To override or deploy a new realm, you can use the following XSD which is supported by a Blueprint namespace handler and
 can thus be defined in a Blueprint xml configuration file.
@@ -18666,8 +18761,9 @@ The content of the <code>module</code> e
 <div class="paragraph">
 <p>Deploying such a code will lead to a JaasRealm object in the OSGi registry, which will then be used when using the JAAS login module.</p>
 </div>
-<div class="sect4">
-<h5 id="_configuration_override_and_use_of_the_code_rank_code_attribute">Configuration override and use of the <code>rank</code> attribute</h5>
+<div class="paragraph">
+<p>===== Configuration override and use of the <code>rank</code> attribute</p>
+</div>
 <div class="paragraph">
 <p>The <code>rank</code> attribute on the <code>config</code> element is tied to the ranking of the underlying OSGi service.  When the JAAS
 framework performs an authentication, it will use the realm name to find a matching JAAS configuration.  If multiple
@@ -18696,10 +18792,9 @@ JMX layer), you need to deploy a JAAS co
 &lt;/blueprint&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Architecture</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_architecture">5.14.3. Architecture</h4>
 <div class="paragraph">
 <p>Due to constraints in the JAAS specification, one class has to be available for all bundles.
 This class is called ProxyLoginModule and is a LoginModule that acts as a proxy for an OSGi defined LoginModule.
@@ -18723,17 +18818,18 @@ allows you to manipulate users and roles
 The backend engine is constructed by a backend engine factory, registered as an OSGi service.
 Some login modules (for security reasons for instance) don&#8217;t provide backend engine.</p>
 </div>
+<div class="paragraph">
+<p>==== Available realm and login modules</p>
 </div>
-<div class="sect3">
-<h4 id="_available_realm_and_login_modules">5.14.4. Available realm and login modules</h4>
 <div class="paragraph">
 <p>Karaf comes with a default realm named "karaf" using login modules.</p>
 </div>
 <div class="paragraph">
 <p>Karaf also provides a set of login modules and backend engines to handle authentication needs for your environment.</p>
 </div>
-<div class="sect4">
-<h5 id="_propertiesloginmodule">PropertiesLoginModule</h5>
+<div class="paragraph">
+<p>===== PropertiesLoginModule</p>
+</div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -18851,9 +18947,9 @@ shows how to register the PropertiesLogi
 &lt;/blueprint&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== OsgiConfigLoginModule</p>
 </div>
-<div class="sect4">
-<h5 id="_osgiconfigloginmodule">OsgiConfigLoginModule</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -18924,23 +19020,16 @@ user.user=password,role</pre>
 &lt;/blueprint&gt;</pre>
 </div>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
+</div>
+</div>
 <div class="paragraph">
 <p>The OsgiConfigLoginModule doesn&#8217;t provide a backend engine.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
+<div class="paragraph">
+<p>===== JDBCLoginModule</p>
 </div>
-<div class="sect4">
-<h5 id="_jdbcloginmodule">JDBCLoginModule</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -19042,20 +19131,13 @@ services via JNDI.</p>
 </li>
 </ul>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
+</div>
+</div>
 <div class="paragraph">
 <p>The groups are not fully supported by the JDBCBackingEngine.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
 <div class="paragraph">
 <p>The following blueprint shows how to define the JDBCLoginModule with the corresponding backend engine:</p>
 </div>
@@ -19084,9 +19166,9 @@ services via JNDI.</p>
 &lt;/blueprint&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== LDAPLoginModule</p>
 </div>
-<div class="sect4">
-<h5 id="_ldaploginmodule">LDAPLoginModule</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -19299,24 +19381,17 @@ default <code>karaf</code> realm):</p>
 &lt;/jaas:config&gt;</pre>
 </div>
 </div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
+</div>
+</div>
 <div class="paragraph">
 <p>The LDAPLoginModule doesn&#8217;t provide backend engine. It means that the administration of the users and roles should be
 performed directly on the LDAP backend.</p>
 </div>
-</td>
-</tr>
-</table>
-</div>
+<div class="exampleblock">
+<div class="content">
+<div class="paragraph">
+<p>===== KerberosLoginModule</p>
 </div>
-<div class="sect4">
-<h5 id="_kerberosloginmodule">KerberosLoginModule</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -19380,9 +19455,9 @@ Here is a simple example of a krb5 confi
  example.com = EXAMPLE.COM</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== GSSAPILdapLoginModule</p>
 </div>
-<div class="sect4">
-<h5 id="_gssapildaploginmodule">GSSAPILdapLoginModule</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -19437,9 +19512,9 @@ Typical use is using this and a Kerberos
 <div class="paragraph">
 <p>Note the <em>gssapiRealm</em> property of the LDAP login module that match the name of the Kerberos Configuration.</p>
 </div>
+<div class="paragraph">
+<p>===== SyncopeLoginModule</p>
 </div>
-<div class="sect4">
-<h5 id="_syncopeloginmodule">SyncopeLoginModule</h5>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
 <col style="width: 50%;">
@@ -19544,10 +19619,9 @@ users and roles directly from Karaf. To
 &lt;/blueprint&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>==== Encryption service</p>
 </div>
-</div>
-<div class="sect3">
-<h4 id="_encryption_service">5.14.5. Encryption service</h4>
 <div class="paragraph">
 <p>The EncryptionService is a service registered in the OSGi registry providing means to encrypt and check encrypted passwords.
 This service acts as a factory for Encryption objects actually performing the encryption.</p>
@@ -19555,8 +19629,9 @@ This service acts as a factory for Encry
 <div class="paragraph">
 <p>This service is used in all Karaf login modules to support encrypted passwords.</p>
 </div>
-<div class="sect4">
-<h5 id="_configuring_properties">Configuring properties</h5>
+<div class="paragraph">
+<p>===== Configuring properties</p>
+</div>
 <div class="paragraph">
 <p>Each login module supports the following additional set of properties:</p>
 </div>
@@ -19622,16 +19697,16 @@ This service acts as a factory for Encry
 &lt;/jaas:config&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Prefix and suffix</p>
 </div>
-<div class="sect4">
-<h5 id="_prefix_and_suffix">Prefix and suffix</h5>
 <div class="paragraph">
 <p>The login modules have the ability to support both encrypted and plain passwords at the same time.
 In some cases, some login modules may be able to encrypt the passwords on the fly and save them back in an encrypted form.</p>
 </div>
+<div class="paragraph">
+<p>===== Jasypt</p>
 </div>
-<div class="sect4">
-<h5 id="_jasypt">Jasypt</h5>
 <div class="paragraph">
 <p>Karaf default installation comes with a simple encryption service which usually fullfill simple needs. However, in some
 cases, you may want to install the Jasypt (<a href="http://www.jasypt.org/" class="bare">http://www.jasypt.org/</a>) library which provides stronger encryption algorithms
@@ -19707,9 +19782,9 @@ and more control over them.</p>
 &lt;/jaas:config&gt;</pre>
 </div>
 </div>
+<div class="paragraph">
+<p>===== Using encrypted property placeholders</p>
 </div>
-<div class="sect4">

[... 357 lines stripped ...]