<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title>Apache Felix - Apache Felix OSGi Bundle Repository (OBR)</title>


  
    
    <link rel="stylesheet" href="apache-felix-osgi-bundle-repository-obr_files/site.css" type="text/css" media="all">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body linkifying="true">
    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-osgi-bundle-repository-obr_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-osgi-bundle-repository-obr_files/apache.png" border="0"></a></div></div>
    <div class="menu">
<ul>
	<li><a href="http://cwiki.apache.org/FELIX/index.html" title="Index">home</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/news.html" title="news">news</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/status.html" title="status">status</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/license.html" title="license">license</a></li>
	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><a href="http://cwiki.apache.org/FELIX/documentation.html" title="documentation">documentation</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/mailinglists.html" title="mailinglists">mailing lists</a></li>
	<li><span class="nobr"><a href="http://cwiki.apache.org/confluence/x/O-" title="Visit page outside Confluence" rel="nofollow">wiki<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><a href="http://cwiki.apache.org/FELIX/committers.html" title="committers">committers</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/faq.html" title="faq">faq</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/roadmap.html" title="roadmap">roadmap</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/sourcecode.html" title="sourcecode">source code</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/codingstandards.html" title="codingstandards">coding standards</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/issuetracking.html" title="issuetracking">issue tracking</a></li>
	<li><a href="http://cwiki.apache.org/FELIX/dependencies.html" title="dependencies">dependencies</a></li>
	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">apache software foundation<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
</ul> </div>
    <div class="main">
<h1><a name="ApacheFelixOSGiBundleRepository(OBR)-ApacheFelixOSGiBundleRepository(OBR)"></a>Apache Felix OSGi Bundle Repository (OBR)</h1>

<ul>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-motivation" title="motivation on Apache Felix OSGi Bundle Repository (OBR)">Motivation</a></li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-overview" title="overview on Apache Felix OSGi Bundle Repository (OBR)">Overview</a></li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-repositoryfile" title="repository-file on Apache Felix OSGi Bundle Repository (OBR)">OBR Repository File</a></li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-serviceapi" title="service-api on Apache Felix OSGi Bundle Repository (OBR)">OBR Service API</a></li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-shellcommand" title="shell-command on Apache Felix OSGi Bundle Repository (OBR)">OBR Shell Command</a>
	<ul>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrhelp" title="obr-help on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr help</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrlisturl" title="obr-list-url on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr list-url</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obraddurl" title="obr-add-url on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr add-url</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrremoveurl" title="obr-remove-url on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr remove-url</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrlist" title="obr-list on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr list</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrinfo" title="obr-info on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr info</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrdeploy" title="obr-deploy on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr deploy</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrstart" title="obr-start on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr start</tt></a></li>
		<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-obrsource" title="obr-source on Apache Felix OSGi Bundle Repository (OBR)"><tt>obr source</tt></a></li>
	</ul>
	</li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-proxy" title="proxy on Apache Felix OSGi Bundle Repository (OBR)">Using OBR with a Proxy</a></li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-sourcepackaging" title="source-packaging on Apache Felix OSGi Bundle Repository (OBR)">Bundle Source Packaging</a></li>
	<li><a href="#ApacheFelixOSGiBundleRepository%2528OBR%2529-feedback" title="feedback on Apache Felix OSGi Bundle Repository (OBR)">Feedback</a></li>
</ul>


<p><a name="ApacheFelixOSGiBundleRepository(OBR)-motivation"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-Motivation"></a>Motivation</h2>

<p>The goal of the Apache Felix OSGi Bundle Repository (OBR) is two-fold:</p>

<ol>
	<li>To simplify deploying and using available bundles with Felix.</li>
	<li>To encourage independent bundle development so that communities of interest can grow.</li>
</ol>


<p>OBR achieves the first goal by providing a service that can
automatically install a bundle, with its deployment dependencies, from
a bundle repository. This makes it easier for people to experiment with
existing bundles. The second goal is achieved by raising the visibility
of the available bundles and providing access to both the executable
bundle and its source code. Hopefully, by making OBR and the bundles
themselves more visible, community members will be encouraged to
provide or improve service implementations.</p>

