<!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 Usage Documentation</title>
    <link rel="stylesheet" href="apache-felix-usage-documentation_files/site.css" type="text/css" media="all">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head><body>
    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-usage-documentation_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-usage-documentation_files/apache.png" border="0"></a></div></div>
    <div class="menu">
<ul>
	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
	<li><a href="http://felix.apache.org/site/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-usage-documentation_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">asf<sup><img class="rendericon" src="apache-felix-usage-documentation_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-usage-documentation_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-usage-documentation_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>
<!-- ApacheCon Ad -->
<iframe src="apache-felix-usage-documentation_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
<p style="height: 100px;">
<!-- ApacheCon Ad -->
</p></li></ul> </div>
    <div class="main">
<h1><a name="ApacheFelixUsageDocumentation-ApacheFelixUsageDocumentation"></a>Apache Felix Usage Documentation</h1>

<ul>
	<li><a href="#ApacheFelixUsageDocumentation-startingfelix" title="starting-felix on Apache Felix Usage Documentation">Starting Felix</a></li>
	<li><a href="#ApacheFelixUsageDocumentation-felixshell" title="felix-shell on Apache Felix Usage Documentation">Felix Shell</a>
	<ul>
		<li><a href="#ApacheFelixUsageDocumentation-installingbundles" title="installing-bundles on Apache Felix Usage Documentation">Installing Bundles</a></li>
		<li><a href="#ApacheFelixUsageDocumentation-installingbundlesproxies" title="installing-bundles-proxies on Apache Felix Usage Documentation">Web Proxy Issues when Installing Bundles</a></li>
	</ul>
	</li>
	<li><a href="#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">Configuring Felix</a>
	<ul>
		<li><a href="#ApacheFelixUsageDocumentation-migrating" title="migrating on Apache Felix Usage Documentation">Migrating from Earlier Versions</a></li>
		<li><a href="#ApacheFelixUsageDocumentation-propertysubstitution" title="property-substitution on Apache Felix Usage Documentation">System Property Substitution</a></li>
		<li><a href="#ApacheFelixUsageDocumentation-defaultshell" title="default-shell on Apache Felix Usage Documentation">Changing the Command Shell User Interface</a></li>
	</ul>
	</li>
	<li><a href="#ApacheFelixUsageDocumentation-configuringbundles" title="configuring-bundles on Apache Felix Usage Documentation">Configuring Bundles</a></li>
	<li><a href="#ApacheFelixUsageDocumentation-feedback" title="feedback on Apache Felix Usage Documentation">Feedback</a></li>
</ul>


<p><a name="ApacheFelixUsageDocumentation-startingfelix"></a></p>

<h2><a name="ApacheFelixUsageDocumentation-StartingFelix"></a>Starting Felix</h2>

<p>Start Felix from the installation directory by typing:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>java -jar bin/felix.jar
</pre>
</div></div>

<p>After Felix starts, the text-based shell interface is started. It is possible to <a href="#ApacheFelixUsageDocumentation-defaultshell" title="default-shell on Apache Felix Usage Documentation">change your default shell user interface</a>. Felix stores all installed bundles into a bundle cache directory. By default, Felix creates a cache directory, called <tt>felix-cache</tt>, in your current working directory; this behavior is configurable, see the <a href="http://felix.apache.org/site/apache-felix-bundle-cache.html" title="Apache Felix Bundle Cache">Apache Felix Bundle Cache</a> document for more details.</p>

<p>If you want to start Felix using a different bundle cache directory, you can start Felix like this:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>java -jar bin/felix.jar &lt;cache-path&gt;
</pre>
</div></div>

<p>Where <tt>&lt;cache-path&gt;</tt> is the path you want to use as the
bundle cache. If you specify a relative cache path, then it will be
treated as relative to the current working directory.</p>

