<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://air.imag.fr/index.php?action=history&amp;feed=atom&amp;title=OSGi_Pas_%C3%A0_Pas%2FChap03</id>
	<title>OSGi Pas à Pas/Chap03 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://air.imag.fr/index.php?action=history&amp;feed=atom&amp;title=OSGi_Pas_%C3%A0_Pas%2FChap03"/>
	<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;action=history"/>
	<updated>2026-06-21T18:45:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;diff=17335&amp;oldid=prev</id>
		<title>Donsez: /* Blueprint */</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;diff=17335&amp;oldid=prev"/>
		<updated>2014-04-26T05:28:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Blueprint&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:28, 26 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Blueprint===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Blueprint===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===SCA===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;NaScCA, Frascati, Tuscani&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Autres===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Autres===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Donsez</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;diff=17334&amp;oldid=prev</id>
		<title>Donsez: /* iPOJO */</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;diff=17334&amp;oldid=prev"/>
		<updated>2014-04-26T05:27:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;iPOJO&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:27, 26 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 73:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 73:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Les métadonnées peuvent être décrites de 3 manières possibles: entrée de Manifest, XML et annotations Java 5.0.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Les métadonnées peuvent être décrites de 3 manières possibles: entrée de Manifest, XML et annotations Java 5.0.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Blueprint===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Autres===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Autres===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Donsez</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;diff=17322&amp;oldid=prev</id>
		<title>Donsez: Created page with &quot;Précédent Sommaire Suivant ----  ==Modèles de Composants pour OSGi== Rédacteur(s): Didier Donsez, Thomas Calmant   ===Introduction=== L&#039;obs...&quot;</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=OSGi_Pas_%C3%A0_Pas/Chap03&amp;diff=17322&amp;oldid=prev"/>
		<updated>2014-04-25T20:34:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/index.php?title=Chap02&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Chap02 (page does not exist)&quot;&gt;Précédent&lt;/a&gt; &lt;a href=&quot;/index.php?title=Livre&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Livre (page does not exist)&quot;&gt;Sommaire&lt;/a&gt; &lt;a href=&quot;/index.php?title=Chap04&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Chap04 (page does not exist)&quot;&gt;Suivant&lt;/a&gt; ----  ==Modèles de Composants pour OSGi== Rédacteur(s): Didier Donsez, Thomas Calmant   ===Introduction=== L&amp;#039;obs...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Chap02|Précédent]] [[Livre|Sommaire]] [[Chap04|Suivant]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Modèles de Composants pour OSGi==&lt;br /&gt;