<p>Note: OBR provides access to the Felix' default bundle repository,
but you can also use it to deploy your own bundles by creating a bundle
repository meta-data file for your local bundles; see the <tt>obr list-url</tt>, <tt>obr add-url</tt>, and <tt>obr remove-url</tt> commands for more details.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-overview"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-Overview"></a>Overview</h2>

<p>For the most part, OBR is quite simple. An OBR "repository server"
is not necessary, since all functionality may reside on the client
side. OBR is able to provide its functionality by reading an XML-based
meta-data file that describes the bundles available to it. The
meta-data file essentially contains an XML encoding of the bundles'
manifest information. From the meta-data, OBR is able to construct
dependency information for deploying (i.e., installing and updating)
bundles.</p>

<p>OBR defines the following entities:</p>

<ul>
	<li><em><b>Repository Admin</b></em> - a service to access a federation of repositories.</li>
	<li><em><b>Repository</b></em> - provides access to a set of resources.</li>
	<li><em><b>Resource</b></em> - a description of an artifact to be installed on a device.</li>
	<li><em><b>Capability</b></em> - a named set of properties.</li>
	<li><em><b>Requirement</b></em> - an assertion on a capability.</li>
	<li><em><b>Resolver</b></em> - an object to resolve resource dependencies and to deploy them.</li>
	<li><em><b>Repository file</b></em> - XML file containing resource meta-data.</li>
</ul>


<p>The following diagram illustrates the relationships among these entities:</p>

<p><img src="apache-felix-osgi-bundle-repository-obr_files/obr-entities.png" align="absmiddle" border="0"></p>

<p>The client has access to a federated set of repositories via the Repository Admin service; such as depicted in this view:</p>

<p><img src="apache-felix-osgi-bundle-repository-obr_files/obr-high-level.png" align="absmiddle" border="0"></p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-repositoryfile"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-OBRRepositoryFile"></a>OBR Repository File</h2>

<p>The OBR repository file is an XML-based representation of bundle
meta-data. The goal is provide a generic model for describing
dependencies among resources; as such, the term <em><b>resource</b></em> is used instead of <em><b>bundle</b></em> in the OBR repository syntax; a detailed description of the OBR meta-data format is available in the <span class="nobr"><a href="http://www2.osgi.org/download/rfc-0112_BundleRepository.pdf" title="Visit page outside Confluence" rel="nofollow">OSGi RFC 112<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>
document; this document is not completely in sync with the
implementation, but the concepts are still correct. The following XML
snippet depicts the overall structure of a repository file:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>&lt;repository presentationname="..." symbolicname="..." ... &gt;
    &lt;resource&gt;
        &lt;description&gt;...&lt;/description&gt;
        &lt;size&gt;...&lt;/size&gt;
        &lt;documentation&gt;...&lt;/documentation&gt;
        &lt;source&gt;...&lt;/source&gt;
        &lt;category id="..."/&gt;
        &lt;capability&gt;...&lt;/capability&gt;
        ...
        &lt;requirement&gt;...&lt;/requirement&gt;
        ...
    &lt;/resource&gt;
    ...
&lt;/repository&gt;
</pre>
</div></div>

<p>The above repository defines a set of available resources, each
described by a set of meta-data. Some resource meta-data is purely
intended for human consumption; the most important aspects relate to
the generic capability/requirement model.</p>

<p>A resource can provide any number of capabilities. A capability is a
typed set of properties. For example, the following is an exported
package capability:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>&lt;capability name='package'&gt;
    &lt;p n='package' v='org.foo.bar'/&gt;
    &lt;p n='version' t='version' v='1.0.0'/&gt;
&lt;/capability&gt;
</pre>
</div></div>