<table class="infoMacro" align="center" border="0" cellpadding="5" cellspacing="8" width="85%"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-usage-documentation_files/information.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b class="strong">Useful Information</b><br>
<p>Previous versions of Felix prompted for a profile name when executed. The profile name was used to create a directory inside <tt>.felix/</tt>
in the users home directory. This approach allowed user's to have
different sets of bundles for different purposes, e.g., testing,
production, etc. If this behavior is still desired, it is very easy to
mimic. Modify <tt>conf/config.properties</tt> to include "<tt>felix.cache.rootdir=${user.home}/.felix</tt>". Now, if you start Felix with something like "<tt>java -jar bin/felix.jar foo</tt>", it will use "<tt>${user.home}/.felix/foo/</tt>"
as the bundle cache directory, where "${user.home}" is automatically
substituted with the appropriate system property by the launcher.</p></td></tr></tbody></table>

<p><a name="ApacheFelixUsageDocumentation-felixshell"></a></p>

<h2><a name="ApacheFelixUsageDocumentation-FelixShell"></a>Felix Shell</h2>

<p>The main way to interact with Felix is via its shell service. Felix'
shell service is implemented as an OSGi service that, be default, uses
a simple text-based user interface. After starting Felix, type <tt>help</tt> into the shell to see the list of the available commands; these are the default commands:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>bundlelevel &lt;level&gt; &lt;id&gt; ... | &lt;id&gt; - set or get bundle start level.
cd [&lt;base-URL&gt;] - change or display base URL.
headers [&lt;id&gt; ...] - display bundle header properties.
help - display shell commands.
install &lt;URL&gt; [&lt;URL&gt; ...] - install bundle(s).
obr help - OSGi bundle repository.
packages [&lt;id&gt; ...] - list exported packages.
ps [-l | -u] - list installed bundles.
refresh - refresh packages.
services [-u] [-a] [&lt;id&gt; ...] - list registered or used services.
shutdown - shutdown Felix.
start &lt;id&gt; [&lt;id&gt; &lt;URL&gt; ...] - start bundle(s).
startlevel [&lt;level&gt;] - get or set framework start level.
stop &lt;id&gt; [&lt;id&gt; ...] - stop bundle(s).
uninstall &lt;id&gt; [&lt;id&gt; ...] - uninstall bundle(s).
update &lt;id&gt; [&lt;URL&gt;] - update bundle.
version - display version of framework.
</pre>
</div></div>

<p>For a detailed description of how to install bundles into Felix refer to the next <a href="#ApacheFelixUsageDocumentation-installingbundles" title="installing-bundles on Apache Felix Usage Documentation">sub-section</a>; the remainder of this section briefly describes shell behavior.</p>

<p>Despite the fact that the Felix shell tries to mimic a typical Unix-like shell, it is actually quite limited. The notion of <tt>cd</tt>,
for example, is only used to specify a default base URL in order to
save typing. To illustrate, assume that you want to install several
bundles from a directory on your disk, you could type:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>cd file:/c:/projects/felix/bundle/
</pre>
</div></div>

<p>After issuing this <tt>cd</tt> command, you no longer need to type
the complete URL for bundles located in the above directory, only the
name of the bundle JAR file is necessary. It is not possible to perform
an equivalent <tt>ls</tt> command to list the contents of the current
base URL, since this operation is not possible with URLs. To view all
currently installed bundles, use the <tt>ps</tt> command.</p>

<p>To exit the Felix shell, simply type <tt>stop 0</tt> to stop the
System Bundle; any installed bundles will automatically be reloaded the
next time you start the associated profile. Additionally, any active
bundles will be reactivated the next time you restart the framework
with the same bundle cache.</p>

<p><a name="ApacheFelixUsageDocumentation-installingbundles"></a></p>

<h3><a name="ApacheFelixUsageDocumentation-InstallingBundles"></a>Installing Bundles</h3>

<p>A bundle is the OSGi term for a component for the OSGi framework. A
bundle is simply a JAR file containing a manifest and some combination
of Java classes, embedded JAR files, native code, and resources. A
bundle may provide some specific functionality for the user or it may
implement a service that other bundles can use; bundles can only use
functionality from other bundles through shared services and packages.</p>

