<!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</title>


  
    
    <link rel="stylesheet" href="apache-felix-osgi-bundle-repository-obr_files/site.css" type="text/css" media="all">
    <link rel="stylesheet" href="apache-felix-osgi-bundle-repository-obr_files/print.css" type="text/css" media="print">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body linkifytime="102" linkified="0" linkifying="false">
    <div class="title">
      <img alt="Logo" src="apache-felix-osgi-bundle-repository-obr_files/apache-felix-small.png" align="right">
    </div>
    <div class="menu">
      <ul>
        <li><a href="http://cwiki.apache.org/FELIX/index.html">home</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/news.html">news</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/status.html">status</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/license.html">license</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/downloads.html">downloads</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/documentation.html">documentation</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/committers.html">committers</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/mailinglists.html">mailing lists</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/faq.html">faq</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/roadmap.html">roadmap</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/sourcecode.html">source code</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/codingstandards.html">coding standards</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/issuetracking.html">issue tracking</a></li>
        <li><a href="http://cwiki.apache.org/FELIX/dependencies.html">dependencies</a></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)&#8207;
        <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">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>