Rédacteur(s): Didier Donsez, Thomas Calmant &lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
L&amp;#039;observateur de la section de code précédente est relativement simple car un ServiceListener complet doit traiter les expressions de filtre pour restreindre le nombre de services et prendre en compte les changements de propriétés. Il peut éventuellement agir sur le cycle de vie de l&amp;#039;utilisateur des services si la disparition de ceux-ci empêche un fonctionnement normal. Cette tâche devient ingérable quand le nombre de services utilisés grandit. Le constat est que la prise en charge de la dynamique des services est une tâche très lourde pour le développeur OSGi et qu&amp;#039;elle conduit à un taux élevé d&amp;#039;erreurs de programmation qui peut provoquer un blocage partiel de la plate-forme. Une première réponse à ce constat est la classe utilitaire ServiceTracker (paquetage org.osgi.util.servicetracker)qui comme son nom l&amp;#039;indique suit un service. ServiceTracker est limité par le fait qu&amp;#039;il ne traque qu&amp;#039;un seul service et ne gère pas le cycle de vie de l&amp;#039;objet utilisateur des services en fonction de leurs disponibilités effectives.&lt;br /&gt;
&lt;br /&gt;
===Declarative Service et Service Binder===&lt;br /&gt;
Didier (source chapitre ICAR)&lt;br /&gt;
http://www2.lifl.fr/icar/Chapters/OSGI/osgi-body.html#tth_sEc7.4.6&lt;br /&gt;
&lt;br /&gt;
Le &amp;#039;&amp;#039;Service Component Runtime} introduit dans la spécification 4, propose un modèle à composants\cite{Szyperski:1998} orienté services qui capture la dynamique des services et assujettit le cycle de vie de l&amp;#039;objet utilisateur en fonction de la présence des services requis obligatoires. Le développement est grandement simplifié par la décription du composant au moyen d&amp;#039;un descripteur déclaratif dans une grammaire XML. Il reprend à son profit les principales idées de &amp;#039;&amp;#039;ServiceBinder}\cite{DBLP:conf/cbse/CervantesH04}\cite{/phd/2004/Cervantes} mais le complète cependant par la possibilité de retarder l&amp;#039;activation des &amp;#039;&amp;#039;bundles} fournisseurs de services jusqu&amp;#039;à la demande de liaison (méthode &amp;lt;code&amp;gt;getService(ServiceReference)&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;BundleContext&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;exemple suivant présente deux composants interagissant via un service d&amp;#039;impression. &lt;br /&gt;
&lt;br /&gt;
Le composant fournisseur du service est décrit par par le descripteur suivant. Ce composant enregistre un service comportant une interface fonctionnelle &amp;lt;code&amp;gt;PrintService&amp;lt;/code&amp;gt; et une interface technique &amp;lt;code&amp;gt;ConfigMBean&amp;lt;/code&amp;gt; \footnote{qui permet la configuration du composant via un agent JMX \cite{jmx} embarquable sur la passerelle}) avec leurs propriétés d&amp;#039;enregistrement. Les propriétés déclarées sont utilisées pour qualifier le service fourni. Le fournisseur de service peut être une fabrique de services (non présenté dans l&amp;#039;exemple) qui délivre des services personnalisés à chaque composant utilisateur au lieu du singleton commun à tous.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;component name=&amp;quot;printer&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;implementation class=&amp;quot;com.hp.printer.deskjet.impl.PrinterComp&amp;quot;/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;property name=&amp;quot;org.device.print.type&amp;quot; value=&amp;quot;inkjet&amp;quot; type=&amp;quot;String&amp;quot;/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;property name=&amp;quot;location&amp;quot; value=&amp;quot;4st floor&amp;quot; type=&amp;quot;String&amp;quot;/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;property name=&amp;quot;jmx.objectName&amp;quot;&lt;br /&gt;
              value=&amp;quot;printer.hp:name=DeskJet 930c 4st fl.&amp;quot; type=&amp;quot;String&amp;quot;/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;service&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;provide interface=&amp;quot;org.device.print.PrintService&amp;quot;/&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;provide interface=&amp;quot;com.hp.printer.ConfigMBean&amp;quot;/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/service&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/component&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Le composant utilisateur du service est décrit par le descripteur suivant. Ce composant sera instancié dès qu&amp;#039;un &amp;lt;code&amp;gt;PrintService&amp;lt;/code&amp;gt; est disponible et sera détruit dés que le dernier &amp;lt;code&amp;gt;PrintService&amp;lt;/code&amp;gt; se désenregistre. L&amp;#039;attribut &amp;lt;code&amp;gt;cardinality&amp;lt;/code&amp;gt; indique si la liaison est simple ou multiple. Les méthodes de callback pour le contrôle de la liaison sont décrit par les attributs &amp;lt;code&amp;gt;bind&amp;lt;/code&amp;gt; /&amp;lt;code&amp;gt;unbind&amp;lt;~/code&amp;gt;. L&amp;#039;attribut &amp;lt;code&amp;gt;policy&amp;lt;/code&amp;gt; indique un service qui disparaît est substituable par un autre équivalent. L&amp;#039;attribut &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; restreint le courtage à un sous-ensemble de services &amp;lt;code&amp;gt;PrintService&amp;lt;~/code&amp;gt;. Le second élément &amp;lt;code&amp;gt;reference&amp;lt;/code&amp;gt; automatise la liaison avec un service optionel de journalisation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;component name=&amp;quot;editor&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;implementation class=&amp;quot;org.eclispe.texteditor.impl.EditorComp&amp;quot;/&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;reference name=&amp;quot;PRINT&amp;quot;&lt;br /&gt;
            interface=&amp;quot;org.device.print.PrintService&amp;quot;&lt;br /&gt;
            target=&amp;quot;(&amp;amp;(location=*)(org.device.print.type=inkjet))&amp;quot;&lt;br /&gt;
            cardinality=&amp;quot;1..n&amp;quot;&lt;br /&gt;
            policy=&amp;quot;dynamic&amp;quot;&lt;br /&gt;
            bind=&amp;quot;bindPrintService&amp;quot;&lt;br /&gt;
            unbind=&amp;quot;unbindPrintService&amp;quot;&lt;br /&gt;
    /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;reference name=&amp;quot;LOG&amp;quot;&lt;br /&gt;
            interface=&amp;quot;org.osgi.service.log.LogService&amp;quot;&lt;br /&gt;
            cardinality=&amp;quot;0..1&amp;quot;&lt;br /&gt;
            policy=&amp;quot;dynamic&amp;quot;&lt;br /&gt;
            bind=&amp;quot;setLogService&amp;quot;&lt;br /&gt;
            unbind=&amp;quot;unsetLogService&amp;quot;&lt;br /&gt;
    /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/component&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les chemins des descripteurs de composants du &amp;#039;&amp;#039;bundle} sont listés dans l&amp;#039;entrée &amp;lt;code&amp;gt;Service-Component&amp;lt;/code&amp;gt; du manifeste du &amp;#039;&amp;#039;bundle}.&lt;br /&gt;