<p>Felix is packaged with four bundles, which are located in the <tt>bundle/</tt>
directory of the Felix installation directory. There are bundles for
the Felix shell service, a text-based shell service user interface, a
bundle repository service, and a simple example bundle. In addition to
these bundles, the bundle repository services provides access to many
other bundles for easy installation. The bundle repository service
provides a shell command, named <tt>obr</tt>, to access available bundles; refer to the <a href="http://felix.apache.org/site/apache-felix-osgi-bundle-repository.html" title="Apache Felix OSGi Bundle Repository">Apache Felix OSGi Bundle Repository</a> for more information.</p>

<p>Before installing any bundles, it is important to understand how
bundles are manually deployed into the framework. Bundles are deployed
in two stages; first they are installed, then they are started. To
install a bundle use the <tt>install</tt> shell command followed by a bundle URL. For example, to install the <tt>simple.jar</tt> bundle included with Felix you type (assuming you have started Felix from its installation directory):</p>

<div class="preformatted"><div class="preformattedContent">
<pre>install file:bundle/simple.jar
</pre>
</div></div>

<p>Once a bundle is installed, it can then be started by using the <tt>start</tt> command and the bundle identifier of the desired bundle. The <tt>ps</tt>
shell command is used to list all installed bundles and to obtain the
bundle's identifier. The following Felix shell session capture
illustrates how to start the <tt>simple.jar</tt> bundle:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>-&gt; install [file:bundle/simple]
-&gt; ps
START LEVEL 1
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (0.8.0)
[   1] [Active     ] [    1] Shell Service (0.8.0)
[   2] [Active     ] [    1] Shell TUI (0.8.0)
[   3] [Active     ] [    1] Bundle Repository (0.8.0)
[   4] [Installed  ] [    1] Simple (0.8.0)
-&gt; start 4
Simple bundle 4 has started.
From native: Hello!
From embedded JAR: Hello!
Entry: META-INF/
Entry: org/
Entry: libfoo.so
The 'javax.servlet.http' package is not available.
The 'javax.servlet' package is not available.
-&gt;
</pre>
</div></div>

<p>The <tt>stop</tt> command is used to stop a bundle and the <tt>uninstall</tt> command is used to remove a bundle from the bundle cache. As an alternative to using the <tt>install</tt> and <tt>start</tt> commands explicitly, it is also possible to install and start a bundle in one step by using the <tt>start</tt> command with a bundle URL.</p>

<p>Bundles can be updated using the <tt>update</tt> command. The update
command allows you to specify an URL from which to retrieve the updated
bundle, but if one is not specified it will try to update the bundle
from the bundle's <tt>Bundle-UpdateLocation</tt> manifest attribute, if present, or the bundle's original location URL.</p>

<p><b>Important:</b> When you <tt>update</tt> or <tt>uninstall</tt> a
bundle, the changes appear to take effect immediately, but in reality
the changes are only partially enacted. If a bundle is updated or
uninstalled and it was exporting packages, these packages are not
removed until the framework is refreshed using the <tt>PackageAdmin</tt> service. The Felix shell offers a convenient <tt>refresh</tt> command for this purpose.</p>

<p>For an introduction to writing bundles and services, refer to the Felix bundle tutorial.</p>

<p><a name="ApacheFelixUsageDocumentation-installingbundlesproxies"></a></p>

<h3><a name="ApacheFelixUsageDocumentation-WebProxyIssueswhenInstallingBundles"></a>Web Proxy Issues when Installing Bundles</h3>

<p>If you use a proxy for Web access, then you may run into difficulty
using the Felix shell to install bundles from a remote URL. To remedy
this situation, certain system properties must be set to make Felix
work with your proxy. These properties are:</p>

<ul>
	<li><tt>http.proxyHost</tt> - the name of the proxy host.</li>
	<li><tt>http.proxyPort</tt> - the port of the proxy host.</li>
	<li><tt>http.proxyAuth</tt>
- 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.,
<tt>rickhall:mypassword</tt>).</li>
</ul>


<p>These system properties can be set directly on the command line when starting the JVM using the standard "<tt>-D&lt;prop&gt;=&lt;value&gt;</tt>" syntax or you can put them in the <tt>lib/system.properties</tt> file of your Felix installation; see the next section on <a href="#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">configuring Felix</a> for more information.</p>

<p><a name="ApacheFelixUsageDocumentation-configuringfelix"></a></p>