<p>This capability is of type 'package' and exports 'org.foo.bar' at
version '1.0.0'. Conversely, a requirement is a typed LDAP query over a
set of capability properties. For example, the following is an imported
package requirement:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>&lt;require name='package' extend='false'
    multiple='false' optional='false'
    filter='(&amp;amp;(package=org.foo.bar)(version&amp;gt;=1.0.0))'&gt;
    Import package org.foo.bar
&lt;/require&gt;
</pre>
</div></div>

<p>This requirement is of type 'package' and imports 'org.foo.bar' at
versions greater than '1.0.0'. Although this syntax looks rather
complicated with the '\&amp;' and '\&gt;=' syntax, it is simply the
standard OSGi LDAP query syntax in XML form (additionally, Peter Kriens
has created a tool called <tt>bindex</tt> to generate this meta-data from a bundle's manifest).</p>

<p>With this generic dependency model, OBR is able to provide mappings
for the various OSGi bundle dependencies; e.g., import/export package,
provide/require bundle, host/fragment, import/export service, execution
environment, and native code. In addition, it is possible for bundles
to introduce arbitrary dependencies for custom purposes.</p>

<p>Two other important pieces of meta-data are <tt>Bundle-SymbolicName</tt> and <tt>Bundle-Version</tt>;
these are standard OSGi bundle manifest attributes that OBR uses to
uniquely identify a bundle. For example, if you want to use OBR to
update a locally installed bundle, OBR gets its symbolic name and
version and searches the repository metadata for a matching symbolic
name. If the matching symbolic name is found, then OBR checks if there
is a newer version than the local copy using the bundle version number.
Thus, the symbolic name plus bundle version forms a unique key to match
locally installed bundles to remotely available bundles.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-serviceapi"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-OBRServiceAPI"></a>OBR Service API</h2>

<p>Typically, OBR service clients only need to interact with the
Repository Admin service, which provides the mechanisms necessary to
discover available resources. The Repository Admin interface is defined
as follows:</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> RepositoryAdmin
{
    <span class="code-keyword">public</span> Resource[] discoverResources(<span class="code-object">String</span> filterExpr);
    <span class="code-keyword">public</span> Resolver resolver();
    <span class="code-keyword">public</span> Repository addRepository(URL repository)?
        <span class="code-keyword">throws</span> Exception;
    <span class="code-keyword">public</span> <span class="code-object">boolean</span> removeRepository(URL repository);
    <span class="code-keyword">public</span> Repository[] listRepositories();
    <span class="code-keyword">public</span> Resource getResource(<span class="code-object">String</span> respositoryId);
}</pre>
</div></div>

<p>In order to resolve and deploy available resources, the Repository
Admin provides Resolver instances, which are defined as follows:</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Resolver
{
    <span class="code-keyword">public</span> void add(Resource resource);
    <span class="code-keyword">public</span> Requirement[] getUnsatisfiedRequirements();
    <span class="code-keyword">public</span> Resource[] getOptionalResources();
    <span class="code-keyword">public</span> Requirement[] getReason(Resource resource);
    <span class="code-keyword">public</span> Resource[] getResources(Requirement requirement);
    <span class="code-keyword">public</span> Resource[] getRequiredResources();
    <span class="code-keyword">public</span> Resource[] getAddedResources();
    <span class="code-keyword">public</span> <span class="code-object">boolean</span> resolve();
    <span class="code-keyword">public</span> void deploy(<span class="code-object">boolean</span> start);
}</pre>
</div></div>

<p>When desired resources are discovered via the query mechanisms of
the Repository Admin, they are added to a Resolver instance which will
can be used to resolve all transitive dependencies and to reflect on
any resolution result. The following code snippet depicts a typical
usage scenario:</p>

<div class="code"><div class="codeContent">
<pre class="code-java">RepositoryAdmin repoAdmin = ... <span class="code-comment">// Get repo admin service
</span>Resolver resolver = repoAdmin.resolver();
Resource resource = repoAdmin.discoverResources(filterStr);
resolver.add(resource);
<span class="code-keyword">if</span> (resolver.resolve())
{
    resolver.deploy(<span class="code-keyword">true</span>);
}
<span class="code-keyword">else</span>
{
    Requirement[] reqs = resolver.getUnsatisfiedRequirements();
    <span class="code-keyword">for</span> (<span class="code-object">int</span> i = 0; i &lt; reqs.length; i++)
    {
        <span class="code-object">System</span>.out.println(<span class="code-quote">"Unable to resolve: "</span> + reqs[i]);
    }
}</pre>
</div></div>

<p>This code gets the Repository Admin service and then gets a Resolver
instance from it. It then discovers an available resource and adds it
to the resolver. Then it tries to resolve the resources dependencies.
If successful it deploys the resource to the local framework instance;
if not successful it prints the unsatisfied requirements.</p>

<p>OBR's deployment algorithm appears simple at first glance, but it is
actually somewhat complex due to the nature of deploying independently
developed bundles. For example, in an ideal world, if an update for a
bundle is made available, then updates for all of the bundles
satisfying its dependencies are also made available. Unfortunately,
this may not be the case, thus the deployment algorithm might have to
install new bundles during an update to satisfy either new dependencies
or updated dependencies that can no longer be satisfied by existing
local bundles. In response to this type of scenario, the OBR deployment
algorithm tries to favor updating existing bundles, if possible, as
opposed to installing new bundles to satisfy dependencies.</p>

<p>In the general case, OBR user's will not use the OBR API directly,
but will use its functionality indirectly from another tool or user
interface. For example, interactive access to OBR is available via a
command for Felix' <a href="http://cwiki.apache.org/FELIX/apache-felix-shell-service.html" title="Apache Felix Shell Service">shell service</a>. The OBR shell command is discussed in the next section.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-shellcommand"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-OBRShellCommand"></a>OBR Shell Command</h2>

<p>Besides providing a service API, OBR implements a Felix shell
command for accessing its functionality. For the end user, the OBR
shell command is accessed using the text-based or GUI-based user
interfaces for Felix' shell service. This section describes the syntax
for the OBR shell command.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrhelp"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrhelp}}"></a><tt>obr help</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr help [urls | list | info | install | deploy | start | update | source]
</pre>
</div></div>
<p>This command is used to display additional information about the other OBR commands.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrlisturl"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrlisturl}}"></a><tt>obr list-url</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr list-url
</pre>
</div></div>
<p>This command gets the URLs to the repository files used by the Repository Admin.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obraddurl"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obraddurl}}"></a><tt>obr add-url</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr add-url [&lt;repository-file-url&gt; ...]
</pre>
</div></div>
<p>This command adds a repository file to the set of repository files
for which the Repository Admin service provides access. The repository
file is represented as a URL. If the repository file URL is already in
the Repository Admin's set of repository files, the request is treated
like a reload operation.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrremoveurl"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrremoveurl}}"></a><tt>obr remove-url</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr remove-url [&lt;repository-file-url&gt; ...]
</pre>
</div></div>
<p>This command removes a repository file to the set of repository
files for which the Repository Admin service provides access. The
repository file is represented as a URL.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrlist"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrlist}}"></a><tt>obr list</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr list [&lt;string&gt; ...]
</pre>
</div></div>
<p>This command lists bundles available in the bundle repository. If no
arguments are specified, then all available bundles are listed,
otherwise any arguments are concatenated with spaces and used as a
substring filter on the bundle names.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrinfo"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrinfo}}"></a><tt>obr info</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr info &lt;bundle-name&gt;[;&lt;version&gt;] ...
</pre>
</div></div>
<p>This command displays the meta-data for the specified bundles. If a
bundle's name contains spaces, then it must be surrounded by quotes. It
is also possible to specify a precise version if more than one version
exists, such as:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr info "Bundle Repository";1.0.0
</pre>
</div></div>
<p>The above example retrieves the meta-data for version "1.0.0" of the bundle named "Bundle Repository".</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrdeploy"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrdeploy}}"></a><tt>obr deploy</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr deploy [-nodeps] &lt;bundle-name&gt;[;&lt;version&gt;] ... | &lt;bundle-id&gt; ...
</pre>
</div></div>
<p>This command tries to install or update the specified bundles and
all of their dependencies by default; use the "-nodeps" switch to
ignore dependencies. You can specify either the bundle name or the
bundle identifier. If a bundle's name contains spaces, then it must be
surrounded by quotes. It is also possible to specify a precise version
if more than one version exists, such as:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr deploy "Bundle Repository";1.0.0
</pre>
</div></div>
<p>For the above example, if version "1.0.0" of "Bundle Repository" is
already installed locally, then the command will attempt to update it
and all of its dependencies; otherwise, the command will install it and
all of its dependencies.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrstart"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrstart}}"></a><tt>obr start</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr start [-nodeps] &lt;bundle-name&gt;[;&lt;version&gt;] ...
</pre>
</div></div>
<p>This command installs and starts the specified bundles and all of
their dependencies by default; use the "-nodeps" switch to ignore
dependencies. If a bundle's name contains spaces, then it must be
surrounded by quotes. If a specified bundle is already installed, then
this command has no effect. It is also possible to specify a precise
version if more than one version exists, such as:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr start "Bundle Repository";1.0.0
</pre>
</div></div>
<p>The above example installs and starts the "1.0.0" version of the bundle named "Bundle Repository" and its dependencies.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-obrsource"></a></p>

<h3><a name="ApacheFelixOSGiBundleRepository(OBR)-{{obrsource}}"></a><tt>obr source</tt></h3>

<p>Syntax:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr source [-x] &lt;local-dir&gt; &lt;bundle-name&gt;[;&lt;version&gt;] ...
</pre>
</div></div>
<p>This command retrieves the source archives of the specified bundles
and saves them to the specified local directory; use the "-x" switch to
automatically extract the source archives. If a bundle name contains
spaces, then it must be surrounded by quotes. It is also possible to
specify a precise version if more than one version exists, such as:</p>
<div class="preformatted"><div class="preformattedContent">
<pre>obr source /home/rickhall/tmp "Bundle Repository";1.0.0
</pre>
</div></div>
<p>The above example retrieves the source archive of version "1.0.0" of
the bundle named "Bundle Repository" and saves it to the specified
local directory.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-proxy"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-UsingOBRwithaProxy"></a>Using OBR with a Proxy</h2>

<p>If you use a proxy for Web access, then OBR will not work for you in
its default configuration; certain system properties must be set to
enable OBR to work with a proxy. These properties are:</p>

<ul>
	<li>http.proxyHost - the name of the proxy host.</li>
	<li>http.proxyPort - the port of the proxy host.</li>
	<li>http.proxyAuth
- the user name and password to use when connecting to the proxy; this
string should be the user name and password separated by a colon (e.g.,
rickhall:mypassword).</li>
</ul>


<p>These system properties can be set directly on the command line when
starting the JVM using the standard "-D&lt;prop&gt;=&lt;value&gt;"
syntax or you can put them in the lib/system.properties file of your
Felix installation; see documentation on configuring Felix for more
information.</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-sourcepackaging"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-BundleSourcePackaging"></a>Bundle Source Packaging</h2>

<p>Coming soon...</p>

<p><a name="ApacheFelixOSGiBundleRepository(OBR)-feedback"></a></p>

<h2><a name="ApacheFelixOSGiBundleRepository(OBR)-Feedback"></a>Feedback</h2>

<p>Subscribe to the Felix users mailing list by sending a message to <span class="nobr"><a href="mailto:users-subscribe@felix.apache.org" title="Send mail to users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>; after subscribing, email questions or feedback to <span class="nobr"><a href="mailto:users@felix.apache.org" title="Send mail to users@felix.apache.org" rel="nofollow">users@felix.apache.org<sup><img class="rendericon" src="apache-felix-osgi-bundle-repository-obr_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>.</p>
    </div>
  
</body></html>