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 2014/01/21 11:07:25 UTC

svn commit: r1559959 - in /karaf/site/production/manual/cave/latest: ./ user-guide/

Author: jbonofre
Date: Tue Jan 21 10:07:25 2014
New Revision: 1559959

URL: http://svn.apache.org/r1559959
Log:
[scm-publish] Updating main site with Karaf Cave manual

Added:
    karaf/site/production/manual/cave/latest/index.html
    karaf/site/production/manual/cave/latest/overview.html
    karaf/site/production/manual/cave/latest/user-guide/
    karaf/site/production/manual/cave/latest/user-guide/administrate-cave.html
    karaf/site/production/manual/cave/latest/user-guide/cave-repository.html
    karaf/site/production/manual/cave/latest/user-guide/http-wrapper.html
    karaf/site/production/manual/cave/latest/user-guide/index.html
    karaf/site/production/manual/cave/latest/user-guide/installation.html
    karaf/site/production/manual/cave/latest/user-guide/obr-commands.html
    karaf/site/production/manual/cave/latest/user-guide/populate-repository.html
    karaf/site/production/manual/cave/latest/user-guide/proxy-repository.html

Added: karaf/site/production/manual/cave/latest/index.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/index.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/index.html (added)
+++ karaf/site/production/manual/cave/latest/index.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="ApacheKarafCave">Apache Karaf Cave</h1><p>This project contains documentation about Apache Karaf Cave.</p><ul><li><a href="overview.html">Overview</a></li><li><a href="user-guide/index.html">User Guide</a></li></ul>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/overview.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/overview.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/overview.html (added)
+++ karaf/site/production/manual/cave/latest/overview.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="ApacheKarafCaveoverview">Apache Karaf Cave overview</h1><p>Apache Karaf Cave is an Apache Karaf sub-project.</p><p>It provides an OSGi Bundle Repository (OBR) and Karaf Features Repository (KFR).</p><p>OBR provides a service that can automatically install a bundle, with its deployment dependencies, from a bundle<br/>repository.</p><p>Apache Karaf Cave provides the following features:</p><ul><li><strong>Storage</strong>: Karaf Cave includes a storage backend. The default one is a simple filesystem backend. As the Cave backend<p>is designed in a plugin way, you can implement your own backend (for instance, JDBC or LDAP backend).</p></li><li><strong>OBR Metadata Generation</strong>: Karaf Cave automatically creates the OBR metadata for you, using the artifacts presents<p>in the Cave repository storage.</p></li><li><strong>OBR Registration</strong>: Karaf Cave allows you to directly register a Cave repository into an OBR RepositoryAdmin OSGi<p>service.</p></li><li>
 <strong>Artifact Upload</strong>: Users can upload OSGi bundle in a Cave repository. It supports URLs like mvn:groupId/artifactId/version,<p>file:, http:, etc.</p></li><li><strong>Repository proxy</strong>: Karaf Cave is able to proxy an existing repository, for instance an existing Maven repository.<p>The artifacts are located on the "external" repository, Cave handles the OBR metadata. Cave supports file: and http:<br/>URLs, it means that Cave is able to browse a remote HTTP Maven repository for instance.</p></li><li><strong>Repository population</strong>: Karaf Cave is able to get artifacts present on an "external" repository (local file: or<p>remote http:), looking for OSGi bundles, and copy the artifacts in the Cave repository storage.</p><p>Karaf Cave provides two components:</p></li><li>the cave-server is the OBR and KFR server, including the storage, the management layer, the REST service layer, etc.</li><li>the cave-client is a local OBR service proxy that use a remote Cave
  OBR server (not yet available).</li></ul>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/administrate-cave.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/administrate-cave.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/administrate-cave.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/administrate-cave.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="Administration">Administration</h1><p>When you install Apache Karaf Cave server, it provides a new CaveServerMBean.</p><p>This MBean use the following object name:</p><pre>