<h2><a name="ApacheFelixUsageDocumentation-ConfiguringFelix"></a>Configuring Felix</h2>

<p>Felix uses properties to configure certain aspects of its behavior. The Felix launcher (i.e., <tt>java -jar bin/felix.jar</tt>) reads configuration properties from two different locations in the installation directory: <tt>conf/system.properties</tt> and <tt>conf/config.properties</tt>. Both files use standard Java property file syntax.</p>

<p>The <tt>conf/system.properties</tt> file provides a convenient
mechanism for defining Java system properties, but it is largely
ignored by Felix, since Felix does not typically use system properties
for configuration purposes. Any properties placed in the <tt>conf/system.properties</tt> file are available at run time via <tt>System.getProperty()</tt> and <tt>BundleContext.getProperty()</tt>. It is also possible to specify a different location for the system properties file by using the <tt>felix.system.properties</tt> system property when executing Felix. For example:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>java -Dfelix.system.properties=file:/home/rickhall/system.properties -jar bin/felix.jar
</pre>
</div></div>

<p>Nearly all Felix configuration occurs using properties in the <tt>conf/config.properties</tt> file. It is possible to change the location of the configuration properties file by specifying a new location value using the <tt>felix.config.properties</tt>
system property. It is necessary to use a system property here since
Felix needs this value to start execution. As an example, the following
command could be used to specify a custom location for the
configuration properties file:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>java -Dfelix.config.properties=file:/home/rickhall/config.properties -jar bin/felix.jar
</pre>
</div></div>

<p>In this example the configuration properties will be read from the
specified URL. All remaining configuration properties should be defined
in the <tt>config.properties</tt> file itself. All configuration properties are accessible at run time via <tt>BundleContext.getProperty()</tt>.</p>

<p>Some configuration properties are handled by Felix' launcher, while
others are handled by the Felix framework itself. Regardless, both
launcher and framework configuration properties are placed in the <tt>conf/config.properties</tt> files.</p>

<p>The following are launcher configuration properties:</p>

<ul>
	<li><tt>felix.auto.install.&lt;n&gt;</tt> - Space-delimited list of bundle URLs to automatically install when Felix is started, where <tt>&lt;n&gt;</tt> is the start level into which the bundle will be installed (e.g., <tt>felix.auto.install.2</tt>).</li>
	<li><tt>felix.auto.start.&lt;n&gt;</tt> - Space-delimited list of bundle URLs to automatically install and start when Felix is started, where <tt>&lt;n&gt;</tt> is the start level into which the bundle will be installed (e.g., <tt>felix.auto.start.2</tt>).</li>
</ul>


<p>The following are framework configuration properties (properties starting with "<tt>felix</tt>" are specific to Felix, while those starting with "<tt>org.osgi</tt>" are standard OSGi properties):</p>

<ul>
	<li><tt>org.osgi.framework.storage</tt> - Sets the directory to use as the bundle cache; by default bundle cache directory is <tt>felix-cache</tt>
in the current working directory. The value should be a valid directory
name. The directory name can be either absolute or relative. Relative
directory names are relative to the current working directory. The
specified directory will be created if it does not exist.</li>
	<li><tt>org.osgi.framework.storage.clean</tt> - Determines whether the bundle cache is flushed. The value can either be "<tt>none</tt>" or "<tt>onFirstInit</tt>", where "<tt>none</tt>" does not flush the bundle cache and "<tt>onFirstInit</tt>" flushes the bundle cache when the framework instance is first initialized. The default value is "<tt>none</tt>".</li>
	<li><tt>felix.cache.rootdir</tt> - Sets the root directory to use to calculate the bundle cache directory for relative directory names. If <tt>org.osgi.framework.storage</tt>
is set to a relative name, by default it is relative to the current
working directory. If this property is set, then it will be calculated
as being relative to the specified root directory.</li>
	<li><tt>felix.cache.bufsize</tt>
- Sets the buffer size to be used by the cache; the default value is
4096. The integer value of this string provides control over the size
of the internal buffer of the disk cache for performance reasons.</li>
	<li><tt>org.osgi.framework.system.packages</tt>
