<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>@Repository(&#34;djo&#34;) &#187; Spring</title>
	<atom:link href="https://blog.developpez.com/djo-mos/pcategory/java/spring/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/djo-mos</link>
	<description></description>
	<lastBuildDate>Sun, 27 Sep 2009 00:05:37 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Inclusion dynamique de ressources Spring</title>
		<link>https://blog.developpez.com/djo-mos/p7821/java/spring/spring-framework/inclusion_dynamique_de_ressources_spring</link>
		<comments>https://blog.developpez.com/djo-mos/p7821/java/spring/spring-framework/inclusion_dynamique_de_ressources_spring#comments</comments>
		<pubDate>Thu, 02 Jul 2009 01:57:19 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une super astuce que je viens de tomber dessus sur le blog de Zenika : merci à eux de partager celà Il s&#8217;agit de controler l&#8217;inclusion de fichiers de configuration Spring via une property passé à la JVM : &#60;import resource=&#34;${env}-infrastructure.xml&#34;/&#62; puis passer l&#8217;argument : -Denv=prod ou encore -Denv=dev Par exemple, selon que l&#8217;on est en mode développement ou en mode production. J&#8217;adore ! surtout pour l&#8217;inclusion des fichiers .properties Le billet qui présente cette [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une super astuce que je viens de tomber dessus sur le blog de Zenika : merci à eux de partager celà <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Il s&rsquo;agit de controler l&rsquo;inclusion de fichiers de configuration Spring via une property passé à la JVM :</p>
<pre><code class="codecolorer text default"><span class="text">&lt;import resource=&quot;${env}-infrastructure.xml&quot;/&gt;</span></code></pre>
<p>puis passer l&rsquo;argument :</p>
<pre><code class="codecolorer text default"><span class="text">-Denv=prod</span></code></pre>
<p>ou encore</p>
<pre><code class="codecolorer text default"><span class="text">-Denv=dev</span></code></pre>
<p>Par exemple, selon que l&rsquo;on est en mode développement ou en mode production.</p>
<p>J&rsquo;adore !  surtout pour l&rsquo;inclusion des fichiers .properties <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Le <a href="http://blog.zenika.com/index.php?post/2009/07/01/Configuration-dynamique-du-déploiement-d-une-application-Spring">billet</a> qui présente cette technique.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Préparation de l&#8217;environnement : configuration de log4j</title>
		<link>https://blog.developpez.com/djo-mos/p7515/java/spring/spring-framework/osgi_configuration_log4j_logging</link>
		<comments>https://blog.developpez.com/djo-mos/p7515/java/spring/spring-framework/osgi_configuration_log4j_logging#comments</comments>
		<pubDate>Wed, 22 Apr 2009 14:17:34 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[OSGi côté serveur]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans ce second volet de la série de l&#8217;utilisation d&#8217;OSGi côté serveur, je vais présenter comment on peut configurer log4j pour qu&#8217;on puisse voir les logs générés par les différents bundles dans la console d&#8217;Eclipse. Dans un programme Java ordianire, log4j cherche un fichier log4j.properties (ou xml) dans le racine du classpath. Or, dans un conteneur OSGi, la notion de classpath est différente. On n&#8217;a plus de classpath unique par application, mais plutôt un classpath [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans ce second volet de la série de l&rsquo;utilisation d&rsquo;OSGi côté serveur, je vais présenter comment on peut configurer log4j pour qu&rsquo;on puisse voir les logs générés par les différents bundles dans la console d&rsquo;Eclipse.</p>
<p>Dans un programme Java ordianire, log4j cherche un fichier log4j.properties (ou xml) dans le racine du classpath. Or, dans un conteneur OSGi, la notion de classpath est différente. On n&rsquo;a plus de classpath unique par application, mais plutôt un classpath séparé par bundle.</p>
<p><span id="more-2"></span></p>
<p>Pour résoudre celà, on utilise la notion de fragments. Un fragment est un bundle spécial, qui à l&rsquo;exécution (à la pahse de resolution), se trouve attaché et mergé dans un autre bundle hôte. Après, il sera traités exactement comme faisant partie du bundle hôte.</p>
<p>Dans le cas précis de ce billet, on va créer un fragment avec le bundle de log4j comme hôte, et on va placer le fichier log4j.properties dans ce fragment.<br />
Ainsi, quand log4j va rechercher un fichier de configuration dans la racind du classpath (le classpath de son bundle), il trouvera et utilisera ce fichier</p>
<p>Eclipse PDE fournit un assistant pour la création d&rsquo;un fragment. Faites « New > Other > Plug-In Developement > Fragment Project » :</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465677734/" title="fragment-wizard-1 by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3482/3465677734_1d9710c668_o.png" width="441" height="422" alt="fragment-wizard-1" /></a></p>
<p>Saissisez un nom pour ce fragment, « ssosgi.log4j.config » dans mon cas par exemple et cochez l&rsquo;option « an OSGi framework&nbsp;&raquo; sous « Target Platform »:</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465677888/" title="fragment-wizard-2 by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3549/3465677888_6817123aeb_o.png" width="497" height="499" alt="fragment-wizard-2" /></a></p>
<p>Dans la page suivante, utilisez le bouton « Browse » pour sélectionnez le bundle de log4j comme Host Plig-In</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465677976/" title="fragment-wizard-3 by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3216/3465677976_ef36beac7d_o.png" width="497" height="522" alt="fragment-wizard-3" /></a></p>
<p>Et validez.</p>
<p>Dans le projet, créez un fichier log4.properties avec le contenu suivant :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">log4j.rootLogger=info, con, file <br />
log4j.appender.con=org.apache.log4j.ConsoleAppender <br />
log4j.appender.con.layout=org.apache.log4j.PatternLayout <br />
log4j.appender.con.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n <br />
&nbsp;<br />
log4j.appender.file=org.apache.log4j.FileAppender <br />
log4j.appender.file.layout=org.apache.log4j.PatternLayout <br />
log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F\:%L) - %m%n <br />
log4j.appender.file.File=/home/djo/ssosgi.log <br />
log4j.appender.file.append=false</div></div>

