blob: bef0bebe9471d5d15d9cd0a36b8ea95777148d45 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
<!--
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.
-->
<html>
<head>
<link rel="shortcut icon" href="http://aries.apache.org/images/favicon.ico"></link>
<link type="text/css" rel="stylesheet" href="http://aries.apache.org/resources/site.css"></link>
</script><script src="http://aries.apache.org/resources/menus.js" language="javascript" type="text/javascript"></script>
<meta name="keywords" content="..."/>
<meta name="description" content="..." />
<title>
Apache Aries - Subsystems
</title>
</head>
<body onload="SetMenu()">
<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">
<!-- Banner -->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left" class="topbardiv" nowrap="">
<a href="http://aries.apache.org/" title="Apache Aries"> <img border="0" src="http://aries.apache.org/images/Arieslogo_Horizontal.gif"> </a>
</td>
<td align="right" nowrap="">
<a href="http://www.apache.org/" title="The Apache Software Foundation"> <img border="0" src="http://aries.apache.org/images/apache_feather.png"> </a>
</td>
</tr>
</table>
<!-- Banner -->
</div>
</div>
<div id="top-menu">
<table border="0" cellpadding="1" cellspacing="0" width="100%">
<tr>
<td>
<div align="left">
<!-- Breadcrumbs -->
<!-- Breadcrumbs -->
</div>
</td>
<td>
<div align="right">
<!-- Quicklinks -->
<DIV style="padding: 5px 5px 0px 25px;">
<FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
<A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License</A>
<INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
<INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
<INPUT maxlength="255" name="q" size="15" type="text" value></INPUT>
<INPUT name="btnG" type="submit" value="Search"></INPUT>
<INPUT name="domains" type="hidden" value="aries.apache.org"></INPUT>
<INPUT name="sitesearch" type="hidden" value="aries.apache.org"></INPUT>
</FORM>
</DIV>
<!-- Quicklinks -->
</div>
</td>
</tr>
</table>
</div>
</td>
<td id="cell-1-3">&nbsp;</td>
<td id="cell-1-4">&nbsp;</td>
</tr>
<tr width="100%">
<td id="cell-2-0" colspan="2">&nbsp;</td>
<td id="cell-2-1">
<table>
<tr height="100%" valign="top">
<td height="100%">
<div id="wrapper-menu-page-right">
<div id="wrapper-menu-page-top">
<div id="wrapper-menu-page-bottom">
<div id="menu-page">
<!-- NavigationBar -->
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<div onclick="SwitchMenu('documentation')" id="documentationTitle" class="menutitle">Documentation</div>
<div id="documentation" class="menuitemgroup">
<div class="menuitem">
<a href="/documentation/integrators-guide.html">Integrators Guide</a>
</div>
<div class="menuitem">
<a href="/documentation/articles.html">Articles</a>
</div>
<div class="menuitem">
<a href="https://svn.apache.org/repos/asf/aries/slides/">Slides</a>
</div>
<div class="menuitem">
<a href="/documentation/tutorials.html">Tutorials</a>
</div>
<div class="menuitem">
<a href="/documentation/tools.html">Tools</a>
</div>
</div>
<div onclick="SwitchMenu('modules')" id="modulesTitle" class="menutitle">Modules</div>
<div id="modules" class="menuitemgroup">
<div class="menuitem">
<a href="/modules/samples.html">Samples</a>
</div>
<div class="menuitem">
<a href="/modules/async-svcs.html">Asynchronous Services</a>
</div>
<div class="menuitem">
<a href="/modules/blueprint.html">Blueprint</a>
</div>
<div class="menuitem">
<a href="/modules/blueprint-maven-plugin.html">Blueprint-maven-plugin</a>
</div>
<div class="menuitem">
<a href="/modules/blueprintannotation.html">Blueprint Annotations</a>
</div>
<div class="menuitem">
<a href="/modules/blueprintnoosgi.html">Blueprint No-OSGi</a>
</div>
<div class="menuitem">
<a href="/modules/blueprintweb.html">Blueprint Web</a>
</div>
<div class="menuitem">
<a href="/modules/containers.html">Containers</a>
</div>
<div class="menuitem">
<a href="/modules/esaanttask.html">ESA Ant Task </a>
</div>
<div class="menuitem">
<a href="/modules/ebamavenpluginproject.html">EBA Maven Plugin </a>
</div>
<div class="menuitem">
<a href="/modules/esamavenpluginproject.html">ESA Maven Plugin </a>
</div>
<div class="menuitem">
<a href="/modules/jmx.html">JMX</a>
</div>
<div class="menuitem">
<a href="/modules/jndiproject.html">JNDI</a>
</div>
<div class="menuitem">
<a href="/modules/jpaproject.html">JPA</a>
</div>
<div class="menuitem">
<a href="/modules/transactioncontrol.html">Transaction Control Service</a>
</div>
<div class="menuitem">
<a href="/modules/transactionsproject.html">Transactions</a>
</div>
<div class="menuitem">
<a href="/modules/rsa.html">Remote Service Admin (RSA)</a>
</div>
<div class="menuitem">
<a href="/modules/spi-fly.html">SPI Fly</a>
</div>
<div class="menuitem">
<a href="/modules/subsystems.html">Subsystems</a>
</div>
<div class="menuitem">
<a href="/modules/applications.html">Applications (obsolete)</a>
</div>
</div>
<div onclick="SwitchMenu('downloads')" id="downloadsTitle" class="menutitle">Downloads</div>
<div id="downloads" class="menuitemgroup">
<div class="menuitem">
<a href="/downloads/currentreleases.html">Current Releases</a>
</div>
<div class="menuitem">
<a href="/downloads/testresults.html">Compliance Tests</a>
</div>
<div class="menuitem">
<a href="/downloads/archived-releases.html">Archived Releases</a>
</div>
</div>
<div onclick="SwitchMenu('community')" id="communityTitle" class="menutitle">Community</div>
<div id="community" class="menuitemgroup">
<div class="menuitem">
<a href="/community/resources.html">Community Resources</a>
</div>
<div class="menuitem">
<a href="/community/gettinginvolved.html">Getting Involved</a>
</div>
<div class="menuitem">
<a href="/community/people.html">Who we are</a>
</div>
<div class="menuitem">
<a href="/community/boardreports.html">Board Reports</a>
</div>
<div class="menuitem">
<a href="/community/logos.html">Logos for Users</a>
</div>
</div>
<div onclick="SwitchMenu('development')" id="developmentTitle" class="menutitle">Development</div>
<div id="development" class="menuitemgroup">
<div class="menuitem">
<a href="/development/buildingaries.html">Building Aries </a>
</div>
<div class="menuitem">
<a href="/development/guidelines.html">Cording Guidelines</a>
</div>
<div class="menuitem">
<a href="/development/architecture.html">Architecture</a>
</div>
<div class="menuitem">
<a href="/development/releasingaries.html">Releasing Aries </a>
</div>
<div class="menuitem">
<a href="/development/compliancetesting.html">OSGi Compliance Tests </a>
</div>
<div class="menuitem">
<a href="/development/maintainingthewebpages.html">Web Site Maintenance </a>
</div>
</div>
<div onclick="SwitchMenu('sponsorship')" id="sponsorshipTitle" class="menutitle">Sponsorship</div>
<div id="sponsorship" class="menuitemgroup">
<div class="menuitem">
<a href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</div>
<div class="menuitem">
<a href="http://www.apache.org/foundation/sponsorship.html">Sponsoring Apache</a>
</div>
</div>
<div class="promotion">
<a href="http://www.apache.org/events/current-event.html">
<img src="http://www.apache.org/events/current-event-125x125.png" width="125" height="125"/>
</a>
</div>
<!-- NavigationBar -->
</div>
</div>
</div>
</div>
</td>
<td height="100%" width="100%">
<!-- Content -->
<div class="wiki-content"><style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h1 id="osgi-subsystems">OSGi Subsystems<a class="headerlink" href="#osgi-subsystems" title="Permanent link">&para;</a></h1>
<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">&para;</a></h2>
<p>Apache Aries Subsystems is the Reference Implementation of the OSGi Subsystems Specification, chapter 134 of the
<a href="http://www.osgi.org/Specifications/HomePage" title="OSGi Enterprise specifications">OSGi Enterprise specifications</a>. The Aries 1.x components implement the 1.0 version of the Subsystem spec. Aries 2.x and newer implement the 1.1 version of OSGi Subsystems.</p>
<h2 id="getting-started">Getting started<a class="headerlink" href="#getting-started" title="Permanent link">&para;</a></h2>
<p>This section shows the bundles to install to get the Subsystems implementation running in your favourite OSGi Framework.</p>
<p>The Aries Subsystem implementation uses the OSGi Coordination service, the OSGi
Resolver service, the OSGi Repository service and integrates with the OSGi Configuration Admin service. Additional
dependencies are the Aries Util bundle, the Equinox Region bundle and SLF4J for logging.</p>
<p>The following are downloadable links (from Maven central) that
provide all the required components to get subsystems up and running with Apache
Felix. Note that the Felix Framework distribution comes with OSGi Repository and Resolver implementations so these
do not need to be added. (When running Aries Subsystems with another OSGi Framework these
must be provided.)</p>
<ul>
<li><a href="https://repo1.maven.org/maven2/org/apache/aries/subsystem/org.apache.aries.subsystem.api/2.0.6/org.apache.aries.subsystem.api-2.0.6.jar">org.apache.aries.subsystem.api</a></li>
<li><a href="https://repo1.maven.org/maven2/org/apache/aries/subsystem/org.apache.aries.subsystem.core/2.0.6/org.apache.aries.subsystem.core-2.0.6.jar">org.apache.aries.subsystem.core</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/aries/org.apache.aries.util/1.1.1/org.apache.aries.util-1.1.1.jar">org.apache.aries.util</a></li>
<li><a href="https://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.configadmin/1.8.8/org.apache.felix.configadmin-1.8.8.jar">org.apache.felix.configadmin</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.coordinator/1.0.0/org.apache.felix.coordinator-1.0.0.jar">org.apache.felix.coordinator</a></li>
<li><a href="http://repo1.maven.org/maven2/org/eclipse/equinox/org.eclipse.equinox.region/1.2.101.v20150831-1342/org.eclipse.equinox.region-1.2.101.v20150831-1342.jar">org.eclipse.equinox.region</a></li>
<li><a href="http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar">slf4j-api</a></li>
<li><a href="http://repo1.maven.org/maven2/org/slf4j/slf4j-simple/1.7.12/slf4j-simple-1.7.12.jar">slf4j-simple</a> (or another slf4j binding)</li>
</ul>
<p>After installing and starting all these components the Felix runtime looks like this:</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">lb</span>
<span class="n">START</span> <span class="n">LEVEL</span> 1
<span class="n">ID</span><span class="o">|</span><span class="n">State</span> <span class="o">|</span><span class="n">Level</span><span class="o">|</span><span class="n">Name</span>
0<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 0<span class="o">|</span><span class="n">System</span> <span class="n">Bundle</span> <span class="p">(</span>5<span class="p">.</span>4<span class="p">.</span>0<span class="p">)</span><span class="o">|</span>5<span class="p">.</span>4<span class="p">.</span>0
1<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Bundle</span> <span class="n">Repository</span> <span class="p">(</span>2<span class="p">.</span>0<span class="p">.</span>6<span class="p">)</span><span class="o">|</span>2<span class="p">.</span>0<span class="p">.</span>6
2<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Gogo</span> <span class="n">Command</span> <span class="p">(</span>0<span class="p">.</span>16<span class="p">.</span>0<span class="p">)</span><span class="o">|</span>0<span class="p">.</span>16<span class="p">.</span>0
3<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Gogo</span> <span class="n">Runtime</span> <span class="p">(</span>0<span class="p">.</span>16<span class="p">.</span>2<span class="p">)</span><span class="o">|</span>0<span class="p">.</span>16<span class="p">.</span>2
4<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Gogo</span> <span class="n">Shell</span> <span class="p">(</span>0<span class="p">.</span>10<span class="p">.</span>0<span class="p">)</span><span class="o">|</span>0<span class="p">.</span>10<span class="p">.</span>0
5<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Aries</span> <span class="n">Subsystem</span> <span class="n">API</span> <span class="p">(</span>2<span class="p">.</span>0<span class="p">.</span>6<span class="p">)</span><span class="o">|</span>2<span class="p">.</span>0<span class="p">.</span>6
6<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Aries</span> <span class="n">Subsystem</span> <span class="n">Core</span> <span class="p">(</span>2<span class="p">.</span>0<span class="p">.</span>6<span class="p">)</span><span class="o">|</span>2<span class="p">.</span>0<span class="p">.</span>6
7<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Aries</span> <span class="n">Util</span> <span class="p">(</span>1<span class="p">.</span>1<span class="p">.</span>1<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>1<span class="p">.</span>1
8<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Configuration</span> <span class="n">Admin</span> <span class="n">Service</span> <span class="p">(</span>1<span class="p">.</span>8<span class="p">.</span>8<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>8<span class="p">.</span>8
9<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Coordinator</span> <span class="n">Service</span> <span class="p">(</span>1<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>0<span class="p">.</span>0
10<span class="o">|</span><span class="n">Resolved</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">Region</span> <span class="n">Digraph</span> <span class="p">(</span>1<span class="p">.</span>2<span class="p">.</span>101<span class="p">.</span><span class="n">v20150831</span><span class="o">-</span>1342<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>2<span class="p">.</span>101<span class="p">.</span><span class="n">v20150831</span><span class="o">-</span>1342
11<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">slf4j</span><span class="o">-</span><span class="n">api</span> <span class="p">(</span>1<span class="p">.</span>7<span class="p">.</span>12<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>7<span class="p">.</span>12
12<span class="o">|</span><span class="n">Resolved</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">slf4j</span><span class="o">-</span><span class="n">simple</span> <span class="p">(</span>1<span class="p">.</span>7<span class="p">.</span>12<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>7<span class="p">.</span>12
13<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">org</span><span class="p">.</span><span class="n">osgi</span><span class="p">.</span><span class="n">service</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">region</span><span class="p">.</span><span class="n">context</span><span class="p">.</span>0 <span class="p">(</span>1<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span><span class="o">|</span>1<span class="p">.</span>0<span class="p">.</span>0
</pre></div>
<p>The Region Digraph and slf4j-simple bundles are fragments, so they can not be started.
You can see that the Subsystems implementation is operational as it created a synthesized
bundle (13) to represent the root context. The subsystems implementation sometimes
synthesizes a bundle to represent a subsystem. Whether or not this happens depends on
the isolation model of a subsystem.</p>
<p>You can also see that the Subsystem service for the root subsystem has been registered
by looking at the services registered by the Subsystem Core bundle (6):</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">inspect</span> <span class="n">cap</span> <span class="n">service</span> 6
<span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">aries</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">core</span> <span class="p">[</span>6<span class="p">]</span> <span class="n">provides</span><span class="p">:</span>
<span class="o">---------------------------------------------</span>
<span class="n">service</span><span class="p">;</span> <span class="n">org</span><span class="p">.</span><span class="n">osgi</span><span class="p">.</span><span class="n">service</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">Subsystem</span><span class="p">,</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">aries</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">AriesSubsystem</span> <span class="n">with</span> <span class="k">properties</span><span class="p">:</span>
<span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">aries</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">service</span><span class="p">.</span><span class="n">regions</span> <span class="p">=</span> <span class="p">[</span><span class="n">org</span><span class="p">.</span><span class="n">eclipse</span><span class="p">.</span><span class="n">equinox</span><span class="p">.</span><span class="n">region</span><span class="p">.</span><span class="n">kernel</span><span class="p">]</span>
<span class="n">subsystem</span><span class="p">.</span><span class="n">id</span> <span class="p">=</span> 0
<span class="n">subsystem</span><span class="p">.</span><span class="n">state</span> <span class="p">=</span> <span class="n">ACTIVE</span>
<span class="n">subsystem</span><span class="p">.</span><span class="n">symbolicName</span> <span class="p">=</span> <span class="n">org</span><span class="p">.</span><span class="n">osgi</span><span class="p">.</span><span class="n">service</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">root</span>
<span class="n">subsystem</span><span class="p">.</span><span class="n">type</span> <span class="p">=</span> <span class="n">osgi</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">application</span>
<span class="n">subsystem</span><span class="p">.</span><span class="n">version</span> <span class="p">=</span> 1<span class="p">.</span>0<span class="p">.</span>0
<span class="p">...</span> <span class="n">other</span> <span class="k">properties</span> <span class="n">and</span> <span class="n">services</span>
</pre></div>
<p>Each installed subsystem is represented by a serparate service.</p>
<h2 id="tools">Tools<a class="headerlink" href="#tools" title="Permanent link">&para;</a></h2>
<p>The Apache Aries community provides a number of tools that facilitate working with OSGi Subsystems:</p>
<ul>
<li>Subsystem Gogo Command - a Gogo command to work with subsystems, for more info see below.</li>
<li><a href="http://aries.apache.org/modules/esaanttask.html">esa-ant-task</a> - an Ant task to create .esa archives.</li>
<li><a href="http://aries.apache.org/modules/esamavenpluginproject.html">eas-maven-plugin</a> - a Maven plugin to create .esa archives.</li>
</ul>
<h3 id="subsystem-gogo-command">Subsystem Gogo Command<a class="headerlink" href="#subsystem-gogo-command" title="Permanent link">&para;</a></h3>
<p><a href="https://svn.apache.org/repos/asf/aries/trunk/subsystem/subsystem-gogo-command">https://svn.apache.org/repos/asf/aries/trunk/subsystem/subsystem-gogo-command</a> contains a simple bundle with Gogo commands
to control subsystems. This bundle can also be downloaded from <a href="https://repo1.maven.org/maven2/org/apache/aries/subsystem/org.apache.aries.subsystem.gogo-command/1.0.0/org.apache.aries.subsystem.gogo-command-1.0.0.jar">Maven Central here</a>.</p>
<p>After installing the gogo command bundle you can execute subsystem commands, for example:</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">subsystem</span><span class="p">:</span><span class="n">list</span>
0 <span class="n">ACTIVE</span> <span class="n">org</span><span class="p">.</span><span class="n">osgi</span><span class="p">.</span><span class="n">service</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">root</span> 1<span class="p">.</span>0<span class="p">.</span>0
</pre></div>
<p>Use <code>subsystem:install</code> to install additional subsystems, for example one that is part of the <code>subsystem-itests</code> module:</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">subsystem</span><span class="p">:</span><span class="n">install</span> <span class="n">file</span><span class="p">:</span><span class="o">/</span><span class="n">checkouts</span><span class="o">/</span><span class="n">aries</span><span class="o">/</span><span class="n">subsystem</span><span class="o">/</span><span class="n">subsystem</span><span class="o">-</span><span class="n">itests</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">feature1</span><span class="p">.</span><span class="n">esa</span>
<span class="p">...</span>
<span class="n">Subsystem</span> <span class="n">successfully</span> <span class="n">installed</span><span class="p">:</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">aries</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">feature1</span><span class="p">;</span> <span class="n">id</span><span class="p">:</span> 1
</pre></div>
<p>This subsystem embeds another subsystem which automatically gets installed too. When you list all subsystems you can see both:</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">subsystem</span><span class="p">:</span><span class="n">list</span>
0 <span class="n">ACTIVE</span> <span class="n">org</span><span class="p">.</span><span class="n">osgi</span><span class="p">.</span><span class="n">service</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">root</span> 1<span class="p">.</span>0<span class="p">.</span>0
1 <span class="n">INSTALLED</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">aries</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">feature1</span> 1<span class="p">.</span>0<span class="p">.</span>0
2 <span class="n">INSTALLED</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">aries</span><span class="p">.</span><span class="n">subsystem</span><span class="p">.</span><span class="n">feature2</span> 1<span class="p">.</span>0<span class="p">.</span>0
</pre></div>
<p>Together, these subsystems contain 3 bundles:</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">lb</span>
<span class="n">START</span> <span class="n">LEVEL</span> 1
<span class="n">ID</span><span class="o">|</span><span class="n">State</span> <span class="o">|</span><span class="n">Level</span><span class="o">|</span><span class="n">Name</span>
0<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 0<span class="o">|</span><span class="n">System</span> <span class="n">Bundle</span> <span class="p">(</span>5<span class="p">.</span>0<span class="p">.</span>1<span class="p">)</span>
<span class="p">...</span>
16<span class="o">|</span><span class="n">Installed</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">TB3</span> <span class="p">(</span>1<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span>
17<span class="o">|</span><span class="n">Installed</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">TB1</span> <span class="p">(</span>1<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span>
18<span class="o">|</span><span class="n">Installed</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">TB2</span> <span class="p">(</span>2<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span>
</pre></div>
<p>Use <code>subsystem:start</code> to start a subsystem. This will start all its bundles and all the bundles of dependent subsystems. So the
following single command, starts 3 bundles:</p>
<div class="codehilite"><pre><span class="n">g</span>! <span class="n">subsystem</span><span class="p">:</span><span class="n">start</span> 1
<span class="n">g</span>! <span class="n">lb</span>
<span class="n">START</span> <span class="n">LEVEL</span> 1
<span class="n">ID</span><span class="o">|</span><span class="n">State</span> <span class="o">|</span><span class="n">Level</span><span class="o">|</span><span class="n">Name</span>
0<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 0<span class="o">|</span><span class="n">System</span> <span class="n">Bundle</span> <span class="p">(</span>5<span class="p">.</span>0<span class="p">.</span>1<span class="p">)</span>
<span class="p">...</span>
16<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">TB3</span> <span class="p">(</span>1<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span>
17<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">TB1</span> <span class="p">(</span>1<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span>
18<span class="o">|</span><span class="n">Active</span> <span class="o">|</span> 1<span class="o">|</span><span class="n">TB2</span> <span class="p">(</span>2<span class="p">.</span>0<span class="p">.</span>0<span class="p">)</span>
</pre></div>
<h3 id="subsystem-gogo-commands">Subsystem gogo commands<a class="headerlink" href="#subsystem-gogo-commands" title="Permanent link">&para;</a></h3>
<p>The following commands are available from the subsystem-gogo-command bundle:</p>
<ul>
<li><code>subsystem:install &lt;url&gt;</code> - Install and resolve a subsystem.</li>
<li><code>subsystem:list &lt;subsystemId&gt;</code> - List installed subsystems.</li>
<li><code>subsystem:start &lt;subsystemId&gt;</code> - Start a subsystem and its dependencies.</li>
<li><code>subsystem:stop &lt;subsystemId&gt;</code> - Stop a subsystem and its dependencies.</li>
<li><code>subsystem:uninstall &lt;subsystemId&gt;</code> - Uninstall a subsystem and its dependencies. </li>
</ul>
<p>Note that, following the OSGi Subsystem specification, dependent subsystems are only stopped and uninstalled when the last using subsystem
is stopped/uninstalled.</p>
<h2 id="development">Development<a class="headerlink" href="#development" title="Permanent link">&para;</a></h2>
<p>The Aries Subsystems code base can be found at the following location: <a href="https://svn.apache.org/repos/asf/aries/trunk/subsystem">https://svn.apache.org/repos/asf/aries/trunk/subsystem</a></p></div>
<!-- Content -->
</td>
</tr>
</table>
</td>
<td id="cell-2-2" colspan="2">&nbsp;</td>
</tr>
<tr width="100%">
<td id="cell-3-0">&nbsp;</td>
<td id="cell-3-1">&nbsp;</td>
<td id="cell-3-2">
<div id="footer">
<!-- Footer -->
<div id="site-footer">
<a href="http://aries.apache.org/privacy-policy.html";>Privacy
Policy</a>
</div>
<!-- Footer -->
</div>
</td>
<td id="cell-3-3">&nbsp;</td>
<td id="cell-3-4">&nbsp;</td>
</tr>
<tr width="100%">
<td id="cell-4-0" colspan="2">&nbsp;</td>
<td id="cell-4-1">&nbsp;</td>
<td id="cell-4-2" colspan="2">&nbsp;</td>
</tr>
</table>
</body>
</html>