- Specifies a comma-delimited list of packages that should be exported
via the System Bundle from the parent class loader. The framework will
set this to a reasonable default. If the value is specified, it
replaces any default value.</li>
	<li><tt>org.osgi.framework.system.packages.extra</tt>
- Specifies a comma-delimited list of packages that should be exported
via the System Bundle from the parent class loader in addition to the
packages in <tt>org.osgi.framework.system.packages</tt>. The default value is empty. If a value is specified, it is appended to the list of default or specified packages in <tt>org.osgi.framework.system.packages</tt>.</li>
	<li><tt>org.osgi.framework.bootdelegation</tt>
- Specifies a comma-delimited list of packages that should be made
implicitly available to all bundles from the parent class loader. It is
recommended not to use this property since it breaks modularity. The
default value is empty.</li>
	<li><tt>felix.systembundle.activators</tt> - A <tt>List</tt> of <tt>BundleActivator</tt>
instances that are started/stopped when the System Bundle is
started/stopped. The specified instances will receive the System
Bundle's <tt>BundleContext</tt> when invoked. (This property cannot be
set in the configuration file since it requires instances; it can only
be passed into Felix' constructor directly.)</li>
	<li><tt>felix.log.logger</tt> - An instance of <tt>Logger</tt>
that the framework uses as its default logger. (This property cannot be
set in the configuration file since it requires an instance; it can
only be passed into Felix' constructor directly.)</li>
	<li><tt>felix.log.level</tt>
- An integer value indicating the degree of logging reported by the
framework; the higher the value the more logging is reported. If zero
('0') is specified, then logging is turned off completely. The log
levels match those specified in the OSGi Log Service (i.e., 1 = error,
2 = warning, 3 = information, and 4 = debug). The default value is 1.</li>
	<li><tt>org.osgi.framework.startlevel</tt> - The initial start level of the framework once it starts execution; the default value is 1.</li>
	<li><tt>felix.startlevel.bundle</tt> - The default start level for newly installed bundles; the default value is 1.</li>
	<li><tt>felix.service.urlhandlers</tt> - Flag to indicate whether to activate the URL Handlers service for the framework instance; the default value is "<tt>true</tt>". Activating the URL Handlers service will result in the <tt>URL.setURLStreamHandlerFactory()</tt> and <tt>URLConnection.setContentHandlerFactory()</tt> being called.</li>
	<li><tt>felix.fragment.validation</tt> - Determines if installing unsupported fragment bundles throws an exception or logs a warning. Possible values are "<tt>exception</tt>" or "<tt>warning</tt>". The default value is "<tt>exception</tt>".</li>
</ul>


<p>The Felix installation contains a default <tt>conf/config.properties</tt> file for automatically starting the shell-related bundles.</p>

<p><a name="ApacheFelixUsageDocumentation-migrating"></a></p>

<h3><a name="ApacheFelixUsageDocumentation-MigratingfromEarlierVersions"></a>Migrating from Earlier Versions</h3>

<p>The release of Felix <tt>1.4.0</tt> introduced some configuration property changes. This section describes the differences from older versions of Felix.</p>

<ul>
	<li><b>Removed</b>
	<ul>
		<li><tt>felix.embedded.execution</tt> - No longer needed, since the framework now never calls <tt>System.exit()</tt>; the creator of the framework is now always responsible for exiting the VM.</li>
		<li><tt>felix.strict.osgi</tt> - No longer needed, since all non-specification features have been removed.</li>
		<li><tt>felix.cache.dir</tt> - No longer needed, since Felix no longer uses bundle cache profiles for saving sets of bundles.</li>
		<li><tt>felix.cache.profile</tt> - No longer needed, since Felix no longer uses bundle cache profiles for saving sets of bundles.</li>
	</ul>
	</li>
	<li><b>Renamed</b>
	<ul>
		<li><tt>felix.cache.profiledir</tt> - The equivalent of this property is now named <tt>org.osgi.framework.storage</tt>.</li>
		<li><tt>felix.startlevel.framework</tt> - The equivalent of this property is now named <tt>org.osgi.framework.startlevel</tt>.</li>
	</ul>
	</li>
	<li><b>Introduced</b>
	<ul>
		<li><tt>org.osgi.framework.system.packages.extra</tt> - New property, as described above, added to align with standard framework API.</li>
		<li><tt>org.osgi.framework.storage.clean</tt> - New property, as described above, added to align with standard framework API.</li>
		<li><tt>felix.cache.rootdir</tt> - Introduced as a result of removing bundle profiles to help resolve relative bundle cache directories.</li>
		<li><tt>felix.fragment.validation</tt> - Introduced to control fragment validation, since the default behavior introduced in <tt>1.2.0</tt> of throwing an exception for fragments using unsupported features was causing issues for some users.</li>
	</ul>
	</li>
</ul>


<p>For the most part, these changes are minor and previous behavior
achieved from older configuration properties is either easily attained
with the new properties or no longer necessary.</p>

<p><a name="ApacheFelixUsageDocumentation-propertysubstitution"></a></p>

<h3><a name="ApacheFelixUsageDocumentation-SystemPropertySubstituion"></a>System Property Substituion</h3>
<p>It is possible to use system properties to specify the values of properties in the <tt>conf/config.properties</tt> file. This is achieved through system property substitution, which is instigated by using <tt>${&lt;property&gt;</tt>} syntax, where <tt>&lt;property&gt;</tt>
is the name of a system property to substitute. When such a property
value is retrieved by a bundle, the system property value will be
substituted into the bundle property value as appropriate. It is
possible to have nested system property substitution, in which case the
inner-most property is substituted first, then the next inner most,
until reaching the outer most.</p>

<p><a name="ApacheFelixUsageDocumentation-defaultshell"></a></p>

<h3><a name="ApacheFelixUsageDocumentation-ChangingtheCommandShellUserInterface"></a>Changing the Command Shell User Interface</h3>

<p>Felix' shell service supports multiple user interface
implementations; the default shell user interface is text-based, but a
simple graphical shell is also available. To change the default shell
user interface, you must download the Shell GUI and Shell GUI Plugin
bundles. Then you must modify the <tt>felix.auto.start</tt> property in the <tt>conf/config.properties</tt> file of your Felix installation. For the text-based user interface, the property value should look like this:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>felix.auto.start.1=file:bundle/shell.jar file:bundle/shelltui.jar \
 file:bundle/bundlerepository.jar
</pre>
</div></div>

<p>This property value instructs Felix to automatically start the shell
service, the shell textual user interface, and the bundle repository. (<em>Note:
The "\" character at the end of the above line indicates that the
property value continues on the next line; it is also possible to
specify the property value on one line.</em>) For the GUI-based shell user interface, the property value should look something like this:</p>

<div class="preformatted"><div class="preformattedContent">
<pre>felix.auto.start.1=file:bundle/shell.jar file:bundle/bundlerepository.jar \
 file:bundle/shellgui.jar file:bundle/shellplugin.jar
</pre>
</div></div>

<p>This property value instructs Felix to automatically start the shell
service, the bundle repository, the shell GUI, and the shell GUI
plugins.</p>

<p><a name="ApacheFelixUsageDocumentation-configuringbundles"></a></p>

<h2><a name="ApacheFelixUsageDocumentation-ConfiguringBundles"></a>Configuring Bundles</h2>

<p>Some bundles use properties to configure certain aspects of their behavior. As an example, the default URL for the <tt>cd</tt> command of the shell service can be specified using the property <tt>felix.shell.baseurl</tt>.
It is a good idea, when implementing bundles, to parameterize them with
properties where appropriate. To learn about the configuration options
for specific bundles, refer to the documentation that accompanies them.</p>

<p>Bundle properties are also defined in the <tt>conf/config.properties</tt> property file. Any property placed in this file will be accessible via <tt>BundleContext.getProperty()</tt>
at run time. The property file uses the standard Java property file
syntax (i.e., attribute-value pairs). For information on changing the
default location of this file, refer to the section on <a href="#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">configuring Felix</a>.</p>

<p><a name="ApacheFelixUsageDocumentation-feedback"></a></p>

<h2><a name="ApacheFelixUsageDocumentation-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-usage-documentation_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-usage-documentation_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>.</p>
    </div>
  </body></html>