&lt;br /&gt;
SCR reprend à son profit les principales idées de ServiceBinder [Cervantes and Hall 2004][Cervantes 2004]. SCR le complète néanmoins par la possibilité de retarder l&amp;#039;instanciation de l&amp;#039;objet de service jusqu&amp;#039;à la demande de liaison effective par un bundle usager. Cette fonctionnalité permet de limiter l&amp;#039;usage des ressources de la machine hôte lorsque de nombreux services sont déployés sans être utilisés. SCR reste cependant un modèle de composants simple et non-hièrarchique qui ne prend pas en charge les aspects non fonctionnels comme la persistance, la sécurité, la distribution, les sessions, etc. Le développeur OSGi doit encore gérer ceux-ci de manière ad-hoc et non transparente.&lt;br /&gt;
&lt;br /&gt;
===Dependency Manager===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Spring DM===&lt;br /&gt;
[http://www.springframework.org/osgi Spring Dynamic Modules] (DM)&lt;br /&gt;
&lt;br /&gt;
Ex Spring/OSGi&lt;br /&gt;
&lt;br /&gt;
===iPOJO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://felix.apache.org/site/ipojo.html iPOJO] s&amp;#039;intéresse à l&amp;#039;ingénierie des conteneurs dynamiques pour les services OSGi par l&amp;#039;utilisation de la programmation orientée aspect ou bien encore par l&amp;#039;injection de code sur des POJOs (Plain Old Java Objects). Le conteneur iPOJO peut être étendu par des handlers (qui peuvent être eux-meme des composants iPOJO).&lt;br /&gt;
&lt;br /&gt;
Les métadonnées peuvent être décrites de 3 manières possibles: entrée de Manifest, XML et annotations Java 5.0.&lt;br /&gt;
&lt;br /&gt;
===Autres===&lt;br /&gt;
* Newton&lt;br /&gt;
* EasyBeans/OSGi&lt;br /&gt;
* Juice/OSGi&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===Conclusion===&lt;/div&gt;</summary>
		<author><name>Donsez</name></author>
	</entry>
</feed>