+org.apache.karaf.cave:type=repository,name=*
+</pre><p>Thanks to this MBean, using any JMX client (like jconsole for instance), you can do all actions as you can using the<br/><tt>cave:*</tt> commands:</p><ul><li>void createRepository(String name, String location, boolean generateObr, boolean install) throws Exception;</li><li>void destroyRepository(String name) throws Exception;</li><li>void installRepository(String name) throws Exception;</li><li>void uninstallRepository(String name) throws Exception;</li><li>void populateRepository(String name, String url, boolean generateObr, String filter) throws Exception;</li><li>void proxyRepository(String name, String url, boolean generateObr, String filter) throws Exception;</li><li>void updateRepository(String name) throws Exception;</li><li>void uploadArtifact(String repository, String artifactUrl, boolean generateObr) throws Exception;</li></ul>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/cave-repository.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/cave-repository.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/cave-repository.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/cave-repository.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="Repository">Repository</h1><p>A Cave Repository is a container for:</p><ul><li>OSGi bundles (jar files)</li><li>OBR (OSGi Bundle Repository) metadata (aka a repository.xml file)</li></ul><p>By default, a repository uses a filesystem backend for the storage, the directory used is KARAF_BASE/cave.</p><p>You can change the storage location in the <tt>etc/org.apache.karaf.cave.server.storage.cfg</tt> configuration file:</p><pre>
+################################################################################
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+################################################################################
+
+#
+# Storage location where Apache Karaf Cave create repositories by default
+#
+storage.location=cave
+</pre><p>For instance, you can define <tt>/var/cave/store</tt> for the <tt>storage.location</tt> property.</p><h2 id="Create">Create</h2><p>The <tt>cave:repository-create</tt> command creates a new repository:</p><pre>
+karaf@root> cave:repository-create my-repository
+</pre><p>A repository is identified by a name, <tt>my-repository</tt> in our example.</p><p>Apache Karaf Cave creates the repository storage for you.</p><p>If you want to use an existing directory, and avoid Cave to create one in the storage location, you can use the <tt>-l</tt><br/>(<tt>--location</tt>) option:</p><pre>
+karaf@root> cave:repository-create -l /home/user/.m2/repository m2
+</pre><p>By default, Apache Karaf Cave scans the repository storage and create the OBR metadata. You can use the <tt>-no</tt> (<tt>--no-obr-generate</tt>)<br/>option to avoid this step:</p><pre>
+karaf@root> cave:repository-create -no -l /home/user/.m2/repository m2
+</pre><p>By default, Apache Karaf Cave registers (installs) a new repository into the OBR service. You can use the <tt>-ni</tt> (<tt>--no-install</tt>)<br/>option to avoid this step:</p><pre>
+karaf@root> cave:repository-create -ni -l /home/user/m2/repository m2
+</pre><p>NB: the <tt>-no</tt> and <tt>-ni</tt> options are interesting when you use an existing location for the repository. If you create a<br/>new empty repository, these options don't have really any effect.</p><h2 id="List">List</h2><p>You can list the repositories:</p><pre>
+karaf@root> cave:repositories-list
+Name                 Location
+[my-repository]      [/opt/apache-karaf-2.3.3/cave/my-repository]
+[m2]                 [/home/user/.m2/repository]
+</pre><p>You can find the repository name and location.</p><h2 id="RepositoryandOBRservice">Repository and OBR service</h2><p>By default, Apache Karaf Cave installs the repository in the Apache Karaf OBR service.</p><p>You can see the installed repositories using the <tt>obr:listurl</tt> command:</p><pre>
+karaf@root> obr:listurl
+file:/home/jbonofre/.m2/repository/repository.xml
+file:/home/jbonofre/apache-karaf-2.3.3/cave/my-repository/repository.xml
+</pre><p>You can refresh a repository or install a repository in the OBR service using the <tt>cave:repository-install</tt> command:</p><pre>
+karaf@root> cave:repository-install my-repository
+</pre><p>You can uninstall a repository from the Apache Karaf OBR service using the <tt>cave:repository-uninstall</tt> command:</p><pre>
+karaf@root> cave:repository-uninstall my-repository
+</pre><p>You can see with the <tt>obr:listurl</tt> command that the repository is no more known by the OBR service:</p><pre>
+karaf@root> obr:listurl
+file:/home/jbonofre/.m2/repository/repository.xml
+</pre><p>You can "re-install" the repository at any time using the <tt>cave:repository-install</tt> command again:</p><pre>
+karaf@root> cave:repository-install my-repository
+karaf@root> obr:listurl
+file:/home/jbonofre/.m2/repository/repository.xml
+file:/home/jbonofre/apache-karaf-2.3.3/cave/my-repository/repository.xml
+</pre><p>At any time, you can force the generation and update of the OBR metadata using the <tt>cave:repository-update</tt> command:</p><pre>
+karaf@root> cave:repository-update my-repository
+</pre><p>This command scan the repository storage location, seeking all OSGi bundles, and generate the OBR metadata (aka a repository.xml).</p><p>NB: If you add or remove any artifact in the repository storage location by hand (for instance, using cp, rm, etc on Unix),<br/>you have to update the repository OBR metadata using the <tt>cave:repository-update</tt> command.</p><h2 id="Destroy">Destroy</h2><p>The <tt>cave:repository-destroy</tt> command deletes the repository storage location:</p><pre>
+karaf@root> cave:repository-destroy my-repository
+</pre><div class="warning" style="border: 1px solid #c00;background-color: #fcc;margin: 20px;padding: 0px 6px 0px 6px;"><p>Be aware that this command completely deletes the repository storage. By extremely careful when using this command<br/>with repository using "custom" location.</p></div><h2 id="Whatsnext">What's next</h2><p>Apache Karaf Cave provides a HTTP service to expose the repositories. It allows you to use the repositories remotely.<br/>You can find details in the <a href="http-wrapper.html">HTTP wrapper service section</a> of the user guide.</p><p>If repositories are installed in the OBR service, you can use the OBR command as explained in the <a href="obr-command.html">OBR commands section</a><br/>of the user guide.</p>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/http-wrapper.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/http-wrapper.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/http-wrapper.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/http-wrapper.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="HTTPwrapperservice">HTTP wrapper service</h1><p>When you install the Apache Karaf Cave Server, it starts a HTTP service wrapper.</p><p>It means that all artifacts and OBR metadata presents in local repositories are exposed over HTTP.</p><h2 id="OBRmetadataaccess">OBR metadata access</h2><p>Assuming that you have the following repositories:</p><pre>
+karaf@root> cave:repositories-list
+Name                 Location
+[cave-repo]          [/opt/apache-karaf-2.2.2/cave/my-repository]
+[m2]                 [/home/user/.m2/repository]
+</pre><p>You can access the OBR metadata using the following URL in your favorite browser:</p><pre>
+http://localhost:8181/cave/m2-repository.xml
+</pre><p>and</p><pre>
+http://localhost:8181/cave/my-repository-repository.xml
+</pre><p>NB: the port 8181 is the default one of the Apache Karaf HTTP service.</p><p>You can see that the URL follows the format:</p><p>You can note the OBR metadata Cave URL format:</p><pre>
+http://[cave_server_hostname]:[http_service_port]/cave/[cave_repository_name]-repository.xml
+</pre><p>It means that you can register the repositories on remote Apache Karaf instances.</p><p>In a remote Apache Karaf instance, you just have to install the obr feature and register the HTTP wrapper repository.xml URL:</p><pre>
+karaf@other> features:install obr
+karaf@other> obr:addurl http://cave_server:8181/cave/cave-repo-repository.xml
+karaf@other> obr:addurl http://cave_server:8181/cave/m2-repository.xml
+</pre><h2 id="OSGibundlesaccess">OSGi bundles access</h2><p>Apache Karaf Cave HTTP wrapper service also provide the OSGi bundles binaries via HTTP.</p><p>For instance, you have register the my-repository repository in the OBR service:</p><pre>
+karaf@root> cave:repository-install my-repository
+</pre><p>So you have the following bundles available in the OBR service:</p><pre>
+karaf@root> obr:list
+org.apache.servicemix.bundles.commons-dbcp - Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.1)
+org.apache.servicemix.bundles.commons-pool - Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+</pre><p>If we take a look on the detail of the commons-dbcp bundle:</p><pre>
+karaf@root> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.1
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/user/apache-karaf-2.3.3/cave/cave-repo/org.apache.servicemix.bundles.commons-dbcp-1.4.0.1.jar
+size: 159721
+version: 1.4.0.1
+Requires:
+   package:(&amp;(package=javax.naming))
+   package:(&amp;(package=javax.naming.spi))
+   package:(&amp;(package=javax.sql))
+   package:(&amp;(package=javax.transaction))
+   package:(&amp;(package=javax.transaction.xa))
+   package:(&amp;(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&amp;(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&amp;(package=org.xml.sax))
+   package:(&amp;(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.1}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+</pre><p>we can see that the URI is {{file:/home/user/apache-karaf-2.3.3/cave/cave-repo/org.apache.servicemix.bundles.commons-dbcp-1.4.0.1.jar.</p><p>But the HTTP wrapper service also exposes the bundle on:</p><pre>
+http://localhost:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.1.jar
+</pre><p>Actually, Apache Karaf Cave handles bundle URI relatively to the repository.</p><p>So, it means that, if you register the my-repository repository on a remote Apache Karaf instance:</p><pre>
+karaf@other> features:install obr
+karaf@other> obr:addurl http://cave_server:8181/cave/my-repository-repository.xml
+</pre><p>you can take a look on the commons-dbcp details:</p><pre>
+karaf@root> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.1
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: http://cave_server:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.1.jar
+size: 159721
+version: 1.4.0.1
+Requires:
+   package:(&amp;(package=javax.naming))
+   package:(&amp;(package=javax.naming.spi))
+   package:(&amp;(package=javax.sql))
+   package:(&amp;(package=javax.transaction))
+   package:(&amp;(package=javax.transaction.xa))
+   package:(&amp;(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&amp;(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&amp;(package=org.xml.sax))
+   package:(&amp;(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.1}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+</pre><p>we can see that the URI is <tt>http://cave_server:8181/cave/org.apache.servicemix.bundles.commons-dbcp-1.4.0.1.jar</tt>.</p><p>It means that we can use directly <tt>obr:deploy</tt> command:</p><pre>
+karaf@root> obr:deploy org.apache.servicemix.bundles.commons-dbcp
+Target resource(s):
+-------------------
+   Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.1)
+
+Required resource(s):
+---------------------
+   Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+
+Deploying...done.
+</pre>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/index.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/index.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/index.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/index.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="ApacheKarafCaveUserGuide">Apache Karaf Cave User Guide</h1><ul><li><a href="installation.html">Installation</a></li><li><a href="cave-repository.html">Repository</a></li><li><a href="populate-repository.html">Populate repository</a></li><li><a href="proxy-repository.html">Proxy repository</a></li><li><a href="obr-commands.html">OBR commands</a></li><li><a href="http-wrapper.html">HTTP wrapper service</a></li><li><a href="administrate-cave.html">Administration</a></li></ul>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/installation.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/installation.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/installation.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/installation.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="Installation">Installation</h1><p>This chapter describes how to install Apache Karaf Cave into an existing Apache Karaf instance.</p><h2 id="Preinstallationrequirements">Pre-installation requirements</h2><p>As Apache Karaf Cave is a Apache Karaf sub-project, it has to be installed into a running Apache Karaf instance.</p><p>Apache Karaf Cave is available as Apache Karaf features. The easiest way to install is just to have an internet<br/>connection from the Apache Karaf running instance.</p><h2 id="RegistrationoftheApacheKarafCavefeatures">Registration of the Apache Karaf Cave features</h2><p>Simply register the Apache Karaf Cave features URL in your Apache Karaf instance:</p><pre>
+karaf@root> features:addurl mvn:org.apache.karaf.cave/apache-karaf-cave/2.3.0/xml/features
+</pre><p>Now Apache Karaf Cave features are available, ready to be installed:</p><pre>
+karaf@root> features:list|grep -i cave
+[uninstalled  ] [2.3.0 ] cave-server                   karaf-cave-2.3.0
+</pre><h3 id="StartingApacheKarafCaveServer">Starting Apache Karaf Cave Server</h3><p>The Apache Karaf Cave Server is installed by the <tt>cave-server</tt> feature:</p><pre>
+karaf@root> features:install cave-server
+</pre><p>NB: installation of the cave-server feature will install additional features, such as obr, http, war, CXF. It could take<br/>several minutes depending of your network connection speed.</p><p>New Apache Karaf Cave commands are now available:</p><pre>
+karaf@root> cave:&lt;TAB>
+cave:repositories-list             cave:repository-create             cave:repository-install            cave:repository-populate
+cave:repository-proxy              cave:repository-uninstall          cave:repository-update             cave:repository-upload-artifact
+</pre>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/obr-commands.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/obr-commands.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/obr-commands.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/obr-commands.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="OBRcommands">OBR commands</h1><p>To install a repository in the OBR service, you have to use:</p><pre>
+karaf@root> cave:repository-install cave-repo
+</pre><p>Now, you can see the repository OBR metadata register in the OBR service:</p><pre>
+karaf@root> obr:listurl
+file:/home/jbonofre/apache-karaf-2.2.2/cave/cave-repo/repository.xml
+</pre><p>And the OSGi bundles present in the repository OSGi bundles are available in the OBR service:</p><pre>
+karaf@root> obr:list
+[...]
+slf4j.log4j12 - slf4j-log4j12 (1.6.1)
+slf4j.simple - slf4j-simple (1.6.1)
+org.springframework.aop - Spring AOP (3.0.5.RELEASE)
+org.springframework.asm - Spring ASM (3.0.5.RELEASE)
+org.springframework.beans - Spring Beans (3.0.5.RELEASE)
+org.springframework.context - Spring Context (3.0.5.RELEASE)
+org.springframework.core - Spring Core (3.0.5.RELEASE)
+org.springframework.expression - Spring Expression Language (3.0.5.RELEASE)
+org.springframework.web - Spring Web (3.0.5.RELEASE)
+org.springframework.osgi.extensions.annotations - spring-osgi-annotation (1.2.1)
+org.springframework.osgi.core - spring-osgi-core (1.2.1)
+org.springframework.osgi.extender - spring-osgi-extender (1.2.1)
+org.springframework.osgi.io - spring-osgi-io (1.2.1)
+stax2-api - Stax2 API (3.1.1)
+stax2-api - Stax2 API (3.0.2)
+woodstox-core-asl - Woodstox XML-processor (4.1.1)
+org.apache.ws.xmlschema.core - XmlSchema Core (2.0.0)
+</pre><p>You can get some detail about an OSGi bundle:</p><pre>
+karaf@root> obr:info slf4j.api,1.6.1
+---------
+slf4j-api
+---------
+id: slf4j.api/1.6.1
+description: The slf4j API
+symbolicname: slf4j.api
+presentationname: slf4j-api
+uri: file:/home/jbonofre/apache-karaf-2.2.2/cave/cave-repo/slf4j-api-1.6.1.jar
+size: 25496
+version: 1.6.1
+Requires:
+   package:(&amp;(package=org.slf4j.impl)(version>=1.6.0))
+   ee:(|(ee=J2SE-1.3))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=slf4j.api, presentationname=slf4j-api, version=1.6.1}
+   package:{package=org.slf4j, version=1.6.1}
+   package:{package=org.slf4j.spi, version=1.6.1}
+   package:{package=org.slf4j.helpers, version=1.6.1}
+</pre><p>NB: in Apache Karaf, the OBR entry format is symbolicname,version</p><p>You have the details of the OSGi bundle, especially the requirements and capabilities of the bundle.</p><p>OBR is able to resolve the dependencies between bundles, depending of the requirements and capabilities of each bundle.<br/>It's able to manage version, etc.</p><p>For instance, we have the following commons-pool bundle details:</p><pre>
+karaf@root> obr:info org.apache.servicemix.bundles.commons-dbcp
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-dbcp
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-dbcp/1.4.0.1
+description: This OSGi bundle wraps commons-dbcp 1.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-dbcp
+presentationname: Apache ServiceMix :: Bundles :: commons-dbcp
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-2.2.2/cave/cave-repo/org.apache.servicemix.bundles.commons-dbcp-1.4.0.1.jar
+size: 159721
+version: 1.4.0.1
+Requires:
+   package:(&amp;(package=javax.naming))
+   package:(&amp;(package=javax.naming.spi))
+   package:(&amp;(package=javax.sql))
+   package:(&amp;(package=javax.transaction))
+   package:(&amp;(package=javax.transaction.xa))
+   package:(&amp;(package=org.apache.commons.pool)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&amp;(package=org.apache.commons.pool.impl)(version>=1.3.0)(!(version>=2.0.0)))
+   package:(&amp;(package=org.xml.sax))
+   package:(&amp;(package=org.xml.sax.helpers))
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-dbcp, presentationname=Apache ServiceMix :: Bundles :: commons-dbcp, version=1.4.0.1}
+   package:{package=org.apache.commons.dbcp.cpdsadapter, uses:=org.apache.commons.dbcp,javax.naming,javax.sql,org.apache.commons.pool.impl,org.apache.commons.pool,javax.naming.spi, version=1.4.0}
+   package:{package=org.apache.commons.dbcp, uses:=org.apache.commons.pool.impl,org.apache.commons.pool,javax.sql,javax.naming,javax.naming.spi,org.apache.commons.jocl,org.xml.sax, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.managed, uses:=org.apache.commons.dbcp,javax.sql,org.apache.commons.pool.impl,javax.transaction,org.apache.commons.pool,javax.transaction.xa, version=1.4.0}
+   package:{package=org.apache.commons.dbcp.datasources, uses:=javax.sql,org.apache.commons.pool,javax.naming,org.apache.commons.dbcp,javax.naming.spi,org.apache.commons.pool.impl, version=1.4.0}
+   package:{package=org.apache.commons.jocl, uses:=org.xml.sax.helpers,org.xml.sax, version=1.4.0}
+</pre><p>We can see that commons-dbcp requires org.apache.commons.pool package (between version 1.3.0 and 2.0.0).</p><p>If we take a look on commons-pool bundle details:</p><pre>
+karaf@root> obr:info org.apache.servicemix.bundles.commons-pool
+--------------------------------------------
+Apache ServiceMix :: Bundles :: commons-pool
+--------------------------------------------
+id: org.apache.servicemix.bundles.commons-pool/1.5.4.3
+description: This OSGi bundle wraps commons-pool 1.5.4 jar file.
+documentation: http://www.apache.org/
+symbolicname: org.apache.servicemix.bundles.commons-pool
+presentationname: Apache ServiceMix :: Bundles :: commons-pool
+license: http://www.apache.org/licenses/LICENSE-2.0.txt
+uri: file:/home/jbonofre/apache-karaf-2.2.2/cave/cave-repo/org.apache.servicemix.bundles.commons-pool-1.5.4.3.jar
+size: 97332
+version: 1.5.4.3
+Capabilities:
+   bundle:{manifestversion=2, symbolicname=org.apache.servicemix.bundles.commons-pool, presentationname=Apache ServiceMix :: Bundles :: commons-pool, version=1.5.4.3}
+   package:{package=org.apache.commons.pool.impl, uses:=org.apache.commons.pool, version=1.5.4}
+   package:{package=org.apache.commons.pool, version=1.5.4}
+</pre><p>This bundle provides package org.apache.commons.pool capability.</p><p>It means that if I deploy the commons-dbcp bundle, the OBR should also install the commons-pool bundle:</p><pre>
+karaf@root> obr:deploy org.apache.servicemix.bundles.commons-dbcp
+Target resource(s):
+-------------------
+   Apache ServiceMix :: Bundles :: commons-dbcp (1.4.0.1)
+
+Required resource(s):
+---------------------
+   Apache ServiceMix :: Bundles :: commons-pool (1.5.4.3)
+
+Deploying...done.
+</pre><p>Done: the OBR has resolved the commons-dbcp requirements using the commons-pool capabilities and so installed the<br/>commons-pool bundle.</p><p>NB: in the <tt>obr:deploy</tt> command, if you don't mention the version, it will take the highly version available.</p>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/populate-repository.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/populate-repository.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/populate-repository.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/populate-repository.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="Populaterepository">Populate repository</h1><p>You can add new artifacts in a repository.</p><h2 id="Uploadasingleartifact">Upload a single artifact</h2><p>You can upload a single artifact into a Cave Repository:</p><pre>
+karaf@root> cave:repository-upload-artifact my-repository file:/home/user/.m2/repository/org/apache/servicemix/bundles/org.apache.servicemix.bundles.asm/3.3_2/org.apache.servicemix.bundles.asm-3.3_2.jar
+karaf@root> cave:repository-upload-artifact my-repository http://svn.apache.org/repos/asf/servicemix/m2-repo/org/apache/qpid/qpid-broker/0.8.0/qpid-broker-0.8.0.jar
+</pre><p>You can also use Maven style URL:</p><pre>
+karaf@root> cave:repository-upload-artifact my-repository mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.7.0_5
+</pre><h3 id="Populatefromanexternalrepository">Populate from an external repository</h3><p>You can also make a kind of "bulk" population of your repository, using an external repository:</p><pre>
+karaf@root> cave:repository-populate my-repository file:/home/user/.m2/repository
+</pre><p>Apache Karaf Cave supports <tt>file:</tt> but also <tt>http:</tt> URL. It means that Apache Karaf Cave is able to browse a remote repository and copy the artifacts<br/>in your "local" repository.</p><p>For instance, you can populate your repository using all Ant ServiceMix bundles present on the Central Maven<br/>repository:</p><pre>
+karaf@root> cave:repository-populate my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.ant/
+</pre><p>You can also populate with the whole Central Maven Repository:</p><pre>
+karaf@root> cave:repository-populate my-repository http://repo1.maven.org/maven2
+</pre><div class="warning" style="border: 1px solid #c00;background-color: #fcc;margin: 20px;padding: 0px 6px 0px 6px;"><p>Maven Central repository is really huge and populating from the whole Maven Central Repository will take<br/>very very long time. It's just for demonstration purpose.</p></div><p>You can filter the artifacts that you want to pick up to populate the repository. The <tt>cave:repository-populate</tt> command accepts<br/>a regex option for the filter. For instance, to pick up only joda-time version 2 artifact, you can run:</p><pre>
+karaf@root> cave:repository-populate --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+</pre>
\ No newline at end of file

Added: karaf/site/production/manual/cave/latest/user-guide/proxy-repository.html
URL: http://svn.apache.org/viewvc/karaf/site/production/manual/cave/latest/user-guide/proxy-repository.html?rev=1559959&view=auto
==============================================================================
--- karaf/site/production/manual/cave/latest/user-guide/proxy-repository.html (added)
+++ karaf/site/production/manual/cave/latest/user-guide/proxy-repository.html Tue Jan 21 10:07:25 2014
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <meta name="description" content="description goes here"/>
+    <meta name="keywords" content="keywords,goes,here"/>
+    <meta name="author" content="The Apache Karaf Team"/>
+    <link href="../css/style.css" rel="stylesheet" type="text/css"/>
+    <link href="../css/pygmentize.css" rel="stylesheet" type="text/css"/>
+    <title>
+      Apache Karaf Cave 2.3.0-SNAPSHOT Guides
+    </title>
+  </head>
+  <body>
+    <table width="100%" cellpadding="0" cellspacing="0">
+      <tr width="100%">
+        <td id="cell-0-0" colspan="2">
+          &nbsp;
+        </td>
+        <td id="cell-0-1">
+          &nbsp;
+        </td>
+        <td id="cell-0-2" colspan="2">
+          &nbsp;
+        </td>
+      </tr>
+      <tr width="100%">
+        <td id="cell-1-0">
+          &nbsp;
+        </td>
+        <td id="cell-1-1">
+          &nbsp;
+        </td>
+        <td id="cell-1-2">
+          <div style="padding: 5px;">
+            <div id="banner">
+              <h1 id="Proxyrepository">Proxy repository</h1><p>As you can <a href="populate-repository.html">populate repository</a>, you can also proxy an "external" repository.</p><p>It means that the artifacts stay on the remote repository, Apache Karaf Cave generates the OBR metadata in the local repository<br/>for the remote artifacts:</p><pre>
+karaf@root> cave:repository-proxy my-repository http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-lang/
+</pre><p>NB: the Cave repository will only handle the OBR metadata, it doesn't monitor the remote repository. It means that you<br/>have to call the <tt>cave:proxy-repository</tt> command each time the remote repository change (new artifacts, etc).</p><p>NB: a best practice is to create a Cave repository dedicated for each proxied repository.</p><p>The <tt>cave:proxy-repository</tt> command accepts the filter option, as the <tt>cave:populate-repository</tt> command:</p><pre>
+karaf@root> cave:repository-proxy --filter .*joda-time-2.* my-repository http://repo2.maven.org/maven2/joda-time/joda-time
+</pre>
\ No newline at end of file