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 2020/11/04 17:13:11 UTC
svn commit: r1883125 [2/3] - in /karaf/site/production/manual/latest: ./
commands/
Modified: karaf/site/production/manual/latest/ejb.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/ejb.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/ejb.html (original)
+++ karaf/site/production/manual/latest/ejb.html Wed Nov 4 17:13:10 2020
@@ -631,7 +631,7 @@ openejb-soap | 4.5.2 |
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-20 06:47:46 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/extending.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/extending.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/extending.html (original)
+++ karaf/site/production/manual/latest/extending.html Wed Nov 4 17:13:10 2020
@@ -550,7 +550,7 @@ table.CodeRay td.code>pre{padding:0}
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-25 06:20:02 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/failover.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/failover.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/failover.html (original)
+++ karaf/site/production/manual/latest/failover.html Wed Nov 4 17:13:10 2020
@@ -533,7 +533,7 @@ table.CodeRay td.code>pre{padding:0}
and the others are in standby.</p>
</div>
<div class="paragraph">
-<p>If you are looking for cluster of Apache Karaf instances (active/active), [Apache Karaf Cellar|http://karaf.apache.org/index/subprojects/cellar.html] is a solution.</p>
+<p>If you are looking for cluster of Apache Karaf instances (active/active), <a href="https://karaf.apache.org/projects.html">Apache Karaf Cellar</a> is a solution.</p>
</div>
<div class="paragraph">
<p>Karaf provides failover capability using either a simple lock file or a JDBC locking mechanism.
@@ -928,7 +928,7 @@ to update the slave configuration to bin
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-20 06:47:46 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/github-contributions.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/github-contributions.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/github-contributions.html (original)
+++ karaf/site/production/manual/latest/github-contributions.html Wed Nov 4 17:13:10 2020
@@ -632,7 +632,7 @@ git format-patch archon/trunk</pre>
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-20 06:47:46 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/http.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/http.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/http.html (original)
+++ karaf/site/production/manual/latest/http.html Wed Nov 4 17:13:10 2020
@@ -529,23 +529,55 @@ table.CodeRay td.code>pre{padding:0}
<div class="sect3">
<h4 id="_http_service">Http Service</h4>
<div class="paragraph">
-<p>The Karaf http feature enables the Pax Web implementation of the OSGi HTTPService.</p>
+<p>Apache Karaf supports several Http Services:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>http</code> feature installs Http Service powered by Pax Web</p>
+</li>
+<li>
+<p><code>felix-http</code> feature installs Http Service powered by Apache Felix HTTP</p>
+</li>
+</ul>
</div>
<div class="sect4">
-<h5 id="_installing_the_http_feature">Installing the HTTP feature</h5>
+<h5 id="_installing_the_http_service">Installing the Http Service</h5>
+<div class="paragraph">
+<p>If you want to use Pax Web Http Service, you have to install the <code>http</code> feature:</p>
+</div>
<div class="listingblock">
<div class="content">
<pre>root@karaf()> feature:install http</pre>
</div>
</div>
<div class="paragraph">
-<p>Test the HTTP service is up by pointing your browser to [<a href="http://localhost:8181/" class="bare">http://localhost:8181/</a>].</p>
+<p>NB: the HTTP service will be actually bound only when at least one web application will use it.</p>
+</div>
+<div class="paragraph">
+<p>If you want to use Apache Felix Http Service, you have to install <code>felix-http</code> feature:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>root@karaf()> feature:install felix-http</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you want to test the HTTP service, you can install the <code>webconsole</code> feature:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>root@karaf()> feature:install webconsole</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, you can test the HTTP service by accessing the Apache Karaf WebConsole pointing your browser to [<a href="http://localhost:8181/system/console" class="bare">http://localhost:8181/system/console</a>].</p>
</div>
</div>
<div class="sect4">
<h5 id="_configuring_the_httpservice">Configuring the HTTPService</h5>
<div class="paragraph">
-<p>By default the HTTPService listens on port 8181 you can change the port by creating a file <code>etc/org.ops4j.pax.web.cfg</code> with the following content:</p>
+<p>By default the HTTPService listens on port 8181 you can change the port by creating a file <code>etc/org.ops4j.pax.web.cfg</code> (if you use the Pax Web Http Service) with the following content:</p>
</div>
<div class="listingblock">
<div class="content">
@@ -563,11 +595,14 @@ table.CodeRay td.code>pre{padding:0}
<div class="paragraph">
<p>If the http feature is already installed the change will take effect immediately.</p>
</div>
+<div class="paragraph">
+<p>If you use Apache Felix Http Service, it’s basically the same but the configuration is <code>etc/org.apache.felix.http.cfg</code>.</p>
+</div>
</div>
<div class="sect4">
<h5 id="_registering_a_servlet_with_the_httpservice_manually">Registering a servlet with the HttpService manually</h5>
<div class="paragraph">
-<p>See <a href="http://felix.apache.org/site/apache-felix-http-service.html" class="bare">http://felix.apache.org/site/apache-felix-http-service.html</a>.</p>
+<p>See the Apache Karaf Servlet example: <a href="https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example/karaf-servlet-example-registration" class="bare">https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example/karaf-servlet-example-registration</a></p>
</div>
</div>
<div class="sect4">
@@ -581,28 +616,10 @@ table.CodeRay td.code>pre{padding:0}
</div>
</div>
<div class="paragraph">
-<p>The <a href="http://team.ops4j.org/wiki/display/ops4j/Pax+Web+Extender+-+Whiteboard">Pax Web whiteboard</a> extender listens to services
-of interface type HttpServlet and Filter.
-It will register each of these interfaces with the HttpService and remove them as soon as the service goes down.
-So it is much more convenient than registering with the HttpService directly.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre><blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
- <service interface="javax.servlet.http.HttpServlet">
- <service-properties>
- <entry key="alias" value="/myservlet"/>
- </service-properties>
- <bean id="myServlet" class="com.example.MyServlet"/>
- </service>
-</blueprint></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The above snippet publishes the Servlet MyServlet on <a href="http://localhost:8181/myServlet" class="bare">http://localhost:8181/myServlet</a>.</p>
+<p>NB: <code>felix-http</code> feature installs whiteboard by default in the feature.</p>
</div>
<div class="paragraph">
-<p>Please keep in mind that the Whiteboard pattern for Servlets is not standardized and only works with Pax Web.</p>
+<p>You can take a look on a full example using whiteboard here: <a href="https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example" class="bare">https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example</a></p>
</div>
<div class="paragraph">
<p>For commands take a look at the command section in the <a href="webcontainer">webcontainer</a> chapter.</p>
@@ -612,7 +629,7 @@ So it is much more convenient than regis
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-25 06:19:58 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/index.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/index.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/index.html (original)
+++ karaf/site/production/manual/latest/index.html Wed Nov 4 17:13:10 2020
@@ -602,9 +602,10 @@ table.CodeRay td.code>pre{padding:0}
</li>
<li><a href="#_configuration_3">4.8. Configuration</a>
<ul class="sectlevel3">
-<li><a href="#_files">4.8.1. Files</a></li>
-<li><a href="#_code_config_code_commands">4.8.2. <code>config:*</code> commands</a></li>
-<li><a href="#_jmx_configmbean">4.8.3. JMX ConfigMBean</a></li>
+<li><a href="#_environment_variables_system_properties">4.8.1. Environment Variables & System Properties</a></li>
+<li><a href="#_files">4.8.2. Files</a></li>
+<li><a href="#_code_config_code_commands">4.8.3. <code>config:*</code> commands</a></li>
+<li><a href="#_jmx_configmbean">4.8.4. JMX ConfigMBean</a></li>
</ul>
</li>
<li><a href="#_artifacts_repositories_and_urls">4.9. Artifacts repositories and URLs</a>
@@ -845,7 +846,7 @@ table.CodeRay td.code>pre{padding:0}
<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">5.14.2. Schema</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>
@@ -996,6 +997,20 @@ Framework, but you can easily switch to
</li>
</ul>
</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Windows users should use 7zip or other unzip tool to support files longer than 255 characters.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
</div>
<div class="sect2">
<h3 id="_start_the_server">2.2. Start the server</h3>
@@ -4143,6 +4158,12 @@ sshRealm = karaf
hostKey = ${karaf.etc}/host.key
#
+# The password required to decrypt the private key of the server stored in
+# 'hostKey'. This is not required if the private key stored in 'hostKey' is
+# not encrypted
+#hostKeyPassword =
+
+#
# The location of the hostKeyPub file defines where the public key of the server
# is located. If no file is at the defined location it will be ignored.
#
@@ -4201,6 +4222,17 @@ address of the network interface.</p>
private key of the SSHd server.</p>
</li>
<li>
+<p><code>hostKeyPassword</code> is the password required to decrypt the private key of the server stored in <code>hostKey</code>, if the key
+is stored in an encrypted form. Note that Karaf does not use this property to
+encrypt the private key when generating it, only for reading external keys
+that are already encrypted. Also note that specifying a <code>hostKeyPassword</code>
+might require installing the BouncyCastle provider to support the desired
+encryption algorithm.</p>
+</li>
+<li>
+<p><code>hostKeyPub</code> is the location of the public key of the server.</p>
+</li>
+<li>
<p><code>sshRole</code> is the default role used for SSH access. See the [Security section|security] of this user guide for details.</p>
</li>
<li>
@@ -4573,7 +4605,7 @@ looks for the artifacts (bundles, featur
</td>
<td class="content">
<div class="paragraph">
-<p>If you want to turn Apache Karaf as a simple Maven repository, you can use <a href="http://karaf.apache.org/index/subprojects/cave.html">Apache Karaf Cave</a>.</p>
+<p>If you want to turn Apache Karaf as a simple Maven repository, you can use <a href="https://karaf.apache.org/projects.html">Apache Karaf Cave</a>.</p>
</div>
</td>
</tr>
@@ -5512,7 +5544,54 @@ You can now use your appender directly i
<div class="sect2">
<h3 id="_configuration_3">4.8. Configuration</h3>
<div class="sect3">
-<h4 id="_files">4.8.1. Files</h4>
+<h4 id="_environment_variables_system_properties">4.8.1. Environment Variables & System Properties</h4>
+<div class="paragraph">
+<p>Apache Karaf uses default configuration properties location in <code>etc</code> folder (<code>KARAF_ETC</code>).</p>
+</div>
+<div class="paragraph">
+<p>You can override any configuration using either environment variables or system properties.</p>
+</div>
+<div class="paragraph">
+<p>Basically, Apache Karaf is looking for property in env and system properties.</p>
+</div>
+<div class="paragraph">
+<p>You can use <code>PID_PROPERTY=VALUE</code> syntax for environment variable and <code>pid.property=value</code> for system properties.</p>
+</div>
+<div class="paragraph">
+<p>For instance, the following statement will override value <code>sshPort</code> in <code>etc/org.apache.karaf.shell.cfg</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code># environment variable
+export ORG_APACHE_KARAF_SHELL_SSHPORT=8102</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code># system property
+-Dorg.apache.karaf.shell.sshPort=8102</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can override any configuration property using this mechanism.</p>
+</div>
+<div class="paragraph">
+<p>It’s possible to "append" a new value based on the content of a configuration property.
+For instance, you want to add a new features repository to the default value (define the <code>etc/org.apache.karaf.features.cfg</code> config file <code>featuresRepositories</code> property.
+You can use the following env variable:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>export ORG_APACHE_KARAF_FEATURES_FEATURESREPOSITORIES='${featuresRepositories},mvn:org.apache.karaf.decanter/apache-karaf-decanter/2.5.0/xml/features'</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>It means that Karaf will take value of <code>featuresRepositories</code> property contained in the <code>etc/org.apache.karaf.features.cfg</code> configuration file and add
+<code>mvn:org.apache.karaf.decanter/apache-karaf-decanter/2.5.0/xml/features</code>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_files">4.8.2. Files</h4>
<div class="paragraph">
<p>Apache Karaf stores and loads all configuration in files located in the <code>etc</code> folder.</p>
</div>
@@ -5550,11 +5629,110 @@ property4=${existing_property:+bar} # "
</div>
</div>
<div class="paragraph">
+<p>Apache Karaf will look for system property as well. For instance, the following:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>key=${foo}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>means that <code>key</code> will contain <code>bar</code> if you start Karaf with <code>-Dfoo=bar</code>.</p>
+</div>
+<div class="paragraph">
<p>Environment variables can be referenced inside configuration files using the syntax <code>${env:<name>}</code> (e.g.
<code>property=${env:FOO}</code> will set "property" to the value of the enviroment variable "FOO"). Default and alternate
values can be defined for them as well using the same syntax as above.</p>
</div>
<div class="paragraph">
+<p>Apache Karaf also supports other syntax, supporting:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>files on disk, for example to be used with Kubernetes secrets</p>
+</li>
+<li>
+<p>environment variables</p>
+</li>
+<li>
+<p>properties defined in <code>etc/config.properties</code></p>
+</li>
+<li>
+<p>system properties</p>
+</li>
+</ul>
+</div>
+<div class="sect4">
+<h5 id="_secret_files">Secret Files</h5>
+<div class="paragraph">
+<p>Usually secrets (for example when provided by Kubernetes) will surface as files in a location.
+By default, the location is <code>etc</code> folder. However, you can point to any folder. The configuration
+is located in <code>etc/config.properties</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>org.apache.felix.configadmin.plugin.interpolation.secretsdir=${karaf.etc}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The file contents are opaque and contain the secret value as-is. To use content of a secret file in a
+configuration property, you can do:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>user=my-user
+password=$[secret:db.password]</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The content of <code>etc/db.password</code> will by used as value for <code>password</code> property.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_environment_variables">Environment variables</h5>
+<div class="paragraph">
+<p>Exactly the same as <code>${env:USER}</code>, you can use <code>$[env:USER]</code> syntax in a property:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>greeting="Hello $[env:USER]"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>With this syntax, default value is passed like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>greeting="Hello $[env:USER;default=John]"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>It’s also possible to define the type of the property:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>port=$[env:PORT;type=Integer]</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_system_properties">System properties</h5>
+<div class="paragraph">
+<p>System property can be passed with <code>-Dfoo=bar</code> to the Karaf process or define in <code>etc/config.properties</code>.</p>
+</div>
+<div class="paragraph">
+<p>You can use these properties using the following syntax:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>port=$[prop:my.port;default=8080]</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_cfg_files">cfg files</h5>
+<div class="paragraph">
<p>In Apache Karaf, a configuration is a PID with a set of properties attached.</p>
</div>
<div class="paragraph">
@@ -5625,8 +5803,9 @@ Configuration files are placed by defaul
If you want to disable the Karaf persistence manager, set the storage variable to an empty string (<code>storage=</code>).</p>
</div>
</div>
+</div>
<div class="sect3">
-<h4 id="_code_config_code_commands">4.8.2. <code>config:*</code> commands</h4>
+<h4 id="_code_config_code_commands">4.8.3. <code>config:*</code> commands</h4>
<div class="paragraph">
<p>Apache Karaf provides a set of commands to manage the configuration.</p>
</div>
@@ -5989,7 +6168,7 @@ pattern | Pattern | String | %d{ABSOLUTE
</div>
</div>
<div class="sect3">
-<h4 id="_jmx_configmbean">4.8.3. JMX ConfigMBean</h4>
+<h4 id="_jmx_configmbean">4.8.4. JMX ConfigMBean</h4>
<div class="paragraph">
<p>On the JMX layer, you have a MBean dedicated to the management of the configurations: the ConfigMBean.</p>
</div>
@@ -6039,7 +6218,7 @@ pattern | Pattern | String | %d{ABSOLUTE
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay highlight nowrap"><code><bundle>http://repo1.maven.org/maven2/org/apache/servicemix/nmr/org.apache.servicemix.nmr.api/1.0.0-m2/org.apache.servicemix.nmr.api-1.0.0-m2.jar</bundle></code></pre>
+<pre class="CodeRay highlight nowrap"><code><bundle>https://repo1.maven.org/maven2/org/apache/servicemix/nmr/org.apache.servicemix.nmr.api/1.0.0-m2/org.apache.servicemix.nmr.api-1.0.0-m2.jar</bundle></code></pre>
</div>
</div>
<div class="paragraph">
@@ -6146,8 +6325,8 @@ Require Config Admin â true
Use fallback repository â false â Explicit org.ops4j.pax.url.mvn PID configuration (org.ops4j.pax.url.mvn.useFallbackRepositories)
Offline mode â false â Default "false"
SSL/TLS certificate check â true â Explicit org.ops4j.pax.url.mvn PID configuration (org.ops4j.pax.url.mvn.certificateCheck)
-Remote repositories â http://repo1.maven.org/maven2/ â PID configuration
- â http://repository.apache.org/content/groups/snapshots-group/ â PID configuration
+Remote repositories â https://repo1.maven.org/maven2/ â PID configuration
+ â https://repository.apache.org/content/groups/snapshots-group/ â PID configuration
â https://oss.sonatype.org/content/repositories/snapshots/ â PID configuration
â https://oss.sonatype.org/content/repositories/ops4j-snapshots/ â PID configuration
Default repositories â file:/data/servers/apache-karaf-4.2.0-SNAPSHOT/system/ â PID configuration
@@ -6186,8 +6365,8 @@ This option may be used only by user wit
== Remote repositories
ID â URL â Releases â Snapshots â Defined in
âââââââââââââââââââââââââââââââââ¼âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¼ââââââââââââââ¼ââââââââââââââ¼âââââââââââ
-central â http://repo1.maven.org/maven2/ â yes (daily) â no â PID
-apache â http://repository.apache.org/content/groups/snapshots-group/ â no â yes (daily) â PID
+central â https://repo1.maven.org/maven2/ â yes (daily) â no â PID
+apache â https://repository.apache.org/content/groups/snapshots-group/ â no â yes (daily) â PID
sonatype.snapshots.deploy â https://oss.sonatype.org/content/repositories/snapshots/ â no â yes (daily) â PID
ops4j.sonatype.snapshots.deploy â https://oss.sonatype.org/content/repositories/ops4j-snapshots/ â no â yes (daily) â PID
special â https://repository.everfree.forest/ â yes (daily) â no â SETTINGS
@@ -8862,6 +9041,35 @@ the users and a public key associated to
<div class="paragraph">
<p>You can manage an existing realm, login module, or create your own realm using the <code>jaas:realm-manage</code> command.</p>
</div>
+<div class="sect4">
+<h5 id="_adding_realms_or_login_modules">Adding Realms or Login Modules</h5>
+<div class="paragraph">
+<p>If a new realm should be added Apache Karaf provides an easy way to create a new Realm (although with limited flexibility compared to other approaches like blueprint or directly via DS).
+The <code>jaas:realm-add</code> command can be used for that purpose.
+Note, that it takes at least 2 Parameters (name of the realm and class name of the initial Login Module) or even more, if the Login Module needs parameters.
+For example, a new realm <code>myrealm</code> which uses the <code>PropertiesLoginModule</code> with a <code>users</code> file located in <code>/tmp/users</code> can be added by the command</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>jaas:realm-add myrealm org.apache.karaf.jaas.modules.properties.PropertiesLoginModule users "/tmp/users"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To add a new Login Module to an existing realm the <code>jaas:module-add</code> command can be used. It is similar in semantics than the <code>jaas:realm-add</code> command except that it takes no realm name.
+Instead, the realm to modify has to be selected via <code>jaas:realm-manage</code> previously.
+Note that the options for the Login Module are given as a list of parameters which is interpreted as a map in the order
+"key1 value1 key2 value2".
+So the command</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>jaas:module-add org.apache.karaf.jaas.modules.properties.PropertiesLoginModule users "/tmp/users"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>will add a <code>PropertiesLoginModule</code> with parameters map <code>users -> /tmp/users</code> to the selected realm.</p>
+</div>
+</div>
</div>
<div class="sect3">
<h4 id="_users_groups_roles_and_passwords">4.14.2. Users, groups, roles, and passwords</h4>
@@ -9151,9 +9359,9 @@ encryption.enabled = false
#
# Encryption Service name
-# the default one is 'basic'
-# a more powerful one named 'jasypt' is available
-# when installing the encryption feature
+# the default one is 'basic'. Note that this digests without salting.
+# a more powerful one named 'jasypt' is available when installing the
+# encryption feature
#
encryption.name = basic
@@ -9177,7 +9385,7 @@ encryption.suffix = {CRYPT}
# SHA-384
# SHA-512
#
-encryption.algorithm = MD5
+encryption.algorithm = SHA-256
#
# Encoding of the encrypted password.
@@ -9210,7 +9418,9 @@ prefixed and suffixed with <code>\{CRYPT
</li>
<li>
<p>the <code>encryption.algorithm</code> property defines the algorithm to use for encryption (digest). The possible values are <code>MD2</code>, <code>MD5</code>,
-<code>SHA-1</code>, <code>SHA-256</code>, <code>SHA-384</code>, <code>SHA-512</code>. The default is <code>MD5</code>.</p>
+<code>SHA-1</code>, <code>SHA-256</code>, <code>SHA-384</code>, <code>SHA-512</code>. The default is <code>SHA-256</code> since Karaf 4.3.0, prior to this it was <code>MD5</code>. When the <code>basic</code> algorithm is used then the value is digested
+using this algorithm without salting. For a more secure alternative which uses salts please consider using the <code>jasypt</code> encryption
+algorithm instead.</p>
</li>
<li>
<p>the <code>encryption.encoding</code> property defines the encoding of the encrypted password. The possible values are <code>hexadecimal</code>
@@ -9237,29 +9447,6 @@ will identify itself on Karaf SSHD (serv
</div>
</div>
<div class="paragraph">
-<p>By default, Karaf allows a key for the karaf user:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>#karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,_g_:admingroup
-_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh</pre>
-</div>
-</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, this key is disabled. We encourage to create the keys pair per client and update the <code>etc/keys.properties</code> file.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
<p>The easiest way to create key pair is to use OpenSSH.</p>
</div>
<div class="paragraph">
@@ -10618,7 +10805,7 @@ by the OBR service (meaning installing m
<p>In addition of being an OBR client, Apache Karaf can act as an OBR repositories server, thanks to Apache Karaf Cave.</p>
</div>
<div class="paragraph">
-<p>See the <a href="http://karaf.apache.org/index/subprojects/cave.html" class="bare">http://karaf.apache.org/index/subprojects/cave.html</a> for details.</p>
+<p>See the <a href="https://karaf.apache.org/projects.html" class="bare">https://karaf.apache.org/projects.html</a> for details.</p>
</div>
</div>
</div>
@@ -10627,23 +10814,55 @@ by the OBR service (meaning installing m
<div class="sect3">
<h4 id="_http_service">4.17.1. Http Service</h4>
<div class="paragraph">
-<p>The Karaf http feature enables the Pax Web implementation of the OSGi HTTPService.</p>
+<p>Apache Karaf supports several Http Services:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>http</code> feature installs Http Service powered by Pax Web</p>
+</li>
+<li>
+<p><code>felix-http</code> feature installs Http Service powered by Apache Felix HTTP</p>
+</li>
+</ul>
</div>
<div class="sect4">
-<h5 id="_installing_the_http_feature">Installing the HTTP feature</h5>
+<h5 id="_installing_the_http_service">Installing the Http Service</h5>
+<div class="paragraph">
+<p>If you want to use Pax Web Http Service, you have to install the <code>http</code> feature:</p>
+</div>
<div class="listingblock">
<div class="content">
<pre>root@karaf()> feature:install http</pre>
</div>
</div>
<div class="paragraph">
-<p>Test the HTTP service is up by pointing your browser to [<a href="http://localhost:8181/" class="bare">http://localhost:8181/</a>].</p>
+<p>NB: the HTTP service will be actually bound only when at least one web application will use it.</p>
+</div>
+<div class="paragraph">
+<p>If you want to use Apache Felix Http Service, you have to install <code>felix-http</code> feature:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>root@karaf()> feature:install felix-http</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you want to test the HTTP service, you can install the <code>webconsole</code> feature:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>root@karaf()> feature:install webconsole</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, you can test the HTTP service by accessing the Apache Karaf WebConsole pointing your browser to [<a href="http://localhost:8181/system/console" class="bare">http://localhost:8181/system/console</a>].</p>
</div>
</div>
<div class="sect4">
<h5 id="_configuring_the_httpservice">Configuring the HTTPService</h5>
<div class="paragraph">
-<p>By default the HTTPService listens on port 8181 you can change the port by creating a file <code>etc/org.ops4j.pax.web.cfg</code> with the following content:</p>
+<p>By default the HTTPService listens on port 8181 you can change the port by creating a file <code>etc/org.ops4j.pax.web.cfg</code> (if you use the Pax Web Http Service) with the following content:</p>
</div>
<div class="listingblock">
<div class="content">
@@ -10661,11 +10880,14 @@ by the OBR service (meaning installing m
<div class="paragraph">
<p>If the http feature is already installed the change will take effect immediately.</p>
</div>
+<div class="paragraph">
+<p>If you use Apache Felix Http Service, it’s basically the same but the configuration is <code>etc/org.apache.felix.http.cfg</code>.</p>
+</div>
</div>
<div class="sect4">
<h5 id="_registering_a_servlet_with_the_httpservice_manually">Registering a servlet with the HttpService manually</h5>
<div class="paragraph">
-<p>See <a href="http://felix.apache.org/site/apache-felix-http-service.html" class="bare">http://felix.apache.org/site/apache-felix-http-service.html</a>.</p>
+<p>See the Apache Karaf Servlet example: <a href="https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example/karaf-servlet-example-registration" class="bare">https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example/karaf-servlet-example-registration</a></p>
</div>
</div>
<div class="sect4">
@@ -10679,28 +10901,10 @@ by the OBR service (meaning installing m
</div>
</div>
<div class="paragraph">
-<p>The <a href="http://team.ops4j.org/wiki/display/ops4j/Pax+Web+Extender+-+Whiteboard">Pax Web whiteboard</a> extender listens to services
-of interface type HttpServlet and Filter.
-It will register each of these interfaces with the HttpService and remove them as soon as the service goes down.
-So it is much more convenient than registering with the HttpService directly.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre><blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
- <service interface="javax.servlet.http.HttpServlet">
- <service-properties>
- <entry key="alias" value="/myservlet"/>
- </service-properties>
- <bean id="myServlet" class="com.example.MyServlet"/>
- </service>
-</blueprint></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The above snippet publishes the Servlet MyServlet on <a href="http://localhost:8181/myServlet" class="bare">http://localhost:8181/myServlet</a>.</p>
+<p>NB: <code>felix-http</code> feature installs whiteboard by default in the feature.</p>
</div>
<div class="paragraph">
-<p>Please keep in mind that the Whiteboard pattern for Servlets is not standardized and only works with Pax Web.</p>
+<p>You can take a look on a full example using whiteboard here: <a href="https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example" class="bare">https://github.com/apache/karaf/tree/master/examples/karaf-servlet-example</a></p>
</div>
<div class="paragraph">
<p>For commands take a look at the command section in the <a href="webcontainer">webcontainer</a> chapter.</p>
@@ -11099,23 +11303,22 @@ corresponding to the bundle ID (as displ
</div>
</div>
<div class="sect5">
-<h6 id="_code_http_proxies_code"><code>http:proxies</code></h6>
+<h6 id="_code_http_proxy_list_code"><code>http:proxy-list</code></h6>
<div class="paragraph">
-<p>The <code>http:proxies</code> command list the configured HTTP proxies:</p>
+<p>The <code>http:proxy-list</code> command list the configured HTTP proxies:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre>karaf@root()> http:proxies
-karaf@root()> http:proxies
-URL â ProxyTo
-âââââââââââââ¼âââââââââââââââââââââââââââââââââââââ
-/webconsole â http://localhost:8181/system/console</pre>
+<pre>karaf@root()> http:proxy-list
+URL â ProxyTo â Balancing Policy
+âââââââââââââ¼âââââââââââââââââââââââââââââââââââââââ¼âââââââââââââââââ
+/webconsole â http://localhost:8181/system/console â</pre>
</div>
</div>
</div>
</div>
<div class="sect4">
-<h5 id="_code_http_proxy_add_code"><code>http:proxy-add</code></h5>
+<h5 id="_code_http_proxy_add_code_and_code_http_proxy_balancing_list_code"><code>http:proxy-add</code> and <code>http:proxy-balancing-list</code></h5>
<div class="paragraph">
<p>The <code>http:proxy-add</code> registers a new HTTP proxy. For instance, you can proxy the Karaf WebConsole on another URL of your choice using:</p>
</div>
@@ -11127,6 +11330,40 @@ URL â ProxyTo
<div class="paragraph">
<p>Karaf HTTP Proxy can proxy any URL, like a backend running on Docker or a remote URL.</p>
</div>
+<div class="paragraph">
+<p>It’s also possible to proxy several URLs, defining a balancing policy.
+By default, two balancing policies are available: random (selecting one URL randomly) and round-robin (selecting one URL after another one).
+It’s possible to create your own balancing policy by implementing a <code>BalancingPolicy</code> service (with the <code>type</code> service property).</p>
+</div>
+<div class="paragraph">
+<p>You can see the balancing policies available using <code>http:proxy-balancing-list</code> command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> http:proxy-balancing-list
+random
+round-robin</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, you can use add a proxy with several targets and a policy:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> http:proxy-add -b round-robin /my http://host1/my,http://host2/my,http://host3/my</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can see the list and balancing policy in used using <code>http:proxy-list</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> http:proxy-list
+URL â ProxyTo â Balancing Policy
+âââââââââââââ¼ââââââââââââââââââââââââââââââââââââââââââââââââââ¼âââââââââââââââââ
+/my â http://host1/my,http://host2/my,http://host3/my â round-robin</pre>
+</div>
+</div>
</div>
<div class="sect4">
<h5 id="_code_http_proxy_remove_code"><code>http:proxy-remove</code></h5>
@@ -11187,6 +11424,9 @@ URL â ProxyTo
</li>
</ul>
</div>
+<div class="paragraph">
+<p>The <code>ProxyBalacingPolicies</code> attribute provides the collection of balancing policies available.</p>
+</div>
</div>
<div class="sect5">
<h6 id="_operations_8">Operations</h6>
@@ -11781,6 +12021,53 @@ aries.transaction.howl.bufferSizeKBytes
<div class="sect4">
<h5 id="_commands_9">Commands</h5>
<div class="sect5">
+<h6 id="_code_jdbc_ds_factories_code"><code>jdbc:ds-factories</code></h6>
+<div class="paragraph">
+<p>The <code>jdbc:ds-factories</code> command lists the available datasource factories, with the available driver.</p>
+</div>
+<div class="paragraph">
+<p>For instance, once you installed the <code>jdbc</code> feature, you can install <code>pax-jdbc-postgresql</code> feature, providing the PostgreSQL datasource factory:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> feature:install pax-jdbc-postgresql</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, you can see the factory available with <code>jdbc:ds-factories</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> jdbc:ds-factories
+Name â Class â Version â Registration bundle
+ââââââââââââââââââââââââ¼ââââââââââââââââââââââââ¼ââââââââââ¼âââââââââââââââââââââââââââ
+PostgreSQL JDBC Driver â org.postgresql.Driver â 42.2.8 â org.postgresql.jdbc42 [51]</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can see there the JDBC driver name and class that you can use in the <code>jdbc:ds-create</code> command.</p>
+</div>
+<div class="paragraph">
+<p>NB: don’t forget to install the <code>pax-jdbc-*</code> features for the database you want to connect:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>pax-jdbc-db2
+pax-jdbc-teradata
+pax-jdbc-derby
+pax-jdbc-derbyclient
+pax-jdbc-h2
+pax-jdbc-hsqldb
+pax-jdbc-mariadb
+pax-jdbc-oracle
+pax-jdbc-postgresql
+pax-jdbc-sqlite
+pax-jdbc-mssql
+pax-jdbc-jtds</pre>
+</div>
+</div>
+</div>
+<div class="sect5">
<h6 id="_code_jdbc_ds_create_code"><code>jdbc:ds-create</code></h6>
<div class="paragraph">
<p>The <code>jdbc:ds-create</code> command automatically creates a datasource definition file by leveraging pax-jdbc.</p>
@@ -11799,6 +12086,9 @@ aries.transaction.howl.bufferSizeKBytes
</ul>
</div>
<div class="paragraph">
+<p>Driver name and driver class can be found with <code>jdbc:ds-factories</code> command.</p>
+</div>
+<div class="paragraph">
<p>The <code>jdbc:ds-create</code> accepts a set of options and the name argument:</p>
</div>
<div class="listingblock">
@@ -11859,6 +12149,22 @@ OPTIONS
<div class="paragraph">
<p>We can see that this command created a configuration PID containing the datasource properties.</p>
</div>
+<div class="paragraph">
+<p>Another example using PostgreSQL driver class name (you can find with <code>jdbc:ds-factories</code> command):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> jdbc:ds-create -dc org.postgresql.Driver -url "jdbc:postgresql://localhost:5432/test" --username user --password passwd test</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>or using datasource factory name (also provided by <code>jdbc:ds-factories</code> command):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> jdbc:ds-create -dn "PostgreSQL JDBC Driver" -url "jdbc:postgresql://localhost:5432/test" --username user --password passwd test</pre>
+</div>
+</div>
</div>
</div>
<div class="sect4">
@@ -12783,7 +13089,7 @@ karaf@root()> feature:install pax-cdi
and the others are in standby.</p>
</div>
<div class="paragraph">
-<p>If you are looking for cluster of Apache Karaf instances (active/active), [Apache Karaf Cellar|http://karaf.apache.org/index/subprojects/cellar.html] is a solution.</p>
+<p>If you are looking for cluster of Apache Karaf instances (active/active), <a href="https://karaf.apache.org/projects.html">Apache Karaf Cellar</a> is a solution.</p>
</div>
<div class="paragraph">
<p>Karaf provides failover capability using either a simple lock file or a JDBC locking mechanism.
@@ -13273,6 +13579,27 @@ jmxRealm = karaf
serviceUrl = service:jmx:rmi://0.0.0.0:${rmiServerPort}/jndi/rmi://0.0.0.0:${rmiRegistryPort}/karaf-${karaf.name}
#
+# JMXMP connector enabled
+# NB: if you enable JMXMP, don't forget to add opendmk_jmxremote_optional jar in lib/boot folder
+#
+jmxmpEnabled = false
+
+#
+# JMXMP connector host name
+#
+jmxmpHost = 127.0.0.1
+
+#
+# JMXMP connector port number
+#
+jmxmpPort = 9999
+
+#
+# JMXMP connector service URL
+#
+jmxmpServiceUrl = service:jmx:jmxmp://${jmxmpHost}:${jmxmpPort}
+
+#
# Whether any threads started for the JMXConnectorServer should be started as daemon threads
#
daemon = true
@@ -13288,6 +13615,11 @@ threaded = true
objectName = connector:name=rmi
#
+# The ObjectName used to register the JMXMP connector
+#
+jmxmpObjectName = connector:name=jmxmp
+
+#
# Role name used for JMX access authorization
#
# jmxRole=admin</pre>
@@ -13306,6 +13638,22 @@ objectName = connector:name=rmi
</li>
</ul>
</div>
+<div class="paragraph">
+<p>By default, Karaf exposes JMX using RMI.</p>
+</div>
+<div class="paragraph">
+<p>You can also enable JMXMP connector by settings <code>jmxmpEnabled=true</code>.
+You can then configure the JMXMP connector using the corresponding <code>jmxmp*</code> properties.
+In order to use JMXMP, you have to add <code>opendmk_jmxremote_optional</code> jar in <code>lib/boot</code> folder:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ cd lib/boot
+$ curl -O https://repo1.maven.org/maven2/org/glassfish/external/opendmk_jmxremote_optional_jar/1.0-b01-ea/opendmk_jmxremote_optional_jar-1.0-b01-ea.jar
+$ cd ../../bin
+$ ./karaf</pre>
+</div>
+</div>
</div>
<div class="sect3">
<h4 id="_mbeans">4.18.3. MBeans</h4>
@@ -13517,11 +13865,12 @@ This MBean can be used by management cli
<p><a href="http://www.jolokia.org/">Jolokia</a> can be installed in Apache Karaf as a remote JMX-HTTP bridge.</p>
</div>
<div class="paragraph">
-<p>Karaf provides a jolokia feature, ready to install:</p>
+<p>Karaf provides a jolokia feature, ready to install (you just need a Http Service installed first):</p>
</div>
<div class="listingblock">
<div class="content">
-<pre>karaf@root()> feature:install jolokia</pre>
+<pre>karaf@root()> feature:install http
+karaf@root()> feature:install jolokia</pre>
</div>
</div>
<div class="paragraph">
@@ -13616,10 +13965,14 @@ For instance, Apache Karaf Cellar provid
</div>
<div class="listingblock">
<div class="content">
-<pre>karaf@root()> feature:install webconsole</pre>
+<pre>karaf@root()> feature:install http
+karaf@root()> feature:install webconsole</pre>
</div>
</div>
<div class="paragraph">
+<p>NB: you have to install a Http Service first as requirement, either <code>http</code> or <code>felix-http</code> feature.</p>
+</div>
+<div class="paragraph">
<p>The <code>webconsole</code> feature automatically installs the <code>http</code> feature (see the [WebContainer section|webcontainer] for details).</p>
</div>
</div>
@@ -16157,6 +16510,16 @@ META-INF in the kar, without getting ins
<td class="tableblock halign-left valign-top"><p class="tableblock">An environment identifier that may be used to select different variant of PID configuration file, e.g., <code>org.ops4j.pax.url.mvn.cfg#docker</code>. Default value: null</p></td>
</tr>
<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>framework</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String[]</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The features providing the Karaf framework (optional)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>javase</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The Java version to use for the verify</p></td>
+</tr>
+<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>defaultStartLevel</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>int</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Default start level for bundles in features that don’t specify it. Default value: 30</p></td>
@@ -17583,13 +17946,13 @@ It supports ASCII character declarations
</div>
<div class="listingblock">
<div class="content">
-<pre>== SYNOPSIS
+<pre>h1. SYNOPSIS
${project.description}
-== DESCRIPTION
+h1. DESCRIPTION
Long description of your bundle, including usage, etc.
-==SEE ALSO
+h1. SEE ALSO
[http://yourside\]
[http://yourside/docs\]</pre>
</div>
@@ -17610,9 +17973,10 @@ It supports ASCII character declarations
</div>
<div class="listingblock">
<div class="content">
-<pre>==, ===, ... : Headings
+<pre>h1., h2., ... : Headings
* : Enumerations
-[http://....] : links</pre>
+[ http://.... ] : links (there must be a space after the opening bracket)
+**text** : bold text</pre>
</div>
</div>
</div>
@@ -18235,10 +18599,17 @@ up HTTPS connectors or using certificate
</div>
</div>
<div class="sect3">
-<h4 id="_schema">5.14.2. Schema</h4>
+<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 Spring namespace handler and
-can thus be defined in a Spring xml configuration file.</p>
+<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.
+You can directly create a XML file in the Apache Karaf <code>deploy</code> folder. To enable this JAAS config deployer, you have first
+to install the <code>jaas-deployer</code> feature:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>karaf@root()> feature:install jaas-deployer</pre>
+</div>
</div>
<div class="paragraph">
<p>You can find the schema at the following <a href="http://karaf.apache.org/xmlns/jaas/v1.1.0" class="bare">http://karaf.apache.org/xmlns/jaas/v1.1.0</a></p>
@@ -18606,7 +18977,7 @@ The data source and the queries for pass
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>datasource</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">The datasource as on OSGi ldap filter or as JDNI name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The datasource as on OSGi ldap filter or as JNDI name</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>query.password</code></p></td>
@@ -19638,15 +20009,17 @@ Remote debugging can be easily activated
<p>Last, inside your IDE, connect to the remote application (the default port to connect to is 5005).</p>
</div>
<div class="paragraph">
-<p>This option works fine when it is needed to debug a project deployed on top of Apache Karaf. Nervertheless, you will be blocked
-if you would like to debug the Karaf server itself. In this case, you can change the following parameter suspend=y in the
-karaf.bat script file. That will cause the JVM to pause just before running main() until you attach a debugger then it
+<p>This option works fine when it is needed to debug a project deployed on top of Apache Karaf. Nevertheless, you will be blocked
+if you would like to debug the Karaf server itself.</p>
+</div>
+<div class="paragraph">
+<p>In this case, you can use <code>debugs</code> option (s as syspend). That will cause the JVM to pause just before running main() until you attach a debugger then it
will resume the execution. This way you can set your breakpoints anywhere in the code and you should hit them no matter
how early in the startup they are.</p>
</div>
<div class="listingblock">
<div class="content">
-<pre>export DEFAULT_JAVA_DEBUG_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'</pre>
+<pre>bin/karaf debugs</pre>
</div>
</div>
<div class="paragraph">
@@ -19654,7 +20027,7 @@ how early in the startup they are.</p>
</div>
<div class="listingblock">
<div class="content">
-<pre>set DEFAULT_JAVA_DEBUG_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'</pre>
+<pre>bin\karaf.bat debugs</pre>
</div>
</div>
<div class="sect4">
@@ -20061,7 +20434,7 @@ git format-patch archon/trunk</pre>
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-25 06:20:02 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/installation.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/installation.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/installation.html (original)
+++ karaf/site/production/manual/latest/installation.html Wed Nov 4 17:13:10 2020
@@ -928,7 +928,7 @@ This property is used to locate the <cod
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-20 06:47:46 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>
Modified: karaf/site/production/manual/latest/instances.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/latest/instances.html?rev=1883125&r1=1883124&r2=1883125&view=diff
==============================================================================
--- karaf/site/production/manual/latest/instances.html (original)
+++ karaf/site/production/manual/latest/instances.html Wed Nov 4 17:13:10 2020
@@ -1083,7 +1083,7 @@ If wait is true, this operation is waiti
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2019-11-20 06:47:46 CET
+Last updated 2020-11-04 17:04:18 CET
</div>
</div>
</body>