felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r849204 [6/33] - in /websites/staging/felix/trunk/content: ./ documentation/subprojects/ documentation/subprojects/apache-felix-ipojo/ documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/ documentation/subprojects/apach...
Date Sun, 03 Feb 2013 06:45:22 GMT
Modified: websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html
==============================================================================
--- websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html (original)
+++ websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html Sun Feb  3 06:45:21 2013
@@ -20,9 +20,45 @@
   <head>
     <title>Apache Felix - iPOJO Composition Tutorial</title>
     <link rel="icon" href="/res/favicon.ico">
-    <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
-    <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
+    <link rel="stylesheet" href="/site/media.data/site.css" type="text/css" media="all">
+    <link rel="stylesheet" href="/ipojo/site/superfish.css" type="text/css" media="all">
+    <link rel="stylesheet" href="/ipojo/site/style.css" type="text/css" media="all">
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    
+    <!--
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shCore.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushCSharp.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushPhp.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushJScript.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushVb.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushSql.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushXml.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushShell.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushDelphi.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushPython.js"></script>
+    <script class="javascript" src="http://cwiki.apache.org/confluence/download/resources/confluence.ext.code:code/shBrushJava.js"></script>
+    -->
+    
+    <script type="text/javascript" src="/ipojo/site/jquery-1.js"></script>
+    <script type="text/javascript" src="/ipojo/site/hoverIntent.js"></script>
+    <script type="text/javascript" src="/ipojo/site/superfish.js"></script> 
+    <script type="text/javascript" src="/ipojo/site/supersubs.js"></script> 
+    
+    <script type="text/javascript"> 
+     
+        $(document).ready(function(){ 
+            $("ul.sf-menu").supersubs({ 
+                minWidth:    14,   // minimum width of sub-menus in em units 
+                maxWidth:    30,   // maximum width of sub-menus in em units 
+                extraWidth:  1     // extra width can ensure lines don't sometimes turn over 
+                                   // due to slight rounding differences and font-family 
+            }).superfish();  // call supersubs first, then superfish, so that subs are 
+                             // not display:none when measuring. Call before initialising 
+                             // containing tabs for same reason. 
+        }); 
+     
+    </script>
+    
   </head>
   <body>
     <div class="title">
@@ -37,271 +73,361 @@
         </a>
       </div>
     </div>
+  
+    <div class="main">
+    <div class="main">
+    <div class="page-header">
+    <img src="/ipojo/site/header.png" class="header">
+    <a href="http://ipojo.org"><img src="/ipojo/site/ipojo.png" width="225" class="header-logo"></a>
+    <ul class="sf-menu sf-js-enabled sf-shadow" id="ipojo-menu">
+    <li class="current">
+    <!-- Menu Overview -->
+    <a href="#" class="sf-with-ul">Overview<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+    <ul>
+        <li>
+        <a href="">Home</a>                          
+        </li>
+        <li>
+        <a href="">Why choose iPOJO</a>
+        </li>
+        <li>
+        <a href="">Success stories</a>
+        </li>
+        <li>
+        <a href="">Features</a>
+        </li>
+    </ul>
+    </li>   
     
-    <div class="menu"> 
-      <p><a href="/news.html">news</a>  <br />
-<a href="/license.html">license</a>  <br />
-<a href="/downloads.cgi">downloads</a>  <br />
-<a href="/documentation.html">documentation</a>  <br />
-<a href="/mailinglists.html">mailing lists</a>  <br />
-<a href="/documentation/community/contributing.html">contributing</a>  <br />
-<a href="/sitemap.html">site map</a>  <br />
-<a href="http://www.apache.org/">asf</a>  <br />
-<a href="http://www.apache.org/security/">security</a>  <br />
-<a href="http://www.apache.org/foundation/sponsorship.html">sponsorship</a>  <br />
-<a href="http://www.apache.org/foundation/thanks.html">sponsors</a>  <br />
-</p>
-<iframe
-    src="http://www.apache.org/ads/button.html"
-    style="border-width:0; float: left"
-    frameborder="0"
-    scrolling="no"
-    width="135"
-    height="135">
-</iframe>
-    </div>
+    <li class="">           
+    <!-- Menu download -->
+    <li>
+    <a href="/downloads.cgi">Download </a>
+    </li>
     
-    <div class="main">
-      <div class="breadcrump" style="font-size: 80%;">
-        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/subprojects.html">Apache Felix Subproject Documentation</a>&nbsp;&raquo&nbsp;<a href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a>&nbsp;&raquo&nbsp;<a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted.html">apache-felix-ipojo-gettingstarted</a>
-      </div>
-
+    <li class="">                   
+    <!-- Menu Documentation -->
+    <a href="#" class="sf-with-ul">Documentation<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+    <ul>
+        <!-- sub-menu : getting started -->
+        <li class="">
+        <a href="#" class="sf-with-ul">Getting Started<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+        <ul>
+         <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li>
+         <li><a href="">Using Annotations</a></li>
+         <li><a href="">Maven tutorial</a></li>
+         <li><a href="">Advanced tutorial</a></li>
+         <li><a href="">Using Distributed OSGi</a></li>
+         <li><a href="">Application Composition</a></li>
+        </ul>
+        </li> <!-- end of getting started -->
+        <!-- sub menu : Describing Components -->
+         <li class="">
+            <a href="" class="sf-with-ul">Describing components<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+            <ul>
+            <li><a href="">Requiring a service</a></li>
+            <li><a href="">Providing a service</a></li>
+            <li><a href="">Lifecycle management</a></li>
+            <li><a href="">Configuration</a></li>
+            <li><a href="">Introspection</a></li>
+            <li><a href="">Impacting the lifecycle</a></li>
+            <li><a href="">Asynchronous communication</a></li>
+            <li><a href="">JMX management</a></li>
+            <li><a href="">Extender pattern</a></li>
+            <li><a href="">Whiteboard pattern</a></li>
+            <li><a href="">Temporal dependencies</a></li>
+            </ul>
+         </li> <!-- End of describing components -->
+        <!-- sub-menu : User Guide -->
+        <li class="">
+        <a href="" class="sf-with-ul">User Guide<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+            <ul>
+            <li><a href="">iPOJO and config admin</a></li>
+            <li><a href="">Factories and Instances</a></li>
+            <li><a href="">XML Schemas</a></li>
+            <li><a href="">API</a></li>
+            <li><a href="">Testing components</a></li>
+            <li><a href="">Eclipse Integration</a></li>
+            <li><a href="">FAQ</a></li>
+            <li><a href="">Reference Card</a></li>
+            </ul>
+        </li> <!-- end of user guide -->
+        <!-- sub-menu : Dev Guide -->
+        <li> 
+        <a href="#" class="sf-with-ul">Advanced Topics<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+           <ul>
+            <li><a href="http://felix.apache.org/ipojo/api/1.6.0">Javadoc</a></li>
+            <li><a href="">Handler development</a></li>
+            <li><a href="">Manipulation Metadata </a></li>
+            <li><a href="">Dive into the iPOJO Manipulation depths</a></li>
+           </ul>
+        </li> <!-- End of Dev guide -->
+    </ul> 
+    </li> <!-- End of doc -->
+    <!-- Menu 4 : Tools -->
+    <li class="">
+    <a href="#" class="sf-with-ul">Tools<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+    <ul>
+       <li><a href="">Ant Task</a></li>
+       <li><a href="">Eclipse Plugin</a></li>
+       <li><a href="">Maven Plugin</a></li>
+       <li><a href="">`arch` shell command</a></li>
+       <li><a href="">Online Manipulator</a></li>
+       <li><a href="">Webconsole plugin</a></li>
+       <li><a href="">Junit4OSGi</a></li>
+    </ul>   
+    </li><!-- End of tools -->  
+    <!-- Menu 5 : Support -->
+    <li>
+    <a href="">Support </a>
+    </li>
+    <!-- End of the menu 5 -->          
+    <!-- Menu 6 : Misc -->
+    <li class="">
+    <a href="#" class="sf-with-ul">Misc<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
+    <ul>
+       <li><a href="">Supported JVMs</a></li>
+       <li><a href="">Supported OSGi Implementations</a></li>
+       <li><a href="http://ipojo-dark-side.blogspot.com">iPOJO's Dark Side Blog</a></li>
+       <li><a href="">Article & Presentations</a></li>
+       <li><a href="http://www.apache.org/">ASF</a></li>
+       <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+       <li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
+    </ul>
+    </li><!-- End of misc -->
+    </ul> <!-- End of the menu -->
+    </div> <!-- Page header -->
+  
+      <!-- 
       
       <div class="tip">
            This page is a translated version of <a href="/site/ipojo-composition-tutorial.html" target="felix_cwiki">/site/ipojo-composition-tutorial.html</a>. In case of
            doubt you might want to refer to the old page.
       </div>
       