</pre>
</blockquote>
<p>Notez que vous pouvez personnaliser la configuration pour l&rsquo;adapter à vos besoins. Pensez notamment à changer le nom du fichier de log («/home/djo/ssosgi.log» dans mon cas).</p>
<p>Il faut ensuite ajouter ce fragment à la configuration de lancement. Allez dans la fnêtre de configuration de celle-ci (<a href="http://blog.developpez.com/djo-mos/p7098/java/osgi/osgi-cote-serveur/osgi-preparation-target-platform/">comme décrit dans le billet précédent</a>) et cochez le fragment qu&rsquo;on vient de créer dans la liste des plugins à inclure.</p>
<p>Appliquez et lancer la configuration. Vous devriez avoir un log plus détaillé dans la console d&rsquo;Eclipse :</p>
<p><a href="http://www.flickr.com/photos/23820026@N06/3465707274/" title="console-log by djo.mos, on Flickr"><img src="http://farm4.static.flickr.com/3509/3465707274_d2df4e4c19_o.png" width="446" height="384" alt="console-log" /></a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie de Spring DM Server 2.0 M1</title>
		<link>https://blog.developpez.com/djo-mos/p7434/annonces/sortie_de_spring_dm_server_2_0_m1</link>
		<comments>https://blog.developpez.com/djo-mos/p7434/annonces/sortie_de_spring_dm_server_2_0_m1#comments</comments>
		<pubDate>Thu, 02 Apr 2009 20:01:53 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[SpringSource DM Server/S2AP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[SpringSource frappe fort : ils viennent d&#8217;annoncer la sortie du premier milestone de DM Server 2.0. J&#8217;ai pas vu le coup venir : rien qu&#8217;Hier, Rob Harrop a publié un billet où il parle de leurs plans pour Spring DM Server 2, et e lendemain, ils publient un premier milestone &#8230; Voici rapidement les quelques nouveautés apportées par cette version : => Utilisation de Scrum comme processus de développement (c&#8217;est bien comme ça qu&#8217;on l&#8217;appèlle [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>SpringSource frappe fort : ils viennent d&rsquo;annoncer la sortie du premier milestone de DM Server 2.0.<br />
J&rsquo;ai pas vu le coup venir : rien qu&rsquo;Hier, Rob Harrop a publié <a href="http://blog.springsource.com/2009/04/01/springsource-dm-server-roadmap/">un billet</a> où il parle de leurs plans pour Spring DM Server 2, et e lendemain, ils publient un premier milestone &#8230;</p>
<p>Voici rapidement les quelques nouveautés apportées par cette version :<br />
<span id="more-184"></span><br />
=> Utilisation de Scrum comme processus de développement (<em>c&rsquo;est bien comme ça qu&rsquo;on l&rsquo;appèlle hein ?</em>)<br />
=> Premier support de la notion de plans : pensez les features d&rsquo;Eclipse. Je tiens à préciser que j&rsquo;avais abandonné DM Server 1 à cause de la notion de PAR, une sorte de regroupement de bundles dans un archive, ce qui va tout simplement à l&rsquo;encontre de l&rsquo;essence de l&rsquo;OSGi. Avec les plans, un simple descripteur xml d&rsquo;un ensemble de bundles, je crois qu&rsquo;une ré-évaluation des choses s&rsquo;impose <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /><br />
=> Premier support de la notion de cloning : j&rsquo;ai pas encore approfondi ma lecture la dessus, je peux donc pas présenter ce que c&rsquo;est.</p>
<p>Voici maintenant quelques liens clés :<br />
=> <a href="http://blog.springsource.com/2009/04/02/announcing-dm-server-20-m1/">Annonce</a><br />
=> <a href="http://www.springsource.com/download/community?project=SpringSource%20dm%20Server&amp;version=2.0.0.M1">Téléchargement</a><br />
=> <a href="https://issuetracker.springsource.com/secure/RunPortlet.jspa?portletKey=com.pyxis.greenhopper.jira:greenhopper-releasenotes&amp;projectid=10054&amp;fields=,summary&amp;versionId=10140&amp;includeSubs=false">Release notes</a><br />
=> Doc : <a href="http://static.springsource.org/s2-dmserver/2.0.x/getting-started/html/">Getting Started</a>, <a href="http://static.springsource.org/s2-dmserver/2.0.x/user-guide/html/">User Guide</a>, <a href="http://static.springsource.org/s2-dmserver/2.0.x/programmer-guide/html/">Dev Guide</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Préparation de l&#8217;environnement : la target platform</title>
		<link>https://blog.developpez.com/djo-mos/p7098/java/osgi_preparation_target_platform</link>
		<comments>https://blog.developpez.com/djo-mos/p7098/java/osgi_preparation_target_platform#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:58:17 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OSGi côté serveur]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce billet est le premier d&#8217;une série (que j&#8217;espère finir pour une fois) de billets à propos de l&#8217;utilisation d&#8217;OSGi du côté serveur. L&#8217;utilisation la plus populaire d&#8217;OSGi est plus du côté client, avec Eclipse qui l&#8217;utilise comme noyeau et base de son architecture de plugins, ainsi que dans le monde de l&#8217;embarqué. Dans ce premier billet, je vais présenter l&#8217;étape de préparation de l&#8217;environnement de développement,et plus particulièrement la notation de Target Platform. 1. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce billet est le premier d&rsquo;une série (que j&rsquo;espère finir pour une fois) de billets à propos de l&rsquo;utilisation d&rsquo;OSGi du côté serveur.<br />
L&rsquo;utilisation la plus populaire d&rsquo;OSGi est plus du côté client, avec Eclipse qui l&rsquo;utilise comme noyeau et base de son architecture de plugins, ainsi que dans le monde de l&rsquo;embarqué.</p>
<p>Dans ce premier billet, je vais présenter l&rsquo;étape de préparation de l&rsquo;environnement de développement,et plus particulièrement la notation de <strong><em>Target Platform</em></strong>.</p>
<p><span id="more-1"></span></p>
<h1 style="text-align: left;">1. Présentation</h1>
<p>Il s&rsquo;agit ici de définir l&rsquo;ensemble initial de plugins qui va constituer l&rsquo;environnement d&rsquo;exécution de notre serveur.</p>
<p>Il nous faut aussi configurer Eclipse pour qu&rsquo;il reconnaisse et travaille sur cet ensemble de plugins.<br />
Ca permettrait d&rsquo;une part de limiter le nombre de choix présentés dans divers endroits (lors de sélection de plugins requis et des packages importés, des plugins à inclure dans une configuration d&rsquo;exécution, etc.) mais aussi pour éviter une dépendance accidentelle à un plugin non désiré (je pense notamment aux plugins d&rsquo;Eclipse par exemple)</p>
<h1 style="text-align: left;">2. Vue d&rsquo;ensemble</h1>
<p>La target platform sera constituée de :</p>
<ul>
<li><strong>Equinox</strong> : C&rsquo;est le coeur du serveur. Il implémente les spécifications OSGi et servira comme conteneur qui charge et gère le cycle de vie des autres plugins</li>
<li><strong>Spring Dynamic Modules</strong> : C&rsquo;est une sorte de pont entre le monde OSGi (registre des services) et le monde de Spring (application context). De plus, Spring DM permet de faire tourner des applications Web Java ordinaires (Servlets, JSPs, etc.) dans un conteneur OSGi (OSGi offre un support basique pour le web à travers HttpService, mais c&rsquo;est très limité)</li>
<li><strong>Spring</strong> : Il est là car tout d&rsquo;abord il est requis par Spring DM, mais aussi pour son moteur IoC ainsi que les abstractions qu&rsquo;il offre au dessus de plusieurs technologies Java (JDBC et Remoting entre autres)</li>
<li><strong>Jetty</strong> : Comme énoncé plus tôt, le HttpService d&rsquo;OSGi est très limité parapport à la puissance dont on dispose dans une application web Java ordinaire. J&rsquo;ai donc inclus Jetty dans la configuration de base de notre serveur pour avoir toute la puissance requise sous la main</li>
<li>Quelques autre dépendances, comme des librairies de logging</li>
</ul>
<blockquote><p>Notez qu&rsquo;il est tout à fait possible (et très simple) d&rsquo;utiliser Tomcat à la place de Jetty. Ceci revient juste à remplacer les jars de Jetty par ceux de Tomcat.</p></blockquote>
<h1 style="text-align: left;">3. Récupération des fichiers nécessaires</h1>
<p>Il va nous falloir télécharger plusieurs packages pour retrouver les jars nécessaires.</p>
<ul>
<li><strong>Spring DM</strong> : récupérable à <a href="http://www.springsource.com/download/community?project=Spring%20Dynamic%20Modules">cette adresse</a> (pour cet article, j&rsquo;ai utilisé Spring DM 1.2 M2)</li>
<li><strong>Spring Framework</strong> : récupérable à <a href="http://www.springsource.com/download/community?project=Spring%20Framework">cette adresse</a> (pour cet article, j&rsquo;ai utilisé Spring Framework 2.5.6)</li>
</ul>
<p>Après avoir extrait les archives de Spring et de Spring DM, Créez quelque part sur votre disque un dossier qui servira à rassembler les jars de la target platform, par exemple &nbsp;&raquo; server-springdm-1.2.0.m2-spring-2.5.6-jetty &nbsp;&raquo; dans mon cas. </p>
<blockquote><p>Généralement, je crée la target platform en tant que projet (simple) dans mon worksapce Eclipse, histoire de pouvoir le versionner sur SVN par exemple, mais ce n&rsquo;est pas requis. </p></blockquote>
<p>Copiez les fichiers suivants depuis le dossier où vous avez extrait Spring DM vers le dossier de la target platform: </p>
<ul>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-core-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-extender-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-io-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-web-1.2.0-m2.jar</li>
<li>spring-osgi-1.2.0-m2/dist/spring-osgi-web-extender-1.2.0-m2.jar</li>
</ul>
<ul>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.net.sf.cglib-2.1.3.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.org.aopalliance-1.0.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.api-1.5.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.log4j-1.5.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty-6.1.9.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty.start.osgi-1.0.0.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty-util-6.1.9.jar</li>
<li>spring-osgi-1.2.0-m2/lib/jetty.web.extender.fragment.osgi-1.0.1.jar</li>
<li>spring-osgi-1.2.0-m2/lib/log4j.osgi-1.2.15-SNAPSHOT.jar</li>
<li>spring-osgi-1.2.0-m2/lib/org.eclipse.osgi-3.2.2.jar</li>
<li>spring-osgi-1.2.0-m2/lib/servlet-api.osgi-2.5-SNAPSHOT.jar</li>
</ul>
<ul>
<li>spring-framework-2.5.6/dist/modules/spring-aop.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-beans.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-context.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-core.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-jdbc.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-tx.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-web.jar</li>
<li>spring-framework-2.5.6/dist/modules/spring-webmvc.jar</li>
</ul>
<blockquote><p>Pour vous simplifier la tache, vous pouvez télécharger <a href="http://djo-mos.ftp-developpez.com/data/blog/tp-server-springdm-1.2.0.m2-spring-2.5.6-jetty.zip">cet archive zip (5 Mo)</a> qui contient la target platform décrite plus haut)</p></blockquote>
<h1 style="text-align: left;">4. Configuration d&rsquo;Eclipse</h1>
<p>Dans Eclipse, allez au menu Window -> Preferences et localisez le noeud &laquo;&nbsp;Plug-in Development/Target Platform&nbsp;&raquo;</p>
<p><img src="http://farm4.static.flickr.com/3419/3215905144_d9bcdcc417_o.png" alt="Target Platform Preferences" title="" /></p>
<p>Cliquez sur &laquo;&nbsp;Browse&nbsp;&raquo;, localiser le dossier de la target platform et validez.</p>
<p>Il nous faut maintenant créer une configuration de lancement qui lance notre serveur.</p>
<p>Faites un clic sur le petit flêche orienté vers le bas du bouton Run et sélectionnez &laquo;&nbsp;Run configurations&nbsp;&raquo;</p>
<p><img src="http://farm4.static.flickr.com/3344/3215905482_4ee8a5fa38_o.png" alt="Run config 1" title="" /></p>
<p>Sélectionnez le noeud &laquo;&nbsp;OSGi Framework&nbsp;&raquo;, puis clic droit et &laquo;&nbsp;New&nbsp;&raquo;</p>
<p><img src="http://farm4.static.flickr.com/3506/3215905370_385a0a6058_o.png" alt="Run config 2" title="" /></p>
<p>Saisissez un nom pour cette configuration, &laquo;&nbsp;serveur&nbsp;&raquo; par exemple.<br />
Par défaut, tous les plugins de la target platform sont cochés. Faites le si ce n&rsquo;est pas le cas.</p>
<p>Assurez vous aussi que &laquo;&nbsp;Default start level&nbsp;&raquo; est positionné à 4 et que &laquo;&nbsp;Default-Autostart&nbsp;&raquo; est à true</p>
<p>Il faut maintenant modifer le start level des deux extenders de Spring DM (org.springframework.osgi.extender et org.springframework.osgi.web.extender) pour les mettre à 5 </p>
<p><img src="http://farm4.static.flickr.com/3367/3215054619_3bf7a90dd7_o.png" alt="extender-config-1" title="" /></p>
<p><img src="http://farm4.static.flickr.com/3395/3215055301_1caa38eff8_o.png" alt="extender-config-2" title="" /></p>
<p>Cliquez sur &laquo;&nbsp;Apply&nbsp;&raquo; pour valider.</p>
<h1 style="text-align: left;">5. Test</h1>
<p>Cliquez sur le bouton &laquo;&nbsp;Run&nbsp;&raquo;. La console devrait afficher : </p>
<p><img src="http://farm4.static.flickr.com/3459/3215055427_7cea5df262_o.png" alt="console" title="" /></p>
<p>Et si vous tapez l&rsquo;adresse &laquo;&nbsp;http://localhost:8080/&nbsp;&raquo; dans un navigateur, vous devriez avoir :</p>
<p><img src="http://farm4.static.flickr.com/3505/3215054547_1df10575c2_o.png" alt="Browser" title="" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Développez votre première application multi-bundles avec SpringSource Application Platform et eclipse (1)</title>
		<link>https://blog.developpez.com/djo-mos/p5922/eclipse/developpez_votre_premiere_application_mu</link>
		<comments>https://blog.developpez.com/djo-mos/p5922/eclipse/developpez_votre_premiere_application_mu#comments</comments>
		<pubDate>Thu, 19 Jun 2008 15:25:04 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[SpringSource DM Server/S2AP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Suite à ce billet : Vos premiers pas avec SpringSource Application Platform et eclipse où j&#8217;avais montré comment configurer le tooling STS avec Eclipse ainsi que la création et le déploiement d&#8217;une application exemple, je vais montrer dans ce billet comment développer une application multi-tiers s&#8217;étalant sur plusieurs bundles. 1. Vue d&#8217;ensemble L&#8217;application que je vais utiliser comme exemple est simpliste : elle ne sert qu&#8217;à afficher une liste de personnes (peu importe comment cette [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Suite à ce billet : <a href="http://blog.developpez.com/djo-mos?title=vos_premiers_pas_avec_springsource_appli">Vos premiers pas avec SpringSource Application Platform et eclipse</a> où j&rsquo;avais montré comment configurer le tooling STS avec Eclipse ainsi que la création et le déploiement d&rsquo;une application exemple, je vais montrer dans ce billet comment développer une application multi-tiers s&rsquo;étalant sur plusieurs bundles.</p>
<p><span id="more-181"></span></p>
<h2 style="text-align: left;">1. Vue d&rsquo;ensemble</h2>
<p>L&rsquo;application que je vais utiliser comme exemple est simpliste : elle ne sert qu&rsquo;à afficher une liste de personnes (peu importe comment cette liste est retrouvée) dans une page web.</p>
<p>Seulement, histoire de faire propre, je vais découper cette application en 4 bundles:</p>
<ol>
<li><strong>domain</strong>: C&rsquo;est un bundle qui définit les objets métier (un seul dans notre cas: Person)</li>
<li><strong>service-api</strong>: C&rsquo;est un bundle qui définit les interfaces (contrats) de la couche métier</li>
<li><strong>service-impl</strong>: C&rsquo;est un bundle qui définit les implémentations des services mais aussi les exporte en tant que services OSGi qui seront consommés par le dernier bundle.</li>
<li><strong>web-frontend</strong>: C&rsquo;est un bundle qui définit le front-end web de l&rsquo;application et qui consomme les services exposés par service-impl</li>
</ol>
<p><strong>N.B.: </strong>Je suppose tout au long de ce billet que le serveur S2AP ainsi que le tooling Eclipse correspondant est déjà en place <a href="http://blog.developpez.com/djo-mos?title=vos_premiers_pas_avec_springsource_appli">comme je le montre ici</a>.</p>
<h2 style="text-align: left;">2. Créer le bundle domain</h2>
<p>Dans Eclipse, lancez le wizard &laquo;&nbsp;New Bundle Project&nbsp;&raquo; :</p>
<p><img src="http://farm3.static.flickr.com/2056/2487301296_2f642edb00_o.png" alt="New Bundle Project" title="" /></p>
<p>Saisissez un nom parlant pour ce bundle (<em>djo.s2ap.demo.domain</em> pour moi) et cliquez sur Next.<br />
Là, et c&rsquo;est une nouveauté dans le tooling S2AP pour Eclipse (sur une <a href="https://issuetracker.springsource.com/browse/PLATFORM-13">suggestion de ma part</a>, merci à Christian Dupuis qui l&rsquo;a implémenté), il est possible de choisir le type du bundle (None ou Web) :</p>
<p><img src="http://farm4.static.flickr.com/3265/2587066329_2d6bf6386d_o.png" alt="Bundle Personality" title="" /></p>
<p>Choissisez None et validez.<br />
Créer un package dans le dossier src (j&rsquo;utilise habituellement le nom du projet comme package de base), et créez une classe Person (forcément, mon type de données préféré <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> )</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package djo.s2ap.demo.domain; <br />
&nbsp;<br />
public class Person { <br />
&nbsp; private String name; <br />
&nbsp; private int age; <br />
&nbsp;<br />
&nbsp; public Person(String name, int age) { <br />
&nbsp; &nbsp; super(); <br />
&nbsp; &nbsp; this.name = name; <br />
&nbsp; &nbsp; this.age = age; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public String getName() { <br />
&nbsp; &nbsp; return name; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void setName(String name) { <br />
&nbsp; &nbsp; this.name = name; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public int getAge() { <br />
&nbsp; &nbsp; return age; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void setAge(int age) { <br />
&nbsp; &nbsp; this.age = age; <br />
&nbsp; } <br />
&nbsp;<br />
}</div></div>

</pre>
</blockquote>
<p>Je vais me contenter de cette classe comme mon domaine.</p>
<p>Il faut ensuite exporter le package de cette classe pour qu&rsquo;elle soit visible aux autres bundles.<br />
Pour ce faire, localisez le fichier src/META-INF/MANIFEST.MF et double-cliquez la dessus, ce qui ouvre l&rsquo;éditeur de manifest de STS (encore une fonctionnalité <a href="https://issuetracker.springsource.com/browse/PLATFORM-17">proposé par l&rsquo;auteur de ce billet (moi)</a> et implémentée par l&rsquo;equipe STS (re-merci) !).<br />
Dans l&rsquo;éditeur multi-pages qui se lance, localisez la page &laquo;&nbsp;Runtime&nbsp;&raquo; et activer la.<br />
A gauche, vous trouverez une liste présentant les packages exportés par le bundle en question. Cliquez sur le bouton &laquo;&nbsp;Add&nbsp;&raquo; et dans la fenêtre qui s&rsquo;affiche, sélectionnez l&rsquo;unique package présent (djo.s2ap.demo.domain).</p>
<p>Sinon, il est toujours possible de travailler directement sur le manifest en utilisant le contenu suivant:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Manifest-Version: 1.0 <br />
Bundle-Version: 1.0.0 <br />
Bundle-Name: Domain Bundle <br />
Bundle-ManifestVersion: 2 <br />
Bundle-SymbolicName: djo.s2ap.demo.domain <br />
Export-Package: djo.s2ap.demo.domain</div></div>

</pre>
</blockquote>
<p>Voilà, le premier bundle est prêt.</p>
<h2 style="text-align: left;">3. Créer le bundle service-api</h2>
<p>Comme énoncé plus haut, ce bundle va juste définir les contrats des services (sous forme d&rsquo;interfaces). C&rsquo;est LE pattern OSGi à mon avis, i.e. séparer l&rsquo;interface de l&rsquo;implémentation dans des bundles différents, histoire de pouvoir changer (mettre à jour, corriger des bugs, peaufiner, etc.) l&rsquo;implémentation séparément de son interface mais aussi pour éviter que le consommateur d&rsquo;un service ne dépende de son implémentation.</p>
<p>Dans le cadre de cette application exemple, je vais me contenter d&rsquo;un seul service exposant une seule fonctionnalité qui est de récupérer une liste de personnes.</p>
<p>Commencez par créer un autre bundle nommé &laquo;&nbsp;djo.s2ap.demo.service.api&nbsp;&raquo; dans mon cas (même procédure que pour le bundle domain, choisissez &laquo;&nbsp;None&nbsp;&raquo; comme personality).<br />
Ce bundle aura besoin de voir la classe Person du bundle domain.<br />
Or, justement, j&rsquo;ai exporté le package contenant cette classe. Il ne reste plus qu&rsquo;à importer ce package dans le bundle service.api.</p>
<p>Pour ce faire, localisez et double-cliquez sur le fichier &laquo;&nbsp;src/META-INF/MANIFEST.MF&nbsp;&raquo; du bundle service.api.<br />
Dans l&rsquo;éditeur multi-pages qui s&rsquo;affiche, activez la page &laquo;&nbsp;Dependencies&nbsp;&raquo;.<br />
Dans la liste à gauche (Import Package&nbsp;&raquo;, cliquez sur Add, et localisez le package &laquo;&nbsp;djo.s2ap.demo.domain&nbsp;&raquo; contenant la classe Person (utilisez le filtre):</p>
<p><img src="http://farm4.static.flickr.com/3073/2587263779_de6f479612_o.png" alt="Import Package" title="" /></p>
<p>Sélectionnez ce package et validez.<br />
Ainsi, la classe Person devient visible dans le second bundle.</p>
<p>Créez ensuite un package &laquo;&nbsp;djo.s2ap.demo.service.api&nbsp;&raquo; avec une interface IPersonRepository dont voici le code:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package djo.s2ap.demo.service.api; <br />
&nbsp;<br />
import java.util.List; <br />
&nbsp;<br />
import djo.s2ap.demo.domain.Person; <br />
&nbsp;<br />
public interface IPersonRepository { <br />
&nbsp; List&lt;Person&gt; getPersonsList(); <br />
}</div></div>

</pre>
</blockquote>
<p>Pour finir, il faut exporter le package qui définit cette interface car l&rsquo;implémentation de ce service aura besoin d&rsquo;y accéder.<br />
Donc, comme montré plus haut, exportez le package &laquo;&nbsp;djo.s2ap.demo.service.api&nbsp;&raquo; en utilisant soit l&rsquo;editeur graphique du manifest ou en jouant directement sur le manifest.</p>
<h2 style="text-align: left;">4. to be continued</h2>
<p>Faute d&rsquo;espace et de temps, je vais m&rsquo;arrêter là pour ce billet et je finirais la chose bientôt dans un autre billet.</p>
<p><ins>Toujours faute de temps, mais aussi à cause du fait que j&rsquo;ai abandonné S2DMS, j&rsquo;arrive pas à finir le second volet <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /><br />
J&rsquo;espère au moins pouvoir parler des raisons du pourquoi j&rsquo;ai abandonné cette plateforme (1 raison plus précisément, la notion de PAR)</ins></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sortie du second Milestone de Spring Dynamic Modules 1.2.0</title>
		<link>https://blog.developpez.com/djo-mos/p6826/annonces/sortie_du_second_milestone_de_spring_dyn_0</link>
		<comments>https://blog.developpez.com/djo-mos/p6826/annonces/sortie_du_second_milestone_de_spring_dyn_0#comments</comments>
		<pubDate>Mon, 24 Nov 2008 17:40:23 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Spring Dynamic Modules permet de réconcilier le modèle de développement de Spring Framework avec celui d&#8217;OSGi, et ce via l&#8217;ajout d&#8217;un namespace osgi utilisable dans les fichiers de configuration de Spring qui permettent entre autre d&#8217;importer un service OSGi en tant que Bean Spring ainsi que d&#8217;exporter un Bean Spring en tant que service OSGi. Aujourdhui, le second milestone de Spring dynamic Modules (spring DM) est sorti, apportant comme nouveautés : Passage à Spring 2.5.6 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Spring Dynamic Modules permet de réconcilier le modèle de développement de Spring Framework avec celui d&rsquo;OSGi, et ce via l&rsquo;ajout d&rsquo;un namespace osgi utilisable dans les fichiers de configuration de Spring qui permettent entre autre d&rsquo;importer un service OSGi en tant que Bean Spring ainsi que d&rsquo;exporter un Bean Spring en tant que service OSGi.</p>
<p>Aujourdhui, le second milestone de Spring dynamic Modules (spring DM) est sorti, apportant comme nouveautés :</p>
<p><span id="more-175"></span></p>
<ul>
<li>Passage à Spring 2.5.6</li>
<li>Mise à jour des dépendances ves les modules Spring pour refléter les nouveaux noms de ceux-ci</li>
<li>Support des services compendium via le namespace compendium</li>
<li>etc.</li>
</ul>
<p>Les liens qu&rsquo;il vous faut :</p>
<p>=> <a href="http://www.springsource.com/download/community?project=Spring%20Dynamic%20Modules">Télécharger</a><br />
=> <a href="http://static.springframework.org/osgi/docs/1.2.0-m2/reference/html/">Documentation</a><br />
=> <a href="http://static.springframework.org/osgi/docs/1.2.0-m2/reference/html/faq.html">FAQ</a><br />
=> <a href="http://static.springframework.org/osgi/docs/1.2.0-m2/changelog.txt">Changelog</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie de Spring Framework 2.5.6</title>
		<link>https://blog.developpez.com/djo-mos/p6728/annonces/sortie_de_spring_framework_2_5_6</link>
		<comments>https://blog.developpez.com/djo-mos/p6728/annonces/sortie_de_spring_framework_2_5_6#comments</comments>
		<pubDate>Wed, 05 Nov 2008 09:13:13 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La première version de maintenance de Spring Framework après la décision de ne plus les fournir librement après les premiers 3 mois puis le revirement de la situation est maintenant disponible avec la publication de la 2.5.6 qui apporte principalement : Près de 100 bugs résolus Passage à des versions plus récentes pour des libs externes (EclipseLink, AspectJ, etc.) Entêtes OSGi révisées Les liens importants : => Annonce => Documentation => Changelog => Télécharger (ça [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La première version de maintenance de Spring Framework après <a href="http://blog.developpez.com/djo-mos?title=changement_strategie_maintenance_spring">la décision de ne plus les fournir librement après les premiers 3 mois</a> puis <a href="http://blog.developpez.com/djo-mos?title=changement_strategi_maintenance_spring_b">le revirement de la situation</a> est maintenant disponible avec la publication de la 2.5.6 qui apporte principalement :</p>
<ul>
<li>Près de <a href="http://jira.springframework.org/browse/SPR/fixforversion/10968">100 bugs résolus</a></li>
<li>Passage à des versions plus récentes pour des libs externes (EclipseLink, AspectJ, etc.)</li>
<li>Entêtes OSGi révisées</li>
</ul>
<p>Les liens importants :</p>
<p><span id="more-174"></span></p>
<p>=> <a href="http://www.springsource.org/node/813">Annonce</a><br />
=> <a href="http://static.springframework.org/spring/docs/2.5.x/reference/index.html">Documentation</a><br />
=> <a href="http://static.springframework.org/spring/docs/2.5.x/changelog.txt">Changelog</a><br />
=> <a href="http://www.springsource.com/download/community?project=Spring%20Framework">Télécharger</a> (ça c&rsquo;est pour la version <em>community</em> (ou gratuite), et le lien que je donne vous fait sauter un formulaire à remplir (ou a ignorer) proposé par le lien original que <a href="http://www.springsource.com/download?project=Spring%20Framework">voici</a>)</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changement de politique de maintenance de Spring Framework bis</title>
		<link>https://blog.developpez.com/djo-mos/p6531/java/spring/changement_strategi_maintenance_spring_b</link>
		<comments>https://blog.developpez.com/djo-mos/p6531/java/spring/changement_strategi_maintenance_spring_b#comments</comments>
		<pubDate>Tue, 07 Oct 2008 23:34:23 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Spring]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[C&#8217;est officiel : Rod Jonhson vient de poster un billet sur le blog officiel de SpringSource pour dire qu&#8217;il ont effectué une sorte de refactoring sur leur nouvelle politique de maintenance annoncée il y&#8217;a peu et qui a causé, pour rester en un doux euhémisme, de violentes réactions de la communauté (genre 250 commentaires jusque là sur The Server Side). Je suis encore en train de lire (et relire) l&#8217;annonce, mais une chose est sûre [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est officiel : Rod Jonhson vient de poster un billet sur le blog officiel de SpringSource pour dire qu&rsquo;il ont effectué une sorte de refactoring sur <a href="http://blog.developpez.com/djo-mos?title=changement_strategie_maintenance_spring">leur nouvelle politique de maintenance annoncée il y&rsquo;a peu</a> et qui a causé, pour rester en un doux euhémisme, de violentes réactions de la communauté (genre 250 commentaires jusque là sur The Server Side).</p>
<p>Je suis encore en train de lire (et relire) l&rsquo;annonce, mais une chose est sûre : SpringSource est revenu sur sa décision de changer la politique de maintenance de Spring Framework, en quotant Rod Jonhson :</p>
<p><span id="more-30"></span></p>
<blockquote><p><em>We are amending our maintenance policy in the light of community feedback. We will make regular binary releases from the Spring trunk available to the community, with no 3 month window. For each version of Spring, community releases will be available while it remains the trunk or until the next version is stable.</em></p></blockquote>
<p>Ou en clair, l&rsquo;infameuse limite des trois mois n&rsquo;est plus, et des versions officielles de Spring Framework resteront toujours fournies <strong>jusqu&rsquo;à ce</strong> qu&rsquo;une nouvelle version majeure soit stabilisée et publiée.</p>
<p>Bon, pour le reste, il a aussi assuré que la licence de Spring Framework ne changerait pas ainsi qu&rsquo;ils mettront en place un ajustement de la fourchette de prix pour les petites boites de développement.</p>
<p>Moi je trouve ça courageux de pouvoir revenir sur une telle décision mais c&rsquo;est surtout bénéfique à SpringSource avant tout (peut on dire du même pour Guice ? :D) car ce qui s&rsquo;était passé ces derniers mois allait (quoi que quelques dégâts sont déjà faits) laisser des séquelles sur la user-base de Spring Framework.</p>
<p>De plus, je suis fier de voir comment une communauté peut se dresser de la sorte pour exprimer ce qu&rsquo;elle pense et aller même à changer le sort des choses. Kudos !</p>
<p>P.S. : <a href="http://blog.springsource.com/2008/10/07/a-question-of-balance-tuning-the-maintenance-policy/">L&rsquo;annonce officielle</a> en Anglais.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bug bizarroïde, ou OSGi quand tu nous tiens &#8230;</title>
		<link>https://blog.developpez.com/djo-mos/p6528/java/spring/bug_bizarroide_ou_osgi_quand_tu_nous_tie</link>
		<comments>https://blog.developpez.com/djo-mos/p6528/java/spring/bug_bizarroide_ou_osgi_quand_tu_nous_tie#comments</comments>
		<pubDate>Tue, 07 Oct 2008 18:00:57 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Aujourd&#8217;hui, j&#8217;ai failli m&#8217;arracher les cheveux à cause d&#8217;un bug bizarre dans l&#8217;application sur laquelle on travaille (une application client/serveur à base d&#8217;Eclipse RCP côté client et Tomcat tournant comme service dans Equinox côté serveur avec Spring DM). Pour expliquer la chose, on utilise un super petit plug-in développé par Martin Lippert appelé Spring Extension Factory. Ce plugin permet de faire en sorte que les vues et éditeurs Eclipse peuvent être déclarés dans l&#8217;applicationContext du [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, j&rsquo;ai failli m&rsquo;arracher les cheveux à cause d&rsquo;un bug bizarre dans l&rsquo;application sur laquelle on travaille (une application client/serveur à base d&rsquo;Eclipse RCP côté client et Tomcat tournant comme service dans Equinox côté serveur avec Spring DM).</p>
<p>Pour expliquer la chose, on utilise un super petit plug-in développé par <a href="http://martinlippert.blogspot.com/">Martin Lippert</a> appelé <a href="http://martinlippert.blogspot.com/2008/10/new-version-of-spring-extension-factory.html">Spring Extension Factory</a>. Ce plugin permet de faire en sorte que les vues et éditeurs Eclipse peuvent être déclarés dans l&rsquo;applicationContext du plug-in (en tant que Spring beans quoi) ce qui permet de profiter de la DI par exemple. Plus précisément, dans notre cas ceci revient à injecter les proxies des services distants (sur le serveur) qui seront invoqués par remoting (via Hessian pour le moment, mais c&rsquo;est interchangeable grâce à l&rsquo;abstraction Spring du Remoting).</p>
<p>ça marchait impec jusqu&rsquo;à aujourd&rsquo;hui, où on avait besoin d&rsquo;utiliser une vue définie dans un plug-in A dans une perspective définie par un plug-in B. Et hop, l&rsquo;injection de dépendances ne marchait plus (un NPE à l&rsquo;accès à une des dépendances)</p>
<p><span id="more-161"></span></p>
<p>bon, heureusement que je me suis vite aperçu (enfin, plus d&rsquo;une heure)  que si j&rsquo;utilisais les versions plus récentes de Spring Extension Factory (1.0.3 au lieu de 1.0.1) et de Spring DM (1.1.2 au lieu de 1.1.0), le problème n&rsquo;est plus &#8230; Ouf !</p>
<p>Peut être que c&rsquo;était Spring DM qui n&rsquo;utilisait pas le classloader correct :</p>
<blockquote><p>* fixed usage of incorrect class loader for imported services with client thread context class loader management
</p></blockquote>
<p>(tiré du changelog de la 1.1.2)</p>
<p>Mais bon, comme ça marche là, je vais pas bloquer la dessus <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sortie de Spring Dynamic Modules 1.1.2</title>
		<link>https://blog.developpez.com/djo-mos/p6513/java/spring/sortie_de_spring_dynamic_modules_1_1_2</link>
		<comments>https://blog.developpez.com/djo-mos/p6513/java/spring/sortie_de_spring_dynamic_modules_1_1_2#comments</comments>
		<pubDate>Sun, 05 Oct 2008 02:14:33 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une nouvelle version de maintenance de la branche 1.1 de Spring Dynamic Modules (DM) 1.1.2 vient de sortir. Pour rappel, Spring DM permet d&#8217;intégrer les modèles de composition d&#8217;OSGi (externe) et de Spring Framework (interne), et ce en: &#8211; Importer déclarativement des services OSGi en tant que beans Spring, qu ipourront ensuite participer au cycle habituel de Spring (AOP, DI, etc.) &#8211; Exporter déclarativement des beans Spring comme services OSGi. D&#8217;ailleurs, l&#8217;approche du couple Spring/Spring [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une nouvelle version de maintenance de la branche <em>1.<strong>1</strong></em> de <strong><em>Spring Dynamic Modules</em></strong> <em>(DM)</em> <em>1.1.<strong>2</strong></em> vient de sortir.</p>
<p>Pour rappel, Spring DM permet d&rsquo;intégrer les modèles de composition d&rsquo;OSGi (externe) et de Spring Framework (interne), et ce en:<br />
&#8211; Importer déclarativement des services OSGi en tant que beans Spring, qu ipourront ensuite participer au cycle habituel de Spring (AOP, DI, etc.)<br />
&#8211; Exporter déclarativement des beans Spring comme services OSGi.</p>
<p><span id="more-29"></span></p>
<p>D&rsquo;ailleurs, l&rsquo;approche du couple Spring/Spring DM pourrait être retenues comme standard dans les spécifications de l&rsquo;OSGi (<a href="http://blog.developpez.com/djo-mos?title=disponibilite_du_premier_early_draft_des_2">Plus de détails ici ici</a>).</p>
<p>Quelques liens clés pour cette sortie:</p>
<p>=> <a href="http://sourceforge.net/project/showfiles.php?group_id=73357&amp;package_id=227224&amp;release_id=630369">Télécharger</a><br />
=> <a href="http://static.springframework.org/osgi/docs/1.1.2/changelog.txt">Changelog</a><br />
=> <a href="http://static.springframework.org/osgi/docs/1.1.2/reference/html/">Documentation</a><br />
=> <a href="http://static.springframework.org/osgi/docs/1.1.2/reference/html/faq.html">FAQ</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