+      -->
       
       <h1>iPOJO Composition Tutorial</h1>
-      <p>{include:apache-felix-ipojo-header}</p>
-<div class="content">
-
-# iPOJO Composition Tutorial
-*This page describes how works the composition mechanisms provided by iPOJO and how to use it. this feature allows you to design applications that will natively support the dynamism and the evolution.*
-
-{div:class=toc}
+      
+      <div class="content">
+        <h1 id="ipojo-composition-tutorial">iPOJO Composition Tutorial</h1>
+<p><em>This page describes how works the composition mechanisms provided by iPOJO and how to use it. this feature allows you to design applications that will natively support the dynamism and the evolution.</em></p>
+<p>{div:class=toc}
 [TOC]
-{div}
-
-## Why providing a composition layer?
-iPOJO aims to simplify the creation of OSGi (dynamic) applications. Creating such as applications is basically a two steps process:
-* Developing services and components
-* Assembling them together to create the application
-
-To tackle the first step, iPOJO provides an easy-to-use development model. But, this does not help to design the application. To conduct the second step, iPOJO provides a composition language allowing to:
-* Assemble components and services together
-* Assert service isolation inside a composition
-* Hide/Abstract implementations 
-
-### What about privacy?
-Service or component composition has a stringent requirement. How to isolate components and services of an application to avoid side effects as an unexpected access to a used service ...iPOJO composites just provide an isolation mechanism. Services provided inside a composite ARE NOT published globally (inside the OSGi service registry). So, only the component instances living in the same composite can access to those services.
-However, it is also possible to import a service from the parent/global service registry, as well as to export a service to the parent (i.e. superior) composite.
-
-## The different types of composition in the OSGi world
-Basically there is two types of composition in OSGi:
-* The intra-bundle composition
-* The service-based composition
-
-### Intra-bundle composition
-The intra-bundle composition is the policy followed by Spring-DM. Each bundle contains components. These components can require and provide services from the global (OSGi) registry. Moreover, these components can collaborate together inside the bundle without providing/requiring services. So the isolation scope of intra-bundle composition is the *bundle*. This type of composition allows providing coarse-grain services provided by the collaboration of several components. However, it is not possible to update one of those components, as the update unity is the bundle.
-
-### Service-based composition
-There are two types of service composition. The behavioral service composition is like [BPEL](http://www.ibm.com/developerworks/library/specification/ws-bpel/) for the web services. An orchestrator supervises the execution and the collaboration of services like:
+{div}</p>
+<h2 id="why-providing-a-composition-layer">Why providing a composition layer?</h2>
+<p>iPOJO aims to simplify the creation of OSGi (dynamic) applications. Creating such as applications is basically a two steps process:
+<em> Developing services and components
+</em> Assembling them together to create the application</p>
+<p>To tackle the first step, iPOJO provides an easy-to-use development model. But, this does not help to design the application. To conduct the second step, iPOJO provides a composition language allowing to:
+<em> Assemble components and services together
+</em> Assert service isolation inside a composition
+* Hide/Abstract implementations </p>
+<h3 id="what-about-privacy">What about privacy?</h3>
+<p>Service or component composition has a stringent requirement. How to isolate components and services of an application to avoid side effects as an unexpected access to a used service ...iPOJO composites just provide an isolation mechanism. Services provided inside a composite ARE NOT published globally (inside the OSGi service registry). So, only the component instances living in the same composite can access to those services.
+However, it is also possible to import a service from the parent/global service registry, as well as to export a service to the parent (i.e. superior) composite.</p>
+<h2 id="the-different-types-of-composition-in-the-osgi-world">The different types of composition in the OSGi world</h2>
+<p>Basically there is two types of composition in OSGi:
+<em> The intra-bundle composition
+</em> The service-based composition</p>
+<h3 id="intra-bundle-composition">Intra-bundle composition</h3>
+<p>The intra-bundle composition is the policy followed by Spring-DM. Each bundle contains components. These components can require and provide services from the global (OSGi) registry. Moreover, these components can collaborate together inside the bundle without providing/requiring services. So the isolation scope of intra-bundle composition is the <em>bundle</em>. This type of composition allows providing coarse-grain services provided by the collaboration of several components. However, it is not possible to update one of those components, as the update unity is the bundle.</p>
+<h3 id="service-based-composition">Service-based composition</h3>
+<p>There are two types of service composition. The behavioral service composition is like <a href="http://www.ibm.com/developerworks/library/specification/ws-bpel/">BPEL</a> for the web services. An orchestrator supervises the execution and the collaboration of services like:
 1. Call service A
 1. Call service B 
-1. ...
-
-The second type of service composition is the structural service composition. This aims to provide a kind of Architecture Description Language for service-based applications. iPOJO follows this trend. This way as several advantages:
-* Avoids coupling a composition to specific implementation, and so it supports the dynamic substitution
-* Allows the evolution of used services and components at runtime
-This is also the way followed by [SCA](http://www.ibm.com/developerworks/library/specification/ws-sca/). However, SCA does not specify how the dynamism should be handled.
-
-## The iPOJO composition theory for the dummies
-The distinction between component types and instances
-When you declare a `<component>` (or a `<composite>`) in your metadata, you're declaring a component type. Then you declare instances from these component types. This mechanism is critic for the iPOJO composition. Indeed, inside a composite, you're able to create instances from any (public) component types (Refer to the [Factory](/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html) web page for further details). 
+1. ...</p>
+<p>The second type of service composition is the structural service composition. This aims to provide a kind of Architecture Description Language for service-based applications. iPOJO follows this trend. This way as several advantages:
+<em> Avoids coupling a composition to specific implementation, and so it supports the dynamic substitution
+</em> Allows the evolution of used services and components at runtime
+This is also the way followed by <a href="http://www.ibm.com/developerworks/library/specification/ws-sca/">SCA</a>. However, SCA does not specify how the dynamism should be handled.</p>
+<h2 id="the-ipojo-composition-theory-for-the-dummies">The iPOJO composition theory for the dummies</h2>
+<p>The distinction between component types and instances
+When you declare a <code>&lt;component&gt;</code> (or a <code>&lt;composite&gt;</code>) in your metadata, you're declaring a component type. Then you declare instances from these component types. This mechanism is critic for the iPOJO composition. Indeed, inside a composite, you're able to create instances from any (public) component types (Refer to the <a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factory</a> web page for further details). 
 On the top of this mechanism, we can define the concept of service implementation. A service implementation is just a component type where the instances provide a service. For example, if the instance from a component type provides the service S, the component type is a service implementation of S, and so can be used to create a provider of S. 
 The service context concept
-The service context is the concept allowing service isolation. OSGi bundle context allows accessing both to bundle-based functionality (like `loadClass`) and to the service registry. However, OSGi defines only one service registry, accessible by any bundles. iPOJO splits these two interaction types. Instances receive an iPOJO Bundle Context delegating bundle-related methods to the "regular" bundle context, and service-related methods to a service context. This service context can access to the OSGi service registry or to a new one. Each composition instances have a service registry. Instances creates inside the composition used this service registry through received the iPOJO Bundle Context. 
-
-## Downloads
-Download the [archive](http://people.apache.org/~clement/ipojo/tutorials/composite/composite-tutorial.zip). This archive contains:
-* The different applications and component types implemented in this tutorial
-* A preconfigured version of Felix
-* Deployment scripts
-
-Launch `ant` from the base directory of the unzipped archive to create every bundles. Then, you can test the different examples by copying and pasting commands from the `script.txt` file (in the felix folder) in the Felix shell.
-
-## Let's start with a first composition
-In the [iPOJO in 10 minutes](/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html) tutorial, we created an application checking a sentence against dictionaries. We'll reuse this simple application in this tutorial. 
+The service context is the concept allowing service isolation. OSGi bundle context allows accessing both to bundle-based functionality (like <code>loadClass</code>) and to the service registry. However, OSGi defines only one service registry, accessible by any bundles. iPOJO splits these two interaction types. Instances receive an iPOJO Bundle Context delegating bundle-related methods to the "regular" bundle context, and service-related methods to a service context. This service context can access to the OSGi service registry or to a new one. Each composition instances have a service registry. Instances creates inside the composition used this service registry through received the iPOJO Bundle Context. </p>
+<h2 id="downloads">Downloads</h2>
+<p>Download the <a href="http://people.apache.org/~clement/ipojo/tutorials/composite/composite-tutorial.zip">archive</a>. This archive contains:
+<em> The different applications and component types implemented in this tutorial
+</em> A preconfigured version of Felix
+* Deployment scripts</p>
+<p>Launch <code>ant</code> from the base directory of the unzipped archive to create every bundles. Then, you can test the different examples by copying and pasting commands from the <code>script.txt</code> file (in the felix folder) in the Felix shell.</p>
+<h2 id="lets-start-with-a-first-composition">Let's start with a first composition</h2>
+<p>In the <a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a> tutorial, we created an application checking a sentence against dictionaries. We'll reuse this simple application in this tutorial. 
 So first, we need to implements several component types:
-* The dictionary service implementation, containing words
-* The Check service implementation, providing methods to check words against dictionaries
-* And the client GUI, using a Check Service to indicate misspelled words.
-
-We will reuse the same implementation than in the previous tutorial. The current application is designed as follow:
+<em> The dictionary service implementation, containing words
+</em> The Check service implementation, providing methods to check words against dictionaries
+* And the client GUI, using a Check Service to indicate misspelled words.</p>
+<p>We will reuse the same implementation than in the previous tutorial. The current application is designed as follow:
 !app1.png!
 However, imagine that you want to isolate services provided and required by your application. For example, you want to isolate a stateful service or a critical (private) resource. 
 So, let's imagine a second version of our spellchecker application. In this application, the dictionary service, and the checker service are isolated inside a composite. So, those services will be accessible only from instances living in the composite. The GUI will also be instantiated inside the composite. The composition will be something like:
 !app2.png!
-The descriptor of this application is:
+The descriptor of this application is:</p>
+<div class="codehilite"><pre><span class="nt">&lt;ipojo&gt;</span>
 
-    <ipojo>
+<span class="c">&lt;!--  Declares a composition --&gt;</span>
+<span class="nt">&lt;composite</span> <span class="na">name=</span><span class="s">&quot;composition1&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!--  Instantiates an instance of the English dictionary --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.english.EnglishDictionary&quot;</span><span class="nt">/&gt;</span>
 
-    <!--  Declares a composition -->
-    <composite name="composition1">
-        <!--  Instantiates an instance of the English dictionary -->
-        <instance component="spell.english.EnglishDictionary"/>
+    <span class="c">&lt;!--  Instantiates an instance of the Checker --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.checker.SpellCheck&quot;</span><span class="nt">/&gt;</span>
 
-        <!--  Instantiates an instance of the Checker -->
-        <instance component="spell.checker.SpellCheck"/>
+    <span class="c">&lt;!--  Instantiates an instance of the GUI --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.gui.SpellCheckerGui&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/composite&gt;</span>
 
-        <!--  Instantiates an instance of the GUI -->
-        <instance component="spell.gui.SpellCheckerGui"/>
-    </composite>
+<span class="c">&lt;!--  Instantiates an instance of our composition --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;composition1&quot;</span><span class="nt">/&gt;</span>
 
-    <!--  Instantiates an instance of our composition -->
-    <instance component="composition1"/>
+<span class="nt">&lt;/ipojo&gt;</span>
+</pre></div>
 
-    </ipojo>
 
-First, a composite type is declared inside an iPOJO descriptor. A composite contain always a `name` attribute, which is the component type name. Inside the `<composite></composite>`, three instances are declared: the three instances used by our application. Remark that these instances are declared as 'regular' instances. The `component` attribute indicates the component type to use. Instances can be configured as regular iPOJO instances. Finally, an instance of our type is also declared. 
+<p>First, a composite type is declared inside an iPOJO descriptor. A composite contain always a <code>name</code> attribute, which is the component type name. Inside the <code>&lt;composite&gt;&lt;/composite&gt;</code>, three instances are declared: the three instances used by our application. Remark that these instances are declared as 'regular' instances. The <code>component</code> attribute indicates the component type to use. Instances can be configured as regular iPOJO instances. Finally, an instance of our type is also declared. 
 To execute our composition, go in the felix directory and launch the following command:
 {code:none}
-java -jar bin/felix.jar
+java -jar bin/felix.jar</p>
+<div class="codehilite"><pre><span class="n">This</span> <span class="n">version</span> <span class="n">of</span> <span class="n">Felix</span> <span class="n">starts</span> <span class="n">with</span> <span class="n">the</span> <span class="n">iPOJO</span> <span class="n">framework</span><span class="p">,</span> <span class="n">the</span> <span class="n">iPOJO</span> <span class="n">Arch</span> <span class="n">command</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">composite</span> <span class="n">support</span><span class="o">.</span> <span class="n">So</span><span class="p">,</span> <span class="n">we</span> <span class="n">just</span> <span class="n">need</span> <span class="n">to</span> <span class="n">install</span> <span class="k">our</span> <span class="n">component</span> <span class="n">types</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">composition</span><span class="o">.</span>
+<span class="n">In</span> <span class="n">the</span> <span class="n">Felix</span> <span class="n">prompt</span><span class="p">,</span> <span class="n">launch</span> <span class="n">the</span> <span class="n">following</span> <span class="n">commands:</span>
+<span class="p">{</span><span class="n">code:none</span><span class="p">}</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.services/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.english/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker.gui/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">jar</span>
+</pre></div>
 
-    This version of Felix starts with the iPOJO framework, the iPOJO Arch command and the composite support. So, we just need to install our component types and the composition.
-    In the Felix prompt, launch the following commands:
-    {code:none}
-    start file:../spell.services/output/spell.services.jar
-    start file:../spell.english/output/spell.english.jar
-    start file:../spell.checker/output/spell.checker.jar
-    start file:../spell.checker.gui/output/spell.checker.gui.jar
 
-Those commands deploy the component types. Remark that no 'functional'  (i.e. neither Check service, nor Dictionary service) services are provided. Deployed bundles provide only iPOJO Factory services:
+<p>Those commands deploy the component types. Remark that no 'functional'  (i.e. neither Check service, nor Dictionary service) services are provided. Deployed bundles provide only iPOJO Factory services:
 {code:none}
--> inspect s c
-System Bundle (0) provides:
----------------------------
-org.osgi.service.startlevel.StartLevel
+-&gt; inspect s c
+System Bundle (0) provides:</p>
+<hr />
+<p>org.osgi.service.startlevel.StartLevel
 org.osgi.service.packageadmin.PackageAdmin
-Apache Felix Shell Service (1) provides:
-----------------------------------------
-...
-Apache Felix Bundle Repository (3) provides:
---------------------------------------------
-org.osgi.service.obr.RepositoryAdmin
-iPOJO (4) provides:
--------------------
-...
-iPOJO Composite (6) provides:
------------------------------
-...
-spell.english (8) provides:
----------------------------
-org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-spell.checker (9) provides:
----------------------------
-org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-spell.checker.gui (10) provides:
--------------------------------
-org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-
-    Now, when can deploy our composition:
-
-start file:../example1/output/composition1.jar
-
-    Once deployed and started, the fancy GUI appears:
-    !ss.png!
-    Now, you can check that the functional services are not unavailable outside the composite:
-    {code:none}
-    -> inspect s c
-    System Bundle (0) provides:
-    ---------------------------
-    org.osgi.service.startlevel.StartLevel
-    org.osgi.service.packageadmin.PackageAdmin
-    Apache Felix Shell Service (1) provides:
-    ----------------------------------------
-    ...
-    Apache Felix Bundle Repository (3) provides:
-    --------------------------------------------
-    org.osgi.service.obr.RepositoryAdmin
-    iPOJO (4) provides:
-    -------------------
-    ...
-    iPOJO Composite (6) provides:
-    -----------------------------
-    ...
-    spell.english (8) provides:
-    ---------------------------
-    org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-    spell.checker (9) provides:
-    ---------------------------
-    org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-    spell.checker.gui (10) provides:
-    -------------------------------
-    org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-    Bundle 11 provides:
-    -------------------
-    org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
-
-Of course, if you stop a bundle providing a required service type, the application is stopped:
-
-    -> stop 8
-    -> start 8
-
-Then, the application also supports component type update. However the component type name must not change. We will see later how we can avoid this issue by abstracting implementations.
-
-## Importing a service inside a composite
-Let's imagine a second version of the checker service implementation (spell.checker-v2). This implementation removes the trace when wrong words are detected. Indeed, this implementation uses a log service to store such kind of errors. 
-If we use this implementation, we need to make a log service available inside the composite. Else, the checker will not be valid. To achieve this, use the following composite:
-
-    <ipojo>
-
-    <!--  Declares a composition -->
-    <composite name="composition2">
-        <!--  Instantiates an instance of the English dictionary -->
-        <instance component="spell.english.EnglishDictionary"/>
-
-        <!--  Instantiates an instance of the Checker -->
-        <instance component="spell.checker.SpellCheck"/>
-
-        <!--  Instantiates an instance of the GUI -->
-        <instance component="spell.gui.SpellCheckerGui"/>
-
-        <!-- Imports the log service -->
-        <subservice action="import" 
-                 specification="org.osgi.service.log.LogService"/>
-    </composite>
+Apache Felix Shell Service (1) provides:</p>
+<hr />
+<p>...
+Apache Felix Bundle Repository (3) provides:</p>
+<hr />
+<p>org.osgi.service.obr.RepositoryAdmin
+iPOJO (4) provides:</p>
+<hr />
+<p>...
+iPOJO Composite (6) provides:</p>
+<hr />
+<p>...
+spell.english (8) provides:</p>
+<hr />
+<p>org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
+spell.checker (9) provides:</p>
+<hr />
+<p>org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory
+spell.checker.gui (10) provides:</p>
+<hr />
+<p>org.apache.felix.ipojo.Factory, org.osgi.service.cm.ManagedServiceFactory</p>
+<div class="codehilite"><pre><span class="n">Now</span><span class="p">,</span> <span class="n">when</span> <span class="n">can</span> <span class="n">deploy</span> <span class="k">our</span> <span class="n">composition:</span>
+</pre></div>
+
+
+<p>start file:../example1/output/composition1.jar</p>
+<div class="codehilite"><pre><span class="n">Once</span> <span class="n">deployed</span> <span class="ow">and</span> <span class="n">started</span><span class="p">,</span> <span class="n">the</span> <span class="n">fancy</span> <span class="n">GUI</span> <span class="n">appears:</span>
+<span class="o">!</span><span class="n">ss</span><span class="o">.</span><span class="n">png</span><span class="o">!</span>
+<span class="n">Now</span><span class="p">,</span> <span class="n">you</span> <span class="n">can</span> <span class="n">check</span> <span class="n">that</span> <span class="n">the</span> <span class="n">functional</span> <span class="n">services</span> <span class="n">are</span> <span class="ow">not</span> <span class="n">unavailable</span> <span class="n">outside</span> <span class="n">the</span> <span class="n">composite:</span>
+<span class="p">{</span><span class="n">code:none</span><span class="p">}</span>
+<span class="o">-&gt;</span> <span class="n">inspect</span> <span class="n">s</span> <span class="n">c</span>
+<span class="n">System</span> <span class="n">Bundle</span> <span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">---------------------------</span>
+<span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">startlevel</span><span class="o">.</span><span class="n">StartLevel</span>
+<span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">packageadmin</span><span class="o">.</span><span class="n">PackageAdmin</span>
+<span class="n">Apache</span> <span class="n">Felix</span> <span class="n">Shell</span> <span class="n">Service</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">----------------------------------------</span>
+<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><span class="mi">3</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">--------------------------------------------</span>
+<span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">obr</span><span class="o">.</span><span class="n">RepositoryAdmin</span>
+<span class="n">iPOJO</span> <span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">-------------------</span>
+<span class="o">...</span>
+<span class="n">iPOJO</span> <span class="n">Composite</span> <span class="p">(</span><span class="mi">6</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">-----------------------------</span>
+<span class="o">...</span>
+<span class="n">spell</span><span class="o">.</span><span class="n">english</span> <span class="p">(</span><span class="mi">8</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">---------------------------</span>
+<span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+<span class="n">spell</span><span class="o">.</span><span class="n">checker</span> <span class="p">(</span><span class="mi">9</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">---------------------------</span>
+<span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+<span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">gui</span> <span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">-------------------------------</span>
+<span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+<span class="n">Bundle</span> <span class="mi">11</span> <span class="n">provides:</span>
+<span class="o">-------------------</span>
+<span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+</pre></div>
+
+
+<p>Of course, if you stop a bundle providing a required service type, the application is stopped:</p>
+<div class="codehilite"><pre><span class="o">-&gt;</span> <span class="n">stop</span> <span class="mi">8</span>
+<span class="o">-&gt;</span> <span class="n">start</span> <span class="mi">8</span>
+</pre></div>
+
+
+<p>Then, the application also supports component type update. However the component type name must not change. We will see later how we can avoid this issue by abstracting implementations.</p>
+<h2 id="importing-a-service-inside-a-composite">Importing a service inside a composite</h2>
+<p>Let's imagine a second version of the checker service implementation (spell.checker-v2). This implementation removes the trace when wrong words are detected. Indeed, this implementation uses a log service to store such kind of errors. 
+If we use this implementation, we need to make a log service available inside the composite. Else, the checker will not be valid. To achieve this, use the following composite:</p>
+<div class="codehilite"><pre><span class="nt">&lt;ipojo&gt;</span>
+
+<span class="c">&lt;!--  Declares a composition --&gt;</span>
+<span class="nt">&lt;composite</span> <span class="na">name=</span><span class="s">&quot;composition2&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!--  Instantiates an instance of the English dictionary --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.english.EnglishDictionary&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!--  Instantiates an instance of the Checker --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.checker.SpellCheck&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!--  Instantiates an instance of the GUI --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.gui.SpellCheckerGui&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- Imports the log service --&gt;</span>
+    <span class="nt">&lt;subservice</span> <span class="na">action=</span><span class="s">&quot;import&quot;</span> 
+             <span class="na">specification=</span><span class="s">&quot;org.osgi.service.log.LogService&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/composite&gt;</span>
 
-    <!--  Instantiates an instance of our composition -->
-    <instance component="composition2"/>
+<span class="c">&lt;!--  Instantiates an instance of our composition --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;composition2&quot;</span><span class="nt">/&gt;</span>
 
-    </ipojo>
+<span class="nt">&lt;/ipojo&gt;</span>
+</pre></div>
 
-This composite just adds a `subservice` nested element. This subservice allows importing a service inside the composite. The `action` attribute specifies that we want to import the service from the parent scope (i.e. superior).   The `specification` attribute indicates the required service. 
+
+<p>This composite just adds a <code>subservice</code> nested element. This subservice allows importing a service inside the composite. The <code>action</code> attribute specifies that we want to import the service from the parent scope (i.e. superior).   The <code>specification</code> attribute indicates the required service. 
 !app3.png!
-Now, relaunch Felix and enter another profile name (`composition2` for example). Once started, executes the following commands:
+Now, relaunch Felix and enter another profile name (<code>composition2</code> for example). Once started, executes the following commands:</p>
+<div class="codehilite"><pre><span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.services/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.english/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker-v2/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">-</span><span class="n">v2</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker.gui/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/example2/o</span><span class="n">utput</span><span class="o">/</span><span class="n">composition2</span><span class="o">.</span><span class="n">jar</span>
+</pre></div>
+
+
+<p>Those commands deploy required component type (note that we deploy spell.checker-v2) and an implementation of the OSGi Log Service.  When you execute the last command, the fancy interface re-appears. 
+Try to enter a wrong word (as <code>composite</code>), and click on the check button. The trace does no more appear... the message is logged inside the log service. 
+Of course, such composite support dynamism. Try the following scenario</p>
+<div class="codehilite"><pre><span class="n">stop</span> <span class="mi">9</span>
+<span class="n">start</span> <span class="mi">9</span>
+<span class="n">stop</span> <span class="mi">10</span>
+<span class="n">start</span> <span class="mi">10</span>
+</pre></div>
 
-    start file:../spell.services/output/spell.services.jar
-    start file:../spell.english/output/spell.english.jar
-    start file:../spell.checker-v2/output/spell.checker-v2.jar
-    start file:../spell.checker.gui/output/spell.checker.gui.jar
-    start file:../example2/output/composition2.jar
-
-Those commands deploy required component type (note that we deploy spell.checker-v2) and an implementation of the OSGi Log Service.  When you execute the last command, the fancy interface re-appears. 
-Try to enter a wrong word (as `composite`), and click on the check button. The trace does no more appear... the message is logged inside the log service. 
-Of course, such composite support dynamism. Try the following scenario
-
-    stop 9
-    start 9
-    stop 10
-    start 10
 
-When the log service is stopped, the GUI disappears. In fact, the service can no more be imported, and so, the composition becomes invalid. When you stop a bundle containing a used component type, the same behavior occurs.
+<p>When the log service is stopped, the GUI disappears. In fact, the service can no more be imported, and so, the composition becomes invalid. When you stop a bundle containing a used component type, the same behavior occurs.
 Like in the previous example, you can check that only the log service is globally available. Other services are isolated inside the composite.
-In this case the parent scope is the OSGi service registry, but composite can also contain other composite. In such context, the import tracks services from the superior composite. An example of hierarchical composition is described later in this tutorial.
-
+In this case the parent scope is the OSGi service registry, but composite can also contain other composite. In such context, the import tracks services from the superior composite. An example of hierarchical composition is described later in this tutorial.</p>
 <div class="box">
     <div class="box-blue-header">
     <div class="box-blue-title">
@@ -314,218 +440,226 @@ To tackle implementation service depende
     <div class="box-blue-footer"></div>
 </div>
 
-## Abstracting implementation... Composing services
-We saw in the first composition that we depend on specific component types. This can be avoided by specifying the composition in term of services instead of component types. So, every available service implementation can be used. Moreover, if the used one disappears, another one can be immediately used to replace the missing service. Let's illustrate this.
-In the first composition, we create an instance of the English dictionary service implementation. We can remove this coupling to this specific implementation. To do this, we will target any implementation of the dictionary service regardless the language. 
+<h2 id="abstracting-implementation-composing-services">Abstracting implementation... Composing services</h2>
+<p>We saw in the first composition that we depend on specific component types. This can be avoided by specifying the composition in term of services instead of component types. So, every available service implementation can be used. Moreover, if the used one disappears, another one can be immediately used to replace the missing service. Let's illustrate this.
+In the first composition, we create an instance of the English dictionary service implementation. We can remove this coupling to this specific implementation. To do this, we will target any implementation of the dictionary service regardless the language. </p>
+<div class="codehilite"><pre><span class="nt">&lt;ipojo&gt;</span>
 
-    <ipojo>
+<span class="c">&lt;!--  Declares a composition --&gt;</span>
+<span class="nt">&lt;composite</span> <span class="na">name=</span><span class="s">&quot;composition3&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!--  Instantiates an instance of the English dictionary --&gt;</span>
+    <span class="nt">&lt;subservice</span> <span class="na">action=</span><span class="s">&quot;instantiate&quot;</span> 
+             <span class="na">specification=</span><span class="s">&quot;spell.services.DictionaryService&quot;</span><span class="nt">/&gt;</span>
 
-    <!--  Declares a composition -->
-    <composite name="composition3">
-        <!--  Instantiates an instance of the English dictionary -->
-        <subservice action="instantiate" 
-                 specification="spell.services.DictionaryService"/>
+    <span class="c">&lt;!--  Instantiates an instance of the Checker --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.checker.SpellCheck&quot;</span><span class="nt">/&gt;</span>
 
-        <!--  Instantiates an instance of the Checker -->
-        <instance component="spell.checker.SpellCheck"/>
+    <span class="c">&lt;!--  Instantiates an instance of the GUI --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.gui.SpellCheckerGui&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/composite&gt;</span>
 
-        <!--  Instantiates an instance of the GUI -->
-        <instance component="spell.gui.SpellCheckerGui"/>
-    </composite>
+<span class="c">&lt;!--  Instantiates an instance of our composition --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;composition3&quot;</span><span class="nt">/&gt;</span>
 
-    <!--  Instantiates an instance of our composition -->
-    <instance component="composition3"/>
+<span class="nt">&lt;/ipojo&gt;</span>
+</pre></div>
 
-    </ipojo>
 
-The previous composition instantiates a dictionary service.  This means that the composite looks for an implementation of the Dictionary service and creates an instance of this implementation (i.e. component type) inside the composition. 
+<p>The previous composition instantiates a dictionary service.  This means that the composite looks for an implementation of the Dictionary service and creates an instance of this implementation (i.e. component type) inside the composition. 
 If several implementations are available, the composite chooses one, and switches to another one if the used implementation becomes unavailable.
 !app4.png!
-To execute this composition, launch Felix and execute the following command:
-
-    start file:../spell.services/output/spell.services.jar
-    start file:../spell.english/output/spell.english.jar
-    start file:../spell.checker/output/spell.checker.jar
-    start file:../spell.checker.gui/output/spell.checker.gui.jar
-    start file:../example3/output/composition3.jar
+To execute this composition, launch Felix and execute the following command:</p>
+<div class="codehilite"><pre><span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.services/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.english/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker.gui/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/example3/o</span><span class="n">utput</span><span class="o">/</span><span class="n">composition3</span><span class="o">.</span><span class="n">jar</span>
+</pre></div>
+
+
+<p>These commands deploy component types and the composition. Only one implementation of the dictionary service is available (English). You can check this by executing the <code>service 8</code> command.</p>
+<div class="codehilite"><pre><span class="o">-&gt;</span> <span class="n">inspect</span> <span class="n">s</span> <span class="n">c</span> <span class="mi">9</span>
+<span class="n">spell</span><span class="o">.</span><span class="n">english</span> <span class="p">(</span><span class="mi">9</span><span class="p">)</span> <span class="n">provides:</span>
+<span class="o">---------------------------</span>
+<span class="n">component</span><span class="o">.</span><span class="n">class</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">EnglishDictionary</span>
+<span class="n">component</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">unknown</span> <span class="n">value</span> <span class="n">type</span><span class="o">&gt;</span>
+<span class="n">component</span><span class="o">.</span><span class="n">properties</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">unknown</span> <span class="n">value</span> <span class="n">type</span><span class="o">&gt;</span>
+<span class="n">component</span><span class="o">.</span><span class="n">providedServiceSpecifications</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">DictionaryService</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">EnglishDictionary</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="mi">1</span>
+<span class="n">objectClass</span> <span class="o">=</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> 
+              <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+<span class="n">service</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">39</span>
+<span class="n">service</span><span class="o">.</span><span class="n">pid</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">EnglishDictionary</span>
+</pre></div>
+
+
+<p>Note the <code>component.providedServiceSpecifications</code> property indicating provided services. 
+Now deploy another implementation of the dictionary service, such as the French dictionary service ☺</p>
+<div class="codehilite"><pre><span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.french/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">french</span><span class="o">.</span><span class="n">jar</span>
+</pre></div>
+
+
+<p>Write  <code>welcome</code> in the GUI and then check. The word is correctly spelled. Then, stop the bundle providing the English dictionary.</p>
+<div class="codehilite"><pre><span class="n">stop</span> <span class="mi">9</span>
+</pre></div>
+
+
+<p>Write <code>welcome</code> in the GUI, and check. The word is misspelled! Try to write <code>bienvenue</code> and check. The word is correctly spelled. This means that the composite has substitutes the previous English dictionary by the French one. This one will be use until it disappears. If you stop the bundle containing this implementation, the composite becomes invalid.</p>
+<h2 id="publishing-services">Publishing services</h2>
+<p>A composition can also provide services. iPOJO composites support two methods to provide services :
+<em> The service export: re-export a service from the composite to the parent context
+</em> The service implementation: the composite computes a delegation scheme to delegate every method of the provided service on internal entities (services and instances)</p>
+<p>This section addresses the export. Exporting a service is the opposite of the service import. It tracks services from the composites to publish it in the parent (superior) context.
+So, let's imagine a fourth version of our application. In this application, the GUI is externalized and lives in the global context (i.e. OSGi). So, the composition exports the spell checker service. </p>
+<div class="codehilite"><pre><span class="nt">&lt;ipojo&gt;</span>
+
+<span class="c">&lt;!--  Declares a composition --&gt;</span>
+<span class="nt">&lt;composite</span> <span class="na">name=</span><span class="s">&quot;composition4&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!--  Instantiates an instance of the English dictionary --&gt;</span>
+    <span class="nt">&lt;subservice</span> <span class="na">action=</span><span class="s">&quot;instantiate&quot;</span> 
+          <span class="na">specification=</span><span class="s">&quot;spell.services.DictionaryService&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!--  Instantiates an instance of the Checker --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.checker.SpellCheck&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- Export the SpellChecker service --&gt;</span>
+    <span class="nt">&lt;provides</span> <span class="na">action=</span><span class="s">&quot;export&quot;</span> 
+            <span class="na">specification=</span><span class="s">&quot;spell.services.SpellChecker&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/composite&gt;</span>
+
+<span class="c">&lt;!--  Instantiates an instance of our composition --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;composition4&quot;</span><span class="nt">/&gt;</span>
 
-These commands deploy component types and the composition. Only one implementation of the dictionary service is available (English). You can check this by executing the `service 8` command.
+<span class="c">&lt;!--  Instantiates an instance of the GUI in the global context --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.gui.SpellCheckerGui&quot;</span><span class="nt">/&gt;</span>
 
-    -> inspect s c 9
-    spell.english (9) provides:
-    ---------------------------
-    component.class = spell.english.EnglishDictionary
-    component.description = <unknown value type>
-    component.properties = <unknown value type>
-    component.providedServiceSpecifications = spell.services.DictionaryService
-    factory.name = spell.english.EnglishDictionary
-    factory.state = 1
-    objectClass = org.apache.felix.ipojo.Factory, 
-                  org.osgi.service.cm.ManagedServiceFactory
-    service.id = 39
-    service.pid = spell.english.EnglishDictionary
+<span class="nt">&lt;/ipojo&gt;</span>
+</pre></div>
 
-Note the `component.providedServiceSpecifications` property indicating provided services. 
-Now deploy another implementation of the dictionary service, such as the French dictionary service ☺
 
-    start file:../spell.french/output/spell.french.jar
-
-Write  `welcome` in the GUI and then check. The word is correctly spelled. Then, stop the bundle providing the English dictionary.
-
-    stop 9
-
-Write `welcome` in the GUI, and check. The word is misspelled! Try to write `bienvenue` and check. The word is correctly spelled. This means that the composite has substitutes the previous English dictionary by the French one. This one will be use until it disappears. If you stop the bundle containing this implementation, the composite becomes invalid.
-
-## Publishing services
-A composition can also provide services. iPOJO composites support two methods to provide services :
-* The service export: re-export a service from the composite to the parent context
-* The service implementation: the composite computes a delegation scheme to delegate every method of the provided service on internal entities (services and instances)
-
-This section addresses the export. Exporting a service is the opposite of the service import. It tracks services from the composites to publish it in the parent (superior) context.
-So, let's imagine a fourth version of our application. In this application, the GUI is externalized and lives in the global context (i.e. OSGi). So, the composition exports the spell checker service. 
-
-    <ipojo>
-
-    <!--  Declares a composition -->
-    <composite name="composition4">
-        <!--  Instantiates an instance of the English dictionary -->
-        <subservice action="instantiate" 
-              specification="spell.services.DictionaryService"/>
-
-        <!--  Instantiates an instance of the Checker -->
-        <instance component="spell.checker.SpellCheck"/>
-
-        <!-- Export the SpellChecker service -->
-        <provides action="export" 
-                specification="spell.services.SpellChecker"/>
-    </composite>
-
-    <!--  Instantiates an instance of our composition -->
-    <instance component="composition4"/>
-
-    <!--  Instantiates an instance of the GUI in the global context -->
-    <instance component="spell.gui.SpellCheckerGui"/>
-
-    </ipojo>
-
-In the previous composition, the composite exports the spell checker service. Moreover, the GUI is also created but in the global context. At runtime, the result will be as following:
+<p>In the previous composition, the composite exports the spell checker service. Moreover, the GUI is also created but in the global context. At runtime, the result will be as following:
 !app5.png!
 The composite published the spell checker service in the OSGi service registry. The GUI tracks this service in the OSGi service registry too.
-To execute this composition, launch Felix and execute following the commands:
+To execute this composition, launch Felix and execute following the commands:</p>
+<div class="codehilite"><pre><span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.services/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.english/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker.gui/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/example4/o</span><span class="n">utput</span><span class="o">/</span><span class="n">composition4</span><span class="o">.</span><span class="n">jar</span>
+</pre></div>
+
+
+<p>You can check that the composition exports the service with the following command:</p>
+<div class="codehilite"><pre><span class="o">-&gt;</span> <span class="n">services</span> <span class="mi">12</span>
+<span class="n">Bundle</span> <span class="mi">12</span> <span class="n">provides:</span>
+<span class="o">-------------------</span>
+<span class="n">component</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">unknown</span> <span class="n">value</span> <span class="n">type</span><span class="o">&gt;</span>
+<span class="n">component</span><span class="o">.</span><span class="n">properties</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">unknown</span> <span class="n">value</span> <span class="n">type</span><span class="o">&gt;</span>
+<span class="n">component</span><span class="o">.</span><span class="n">providedServiceSpecifications</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">SpellChecker</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">composition4</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="mi">1</span>
+<span class="n">objectClass</span> <span class="o">=</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> 
+              <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+<span class="n">service</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">36</span>
+<span class="n">service</span><span class="o">.</span><span class="n">pid</span> <span class="o">=</span> <span class="n">composition4</span>
+<span class="o">----</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">composition4</span>
+<span class="n">instance</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">composition4</span><span class="o">-</span><span class="mi">0</span>
+<span class="n">objectClass</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">SpellChecker</span>
+<span class="n">service</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">37</span>
+</pre></div>
+
+
+<p>So, now you can play with dynamism. Stop the bundle containing the Check service implementation. The GUI disappears. Restart it. The GUI reappears. Now, stop the bundle containing the GUI implementation. The checker service stills available. Indeed, the GUI is no more inside the composition, and so stills valid despite the unavailability of the GUI:</p>
+<div class="codehilite"><pre><span class="o">-&gt;</span> <span class="n">stop</span> <span class="mi">9</span>
+<span class="o">-&gt;</span> <span class="n">start</span> <span class="mi">9</span>
+<span class="o">-&gt;</span> <span class="n">stop</span> <span class="mi">11</span>
+<span class="o">-&gt;</span> <span class="n">inspect</span> <span class="n">s</span> <span class="n">c</span> <span class="mi">12</span>
+<span class="n">Bundle</span> <span class="mi">12</span> <span class="n">provides:</span>
+<span class="o">-------------------</span>
+<span class="n">component</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">unknown</span> <span class="n">value</span> <span class="n">type</span><span class="o">&gt;</span>
+<span class="n">component</span><span class="o">.</span><span class="n">properties</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">unknown</span> <span class="n">value</span> <span class="n">type</span><span class="o">&gt;</span>
+<span class="n">component</span><span class="o">.</span><span class="n">providedServiceSpecifications</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">SpellChecker</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">composition4</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="mi">1</span>
+<span class="n">objectClass</span> <span class="o">=</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">felix</span><span class="o">.</span><span class="n">ipojo</span><span class="o">.</span><span class="n">Factory</span><span class="p">,</span> 
+              <span class="n">org</span><span class="o">.</span><span class="n">osgi</span><span class="o">.</span><span class="n">service</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">ManagedServiceFactory</span>
+<span class="n">service</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">36</span>
+<span class="n">service</span><span class="o">.</span><span class="n">pid</span> <span class="o">=</span> <span class="n">composition4</span>
+<span class="o">----</span>
+<span class="n">factory</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">composition4</span>
+<span class="n">instance</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">composition4</span><span class="o">-</span><span class="mi">0</span>
+<span class="n">objectClass</span> <span class="o">=</span> <span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">SpellChecker</span>
+<span class="n">service</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">41</span>
+<span class="o">-&gt;</span>
+</pre></div>
+
+
+<h2 id="hierarchical-composites">Hierarchical composites</h2>
+<p>A composition can also contain others compositions. Let's imagine a variation of the latest application. In this case, we define a composite containing the GUI and the previous composite.</p>
+<div class="codehilite"><pre><span class="nt">&lt;ipojo&gt;</span>
+
+<span class="c">&lt;!--  Declares the same composition than the latest one --&gt;</span>
+<span class="nt">&lt;composite</span> <span class="na">name=</span><span class="s">&quot;composition4&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!--  Instantiates an instance of the English dictionary --&gt;</span>
+    <span class="nt">&lt;subservice</span> <span class="na">action=</span><span class="s">&quot;instantiate&quot;</span> 
+            <span class="na">specification=</span><span class="s">&quot;spell.services.DictionaryService&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!--  Instantiates an instance of the Checker --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.checker.SpellCheck&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- Exports the SpellChecker service --&gt;</span>
+    <span class="nt">&lt;provides</span> <span class="na">action=</span><span class="s">&quot;export&quot;</span> 
+            <span class="na">specification=</span><span class="s">&quot;spell.services.SpellChecker&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/composite&gt;</span>
+
+<span class="c">&lt;!--  Declares another composition containing an instance of the previous </span>
+<span class="c">      composition and an instance of the GUI</span>
+<span class="c"> --&gt;</span>
+<span class="nt">&lt;composite</span> <span class="na">name=</span><span class="s">&quot;composition5&quot;</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!-- Instantiates the previous composition</span>
+<span class="c">         You can access to composition by following the</span>
+<span class="c">         same way as for other types</span>
+<span class="c">     --&gt;</span>
+    <span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;composition4&quot;</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!--  Instantiates an instance of the GUI in the composite --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;spell.gui.SpellCheckerGui&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/composite&gt;</span>
 
-    start file:../spell.services/output/spell.services.jar
-    start file:../spell.english/output/spell.english.jar
-    start file:../spell.checker/output/spell.checker.jar
-    start file:../spell.checker.gui/output/spell.checker.gui.jar
-    start file:../example4/output/composition4.jar
-
-You can check that the composition exports the service with the following command:
-
-    -> services 12
-    Bundle 12 provides:
-    -------------------
-    component.description = <unknown value type>
-    component.properties = <unknown value type>
-    component.providedServiceSpecifications = spell.services.SpellChecker
-    factory.name = composition4
-    factory.state = 1
-    objectClass = org.apache.felix.ipojo.Factory, 
-                  org.osgi.service.cm.ManagedServiceFactory
-    service.id = 36
-    service.pid = composition4
-    ----
-    factory.name = composition4
-    instance.name = composition4-0
-    objectClass = spell.services.SpellChecker
-    service.id = 37
-
-So, now you can play with dynamism. Stop the bundle containing the Check service implementation. The GUI disappears. Restart it. The GUI reappears. Now, stop the bundle containing the GUI implementation. The checker service stills available. Indeed, the GUI is no more inside the composition, and so stills valid despite the unavailability of the GUI:
-
-    -> stop 9
-    -> start 9
-    -> stop 11
-    -> inspect s c 12
-    Bundle 12 provides:
-    -------------------
-    component.description = <unknown value type>
-    component.properties = <unknown value type>
-    component.providedServiceSpecifications = spell.services.SpellChecker
-    factory.name = composition4
-    factory.state = 1
-    objectClass = org.apache.felix.ipojo.Factory, 
-                  org.osgi.service.cm.ManagedServiceFactory
-    service.id = 36
-    service.pid = composition4
-    ----
-    factory.name = composition4
-    instance.name = composition4-0
-    objectClass = spell.services.SpellChecker
-    service.id = 41
-    -> 
-
-## Hierarchical composites
-A composition can also contain others compositions. Let's imagine a variation of the latest application. In this case, we define a composite containing the GUI and the previous composite.
-
-    <ipojo>
-
-    <!--  Declares the same composition than the latest one -->
-    <composite name="composition4">
-        <!--  Instantiates an instance of the English dictionary -->
-        <subservice action="instantiate" 
-                specification="spell.services.DictionaryService"/>
-
-        <!--  Instantiates an instance of the Checker -->
-        <instance component="spell.checker.SpellCheck"/>
-
-        <!-- Exports the SpellChecker service -->
-        <provides action="export" 
-                specification="spell.services.SpellChecker"/>
-    </composite>
-
-    <!--  Declares another composition containing an instance of the previous 
-          composition and an instance of the GUI
-     -->
-    <composite name="composition5">
-        <!-- Instantiates the previous composition
-             You can access to composition by following the
-             same way as for other types
-         -->
-        <instance component="composition4"/>
-
-        <!--  Instantiates an instance of the GUI in the composite -->
-    <instance component="spell.gui.SpellCheckerGui"/>
-    </composite>
+<span class="c">&lt;!--  Instantiates an instance of our composition --&gt;</span>
+<span class="nt">&lt;instance</span> <span class="na">component=</span><span class="s">&quot;composition5&quot;</span><span class="nt">/&gt;</span>
 
-    <!--  Instantiates an instance of our composition -->
-    <instance component="composition5"/>
+<span class="nt">&lt;/ipojo&gt;</span>
+</pre></div>
 
-    </ipojo>
 
-The `composition5` contains an instance of the `composition4` and of the GUI. So the spell checker service exported by the composition4 is published inside the service context of the `composite 5` (the parent context). The GUI instance lives in this service context, and so can access to the exported Spell checker service.
+<p>The <code>composition5</code> contains an instance of the <code>composition4</code> and of the GUI. So the spell checker service exported by the composition4 is published inside the service context of the <code>composite 5</code> (the parent context). The GUI instance lives in this service context, and so can access to the exported Spell checker service.
 !app6.png!
-To execute this composition, restart Felix and launch the following commands:
-
-    start file:../spell.services/output/spell.services.jar
-    start file:../spell.english/output/spell.english.jar
-    start file:../spell.checker/output/spell.checker.jar
-    start file:../spell.checker.gui/output/spell.checker.gui.jar
-    start file:../example5/output/composition5.jar
-
-You can check that the composite does no more publish the spell checker service in the OSGi service registry.
-
-## Conclusion
-
-This page has presented how to use iPOJO composition model. Several topics were not addressed and will be added shortly:
-* Dynamic service implementation
-* The dependency model
-* *Composable* services and composition consistency
-* Context-awareness
-
-Subscribe to the Felix users mailing list by sending a message to [mailto:users-subscribe@felix.apache.org](); after subscribing, email questions or feedback to [mailto:users@felix.apache.org].
+To execute this composition, restart Felix and launch the following commands:</p>
+<div class="codehilite"><pre><span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.services/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.english/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">english</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/spell.checker.gui/o</span><span class="n">utput</span><span class="o">/</span><span class="n">spell</span><span class="o">.</span><span class="n">checker</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">jar</span>
+<span class="n">start</span> <span class="n">file:</span><span class="o">..</span><span class="sr">/example5/o</span><span class="n">utput</span><span class="o">/</span><span class="n">composition5</span><span class="o">.</span><span class="n">jar</span>
+</pre></div>
+
+
+<p>You can check that the composite does no more publish the spell checker service in the OSGi service registry.</p>
+<h2 id="conclusion">Conclusion</h2>
+<p>This page has presented how to use iPOJO composition model. Several topics were not addressed and will be added shortly:
+<em> Dynamic service implementation
+</em> The dependency model
+<em> </em>Composable<em> services and composition consistency
+</em> Context-awareness</p>
+<p>Subscribe to the Felix users mailing list by sending a message to <a href="">mailto:users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to [mailto:users@felix.apache.org].</p>
+      </div>
+      
+      <img src="http://felix.apache.org/ipojo/site/footer.png" class="footer">
 
-{include:apache-felix-ipojo-footer}
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1422427 by fmeschbe on Sun, 16 Dec 2012 00:36:51 +0000
+        Rev. 1441864 by fmeschbe on Sun, 3 Feb 2013 06:44:40 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project
@@ -533,5 +667,18 @@ Subscribe to the Felix users mailing lis
         may be trademarks or registered trademarks of their respective owners.
       </div>
     </div>
+    </div>
+    
+    <script type="text/javascript">
+    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+    </script>
+    <script type="text/javascript">
+    try{
+    var pageTracker = _gat._getTracker("UA-1518442-4");
+    pageTracker._trackPageview();
+    } catch(err) {}
+    </script>
+
   </body>
 </html>



Mime
View raw message