<?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/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:media="http://search.yahoo.com/mrss/"
> <channel><title>Blog Xebia France &#187; ESB</title> <atom:link href="http://blog.xebia.fr/tag/esb/feed/" rel="self" type="application/rss+xml" /><link>http://blog.xebia.fr</link> <description>J2EE, Agilité et SOA</description> <lastBuildDate>Wed, 08 Feb 2012 09:23:16 +0000</lastBuildDate> <language>fr</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <copyright>CC BY-NC-ND 2.0 http://creativecommons.org/licenses/by-nc-nd/2.0/fr/</copyright> <managingEditor>blog-france@xebia.com (Xebia France)</managingEditor> <webMaster>blog-france@xebia.com (Xebia France)</webMaster> <ttl>1440</ttl> <image> <url>http://blog.xebia.fr/videos/xebia-podcast.png</url><title>Blog Xebia France</title><link>http://blog.xebia.fr</link> <width>144</width> <height>144</height> </image> <itunes:new-feed-url>http://blog.xebia.fr/feed/podcast/</itunes:new-feed-url> <itunes:subtitle>Les podcasts de Xebia France vous permettent de suivre l&#039;actualité autour de Java, de l&#039;agilité, des technologies Web et bien d&#039;autres. Xebia France est une entreprise spécialisée dans les technologies Java et JEE en environnement agi[...]</itunes:subtitle> <itunes:summary>Les podcasts de Xebia France vous permettent de suivre l&#039;actualité autour de Java, de l&#039;agilité, des technologies Web et bien d&#039;autres. Xebia France est une entreprise spécialisée dans les technologies Java et JEE en environnement agile.</itunes:summary> <itunes:keywords>Xebia, Java, JEE, SOA, Agile, Méthodes, Agiles</itunes:keywords> <itunes:category text="Technology" /> <itunes:category text="Technology"> <itunes:category text="Software How-To" /> </itunes:category> <itunes:category text="Technology"> <itunes:category text="Tech News" /> </itunes:category> <itunes:author>Xebia France</itunes:author> <itunes:owner> <itunes:name>Xebia France</itunes:name> <itunes:email>blog-france@xebia.com</itunes:email> </itunes:owner> <itunes:block>no</itunes:block> <itunes:explicit>no</itunes:explicit> <itunes:image href="http://blog.xebia.fr/videos/xebia-podcast.png" /> <item><title>Des ESBs et des nuages</title><link>http://blog.xebia.fr/2010/09/02/des-esbs-et-des-nuages/</link> <comments>http://blog.xebia.fr/2010/09/02/des-esbs-et-des-nuages/#comments</comments> <pubDate>Thu, 02 Sep 2010 09:34:37 +0000</pubDate> <dc:creator>Mohamed-Hamza Benmansour</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[cloud]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5315</guid> <description><![CDATA[La vie terrestre des ESB, aura été courte. À peine compris et apprivoisés, les voilà qui s&#8217;envolent vers d&#8217;autres cieux. En effet, depuis quelque temps, on commence à percevoir les premières initiatives d&#8217;ESB dans les nuages comme celle de la firme WSO2 avec sa plateforme Stratos ou encore celle de Savoir technologies, dans le milieu [...]]]></description> <content:encoded><![CDATA[<p>La vie terrestre des ESB, aura été courte. À peine compris et apprivoisés, les voilà qui s&#8217;envolent vers d&#8217;autres cieux. En effet, depuis quelque temps, on commence à percevoir les premières initiatives d&#8217;ESB dans les nuages comme celle de la firme WSO2 avec sa plateforme <a
href="http://wso2.com/cloud/stratos/" title="Stratos" >Stratos</a> ou encore celle de <a
href="http://www.savoirtech.com/web/public/home" title="Savoir technologies" >Savoir technologies</a>, dans le milieu hospitalier, où la mise en place d&#8217;un ESB dans les nuages a facilité les échanges des données des patients entre les différents départements.</p><p>Dans la suite de ce billet, nous allons essayer d&#8217;analyser cette tendance émergente en revenant brièvement sur :</p><ul><li>Ce qu&#8217;est un ESB et les besoins des systèmes en terme d&#8217;intégration.</li><li>Les plates-formes de cloud computing et leurs différents modèles.</li></ul><h3><a
name="LesESB"></a>Les ESB</h3><p>Les tentatives pour couvrir la définition et l&#8217;utilisation des ESB ont fait couler beaucoup d&#8217;encre. Revenir brièvement sur le sujet s&#8217;avère donc un exercice très difficile. Néanmoins, on pourrait le synthétiser de la sorte (pour plus d&#8217;approfondissement, n&#8217;hésitez pas à consulter notre <a
href="http://blog.xebia.fr/2007/10/16/livre-blanc-comprendre-et-savoir-utiliser-un-esb-dans-une-soa/" title="livre blanc" >livre blanc</a> sur le sujet) :</p><p>Un ESB est une plate-forme d&#8217;intégration basée sur des standards ouverts.  Elle combine les fonctions d&#8217;échange de messages, de transformation, de routage et d&#8217;exposition de services, afin de permettre de relier efficacement et de coordonner les différentes composantes d&#8217;un système d&#8217;information étendu. À bien des égards, un ESB pourrait être un point de départ pour l&#8217;émergence d&#8217;une SOA orientée événement ou &laquo;&nbsp;Event-Driven SOA&nbsp;&raquo;.</p><p>Quelles motivations pourraient pousser une telle plate-forme à migrer vers les nuages ? Essayons de les appréhender en s&#8217;intéressant de plus près à ce nouvel environnement d&#8217;exécution.</p><h3><a
name="Lecloudcomputing"></a>Le cloud computing</h3><p><a
href="http://fr.wikipedia.org/wiki/Cloud_computing" title="Wikipedia" >Wikipedia</a> définit le cloud computing, selon le <a
href="http://www.syntec-informatique.fr/content/download/716911/10898717/file/SYNTEC-livre%20blanc-cloud_computing_HD.pdf" title="livre blanc" >livre blanc</a> de notre cher SYNTEC, comme un concept se déclinant sous trois formes :</p><ul><li>IaaS : infrastructure as a Service. C&#8217;est le niveau le plus bas. Le fournisseur assure dans ce cas les infrastructures matérielles nécessaires à la demande et selon les besoins de scalabilité et de stockage de l&#8217;application. Le client doit prendre en charge tous les aspects OS, pile logicielle et configuration pour tirer profit de l&#8217;élasticité des infrastructures fournies. On pourra citer comme exemple <a
href="http://aws.amazon.com/ec2/" title="Amazon EC2" >Amazon EC2</a>.</li><li>PaaS : plate-forme as a Service, niveau intermédiaire. Le fournisseur met à disposition une pile logicielle spécifique à ses infrastructures matérielles. Il assure derrière la disponibilité de votre application en lui allouant dynamiquement les ressources nécessaires selon les variations de sa charge. Un des exemples les plus célèbres est <a
href="http://code.google.com/appengine/" title="Google App Engine" >Google App Engine</a></li><li>SaaS : Software as a Service, niveau le plus haut du concept. Le client consomme le logiciel hébergé par la plate-forme sur une base de paiement par utilisation (pay per use). <a
href="http://www.salesforce.com/fr/" title="SalesForce" >SalesForce</a> a été un des pionniers de ce type de service.</li></ul><p>Notons que le principe du &laquo;&nbsp;pay per use&nbsp;&raquo; s&#8217;applique aux différentes déclinaisons citées ci-dessus. Il représente un des avantages principaux du cloud computing. Il permet la rationalisation des coûts et l&#8217;élimination du gaspillage en exploitation, licences, &#8230;</p><p>Et comme  il y a toujours un &laquo;&nbsp;Mais&nbsp;&raquo;, celui du cloud computing a toujours été la sécurité des données et dans une moindre mesure le lock-in par rapport aux fournisseurs. Ce qui  a donné naissance à une nouvelle variante, les clouds privés. Les entreprises désireuses de tirer profit du concept et ne voulant pas confier leurs données stratégiques à Amazon, Google et consorts, ont opté pour cette alternative. Elles gardent ainsi la main sur l&#8217;exploitation et la gouvernance de leurs infrastructures existantes tout en les mutualisant entre leurs différentes filiales.</p><p>Les premières applications à avoir été mises dans les nuages ont été les commodités telles que les solutions de stockage, les CRM, quelques modules d&#8217;ERP (par exemple l&#8217;offre Business ByDesign de SAP)&#8230;</p><h3><a
name="QuelsargumentspourlesESBdansle"></a>Quels arguments pour les ESB dans les nuages ?</h3><p>À la suite de ce bref tour d&#8217;horizon, deux arguments semblent se dégager en faveur d&#8217;un déploiement des ESB dans le cloud :</p><ol><li>Les ESB, de par leur adoption de standards ouverts, pourraient être un jour considérés comme des commodités, ce qui en fait un bon candidat pour le cloud. Cependant, les tentatives de standardisation, telles que JBI, n&#8217;ont à ce jour pas rassemblé un nombre critique d&#8217;acteurs et l&#8217;offre actuelle du marché reste composée de solutions hétérogènes, adoptant des architectures différentes.</li><li>Un déploiement dans les nuages permettrait une intégration pervasive inter-SI, rendant les échanges entre les départements d&#8217;une même entreprise plus directs. Cela permet aussi de faciliter l&#8217;intégration des éventuelles nouvelles applications en mode SaaS avec le reste du parc applicatif.</li></ol><p>Par ailleurs, porter son bus dans les nuages induira des défis différents selon si l&#8217;on choisit un cloud privé ou public. Dans le premier cas, ils seront plutôt du côté de l&#8217;exploitation traditionnellement orientée vers la gestion des bases de données, des serveurs d&#8217;applications et des serveurs web et il faudra donc se munir d&#8217;un framework approprié pour la gestion d&#8217;ESB dans son cloud privé tel que Stratos. Dans le deuxième cas,  ils seront plus nombreux. On citera principalement, la sécurité, la gouvernance et l&#8217;ouverture des firewall afin de pouvoir communiquer avec une plate-forme publique externe.</p><h3><a
name="Perspectives"></a>Perspectives</h3><p>Les ESB dans les nuages ne sont qu&#8217;à leur début et la pertinence de ce portage est loin encore de faire l&#8217;unanimité. Certaines parties affirment même que les ESB n&#8217;ont pas leur place dans le cloud. Le débat promet d&#8217;être intéressant et animé.</p><h3><a
name="Rfrences"></a>Références</h3><ul><li><a
href="http://www.amazon.fr/syst%C3%A8me-dinformation-durable-refonte-progressive/dp/2746218291" title="Le systme dinformation durable" >Le système d&#8217;information durable</a></li><li><a
href="http://oreilly.com/catalog/9780596006754" title="Entreprise service bus" >Entreprise service bus</a></li><li><a
href="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1514427_mem1,00.html" title="ESBs in the cloud Tricky in the early going" >ESBs in the cloud: Tricky in the early going</a></li><li><a
href="http://www.ebizq.net/blogs/soainaction/2010/06/whats_next_for_the_esb_end_of.php" title="What's Next for the ESB? End of the Line, or Cloud Broker" >What&#8217;s Next for the ESB? End of the Line, or Cloud Broker</a></li><li><a
href="http://www.runmyprocess.com/fr/content/integration-saas" title="RunMyProcess" >RunMyProcess</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/09/02/des-esbs-et-des-nuages/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Devoxx &#8211; Jour 4 &#8211; Intégration pour le Web avec iBeans</title><link>http://blog.xebia.fr/2009/11/30/devoxx-jour-4-integration-pour-le-web-avec-ibeans/</link> <comments>http://blog.xebia.fr/2009/11/30/devoxx-jour-4-integration-pour-le-web-avec-ibeans/#comments</comments> <pubDate>Mon, 30 Nov 2009 14:51:22 +0000</pubDate> <dc:creator>Michaël Figuière</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[ibeans]]></category> <category><![CDATA[MuleSoft]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3446</guid> <description><![CDATA[Ross Mason a créé le projet Mule ESB en 2003 puis a fondé MuleSource, l&#8217;entreprise derrière ce populaire ESB Open Source. Après s&#8217;être cantonné pendant un temps au support de cet ESB, l&#8217;éditeur a récemment opéré une diversification de son portfolio et a été rebaptisé pour l&#8217;occasion MuleSoft. Ainsi les derniers mois ont vu l&#8217;apparition [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/20091119-DSC_1833.jpg" border="0" alt="" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> Ross Mason a créé le projet Mule ESB en 2003 puis a fondé MuleSource, l&#8217;entreprise derrière ce populaire ESB Open Source. Après s&#8217;être cantonné pendant un temps au support de cet ESB, l&#8217;éditeur a récemment opéré une diversification de son <em>portfolio</em> et a été rebaptisé pour l&#8217;occasion MuleSoft. Ainsi les derniers mois ont vu l&#8217;apparition de <a
href="http://www.mulesoft.com/tcat-server-enterprise-tomcat-application-server" title="Tcat Server" >Tcat Server</a>, une offre Tomcat pour entreprise, de <a
href="http://www.mulesoft.org/display/IBEANS/Home" title="iBeans" >iBeans</a>, et dernièrement de <a
href="http://www.mulesoft.com/mule-data-integrator-mapping-transformation" title="Mule Data Integrator" >Mule Data Integrator</a>.</p><p>Parmi ces nouveaux produits, iBeans est probablement le plus intriguant. Le principe même de ce <em>framework</em>: une solution d&#8217;intégration pour applications Web avec l&#8217;idée que les <em>iBeans</em> interviennent là où Mule ESB s&#8217;arrête.</p><p>Après <a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#iBeanslasolutiondintgrationpou" title="une apparition discrète" >une apparition discrète</a> en phase beta, MuleSoft dévoile peu à peu des informations sur iBeans depuis deux mois. C&#8217;est dans ce contexte que Ross Mason a présenté <a
href="http://www.mulesoft.org/display/IBEANS/Home" title="iBeans" >iBeans</a> à Devoxx 2009 à Anvers.</p><p>&nbsp;<br
/> <br
/>&nbsp;</p><h3><a
name="QuestcequuniBean"></a>Qu&#8217;est-ce qu&#8217;un iBean ?</h3><p>Un iBean est un composant similaire à ceux offerts par Spring ou EJB. Il se distingue par son rôle : il est uniquement dédié à une tâche d&#8217;intégration. Il sera ainsi responsable d&#8217;exposer une interface simple pour accéder à un service distant.</p><p>Ces tâches de développement sont habituellement effectuées à l&#8217;aide d&#8217;un ensemble d&#8217;APIs dans des composants généralistes. Le <em>framework</em> de MuleSoft se propose donc ici d&#8217;apporter un environnement spécifique à ce type de tâche.</p><p>Le rôle décrit ici semble au premier abord être celui d&#8217;un ESB. Les iBeans sont pourtant destinés à résider au sein d&#8217;une application Web. Ross Mason explique que lors du développement d&#8217;une telle application, il est souvent nécessaire de s&#8217;intégrer avec plusieurs services distants. Or, un ESB n&#8217;est pas toujours présent dans l&#8217;environnement de l&#8217;application pour la délester de ces tâches et lui fournir un service simple et facilement utilisable. Au-delà des services internes à l&#8217;entreprise, l&#8217;application peut aussi avoir besoin de consommer des services sur Internet tels que Twitter ou Amazon Web Services (AWS). Dans ces deux cas de figure, iBeans apporte une réponse en simplifiant l&#8217;intégration directement au niveau de l&#8217;application.</p><h3><a
name="Lerepositorycentral"></a>Le <em>repository</em> central</h3><p>Un des buts principaux des iBeans est d&#8217;être réutilisable, éventuellement au-delà des frontières de l&#8217;entreprise. Par exemple, un iBean permettant d&#8217;accéder à Twitter pourrait probablement être réutilisé dans la plupart des applications ayant besoin d&#8217;utiliser ce service. C&#8217;est pour cette raison que MuleSoft a mis en place un <em>repository</em> central pour que les développeurs puissent partager les iBeans qu&#8217;ils créent.</p><p>Dans la pratique, il s&#8217;agit d&#8217;un <a
href="https://svn.muleforge.org/ibeans-contrib/" title="repository Subversion" >repository Subversion</a> sur lequel des iBeans peuvent être publiés. Les iBeans sont alors mis à disposition sous forme d&#8217;artefacts Maven.</p><h3><a
name="Architecture"></a>Architecture</h3><p>Les iBeans sont des composants ayant un cycle de vie distinct du conteneur applicatif (Spring, Guice, &#8230;) auquel ils s&#8217;intègrent. Ainsi, chaque injection d&#8217;iBean entraîne la création d&#8217;une nouvelle instance.</p><p>Ces composants sont développés à l&#8217;aide d&#8217;annotations qui permettent de s&#8217;intégrer à des <em>channels</em>. Chaque <em>channel</em> apporte le support d&#8217;un protocole particulier. Actuellement les <em>channels</em> disponibles sont : HTTP / REST, JMS, FTP, SMTP, POP3, JDBC et XMPP. D&#8217;autres types de <em>channels</em> arriveront à l&#8217;avenir, et il est bien sûr possible d&#8217;en développer soi-même.</p><p>La particularité est que le <em>framework</em> n&#8217;est pas destiné à être intégré dans le <code>war</code> de l&#8217;application Web, mais directement au sein de Tomcat. Ross Mason le justifie principalement par la mutualisation que cela permet.</p><h3><a
name="CrationdesiBeans"></a>Création des iBeans</h3><p>Le <em>framework</em> iBeans propose au développeur un ensemble d&#8217;annotations pouvant être utilisées pour créer de nouveaux iBeans facilement. Un iBeans peut invoquer un service synchrone et recevoir ou envoyer un message asynchrone.</p><h4><a
name="Invoquerunservice"></a>Invoquer un service</h4><p>L&#8217;invocation d&#8217;un service distant est simple avec iBeans. L&#8217;exemple suivant montre comment invoquer l&#8217;API REST de Twitter :</p><pre class="brush: java; title: ; notranslate">
public interface MyTwitterIBean {
    @Call(uri=&quot;http://twitter.com/statuses/show/{id}.json&quot;)
    String statusesShow(@UriParam(&quot;id&quot;) String id);
}
</pre><p>Il s&#8217;agit d&#8217;une simple interface avec une méthode. L&#8217;annotation <code>@Call</code> sera détectée par le <em>framework</em> qui trouvera le paramètre d&#8217;URL à utiliser grâce à l&#8217;annotation <code>@UriParam</code>.</p><h4><a
name="Envoyerunmessage"></a>Envoyer un message</h4><p>Il est également possible d&#8217;envoyer un message asynchrone. L&#8217;exemple suivant montre comment programmer un envoi régulier de messages JMS :</p><pre class="brush: java; title: ; notranslate">
public class JmsScheduleSendBean
{
    private AtomicInteger count = new AtomicInteger(1);
    @Schedule(interval = 1000)
    @Send(config = &quot;jms-publish&quot;)
    public Object send()
    {
        return &quot;New Message &quot; + count.getAndIncrement();
    }
}
</pre><p>L&#8217;annotation <code>@Send</code> indique que l&#8217;objet retourné par la méthode doit être envoyé sur la <em>queue</em> JMS <code>jms-publish</code>. L&#8217;annotation <code>@Schedule</code> programme une invocation de la méthode toutes les secondes.</p><h4><a
name="Recevoirunmessage"></a>Recevoir un message</h4><p>Enfin, il est possible de recevoir un message asynchrone. Toujours dans le cas de JMS, la réception de message s&#8217;effectue grâce à l&#8217;annotation <code>@Receive</code> :</p><pre class="brush: java; title: ; notranslate">
public class JmsReceiveAndSendBean
{
    @Receive(config = &quot;jms-receive&quot;)
    @Send(config = &quot;jms-result&quot;)
    public String receive(String message)
    {
        return message + &quot; Received&quot;;
    }
}
</pre><p>Dans cet exemple, les messages reçus sur la <em>queue</em> <code>jms-receive</code> entraineront l&#8217;invocation de la méthode <code>receive()</code> avec le contenu du message JMS en argument. Des <em>transformers</em> seront utilisés pour effectuer une éventuelle adaptation de type. Enfin, la chaîne de caractère retournée par la méthode sera ici renvoyée en tant que message sur la <em>queue</em> <code>jms-result</code>.</p><h4><a
name="Transformers"></a><em>Transformers</em></h4><p>Afin d&#8217;effectuer des conversions de type automatiques, il est possible de définir des <em>transformers</em>. Là aussi, c&#8217;est grâce à une annotation que cette définition va se faire. L&#8217;exemple suivant montre un <em>transformer</em> simple :</p><pre class="brush: java; title: ; notranslate">
public class SimpleTransformer {
    @Transformer
    URL toUrl(String string) throws MalformedURLException {
        return new URL(string);
    }
}
</pre><p>Il n&#8217;est pas nécessaire d&#8217;inscrire cette classe auprès du <em>framework</em>, celui-ci se chargera de la découvrir grâce à son annotation et déduira les entrées et sorties de la transformation à l&#8217;aide des paramètres d&#8217;entrée et de sortie de la méthode.</p><p>L&#8217;utilisation du <em>transformer</em> se fera également automatiquement dans les iBeans lorsque le type reçu par un service et le type renvoyé par sa méthode correspondante ne sont pas compatibles.</p><h4><a
name="Intgrationauxframeworksapplica"></a>Intégration aux <em>frameworks</em> applicatifs</h4><p>iBeans peut s&#8217;intégrer aux conteneurs d&#8217;injections de dépendances courants tels que Spring et Guice. De par le choix architectural qui a été fait de le destiner uniquement à Tomcat, l&#8217;intégration à EJB n&#8217;est assez logiquement pas possible.</p><p>Une fois la configuration effectuée, les composants applicatifs peuvent se faire injecter un iBean à l&#8217;aide de l&#8217;annotation <code>@IntegrationBean</code>.</p><h4><a
name="IntgrationJavacript"></a>Intégration Javacript</h4><p>Cette possibilité est originale pour un <em>framework</em> d&#8217;intégration mais n&#8217;est pas sans rappeler <a
href="http://directwebremoting.org/" title="DWR" >DWR</a> et <a
href="http://docs.jboss.org/seam/1.1GA/reference/en/html/remoting.html" title="Seam Remoting" >Seam Remoting</a>. Il s&#8217;agit ici de pouvoir invoquer un iBean déployé sur un serveur depuis le navigateur, en Ajax, via un appel Javascript. L&#8217;exemple ci-dessous montre une telle invocation :</p><pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
    var ibeans = new IBeansClient();
    creds = ibeans.config.get(&quot;twitter.user&quot;, &quot;twitter.pass&quot;);
    ibeans.twitter.setCredentials(creds[0], creds[1]);
    ibeans.twitter.getFriendTimeline(readTweets);
    funtion readTweets(tweets, error) {
        // do stuff
    }
&lt;/script&gt;
</pre><h3><a
name="LefuturpouriBeans"></a>Le futur pour iBeans</h3><p>Les possibilités offertes par iBeans sont intéressantes, mais le projet n&#8217;en est qu&#8217;à ses débuts. Ross Mason annonce de nombreuses possibilités supplémentaires à venir :</p><ul><li>Intégration à GWT / GXT, Grail, Play framework, JSF, et Struts 2</li><li>Support des Web Services avec JAX-WS et JAX-RS</li><li>Configuration centralisée</li><li>Mule ESB 3.0 sera capable d&#8217;embarquer iBeans ce qui permettra une capitalisation plus importante sur les composants développés</li><li>iBeans s&#8217;intégrera avec <a
href="http://www.mulesoft.com/mule-data-integrator-mapping-transformation" title="Mule Data Integrator" >Mule Data Integrator</a>, la solution graphique de <em>mapping</em> de données sous Eclipse proposée par MuleSoft</li></ul><h3><a
name="Conclusion"></a>Conclusion</h3><p>Les tâches qu&#8217;iBeans permet de réaliser ne sont pas inédites : elles pouvaient déjà être effectuées au sein d&#8217;un ESB. Son positionnement de solution d&#8217;intégration pour application Web le différencie de ce type de produit, mais il va tout de même à la rencontre des <em>lightweight</em> ESB, tels que Spring Integration et Apache Camel, <a
href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/" title="qui se dveloppent depuis plusieurs annes" >qui se développent depuis plusieurs années</a>.<br
/> On pourra malgré tout trouver l&#8217;API proposée par iBeans plus agréable que celle de ces deux concurrents directs dans le cadre d&#8217;intégrations au sein d&#8217;applications Web. Mais c&#8217;est surtout la ré-utilisabilité des iBeans qui semble réussie : les interfaces annotées peuvent très facilement être encapsulées dans un artefact Maven, pour être ensuite importées en dépendance dans les applications intéressées, puis injectées dans les composants métiers, sans configuration additionnelle.</p><p>Le choix de MuleSoft d&#8217;intégrer iBeans directement à Tomcat peut surprendre. On s&#8217;attendrait plutôt à retrouver ce <em>framework</em> au sein du <code>war</code> de l&#8217;application. Ross Mason reste flou sur les raisons de ce choix. Si des raisons techniques peuvent le justifier, on peut surtout imaginer des raisons commerciales : l&#8217;éditeur distribue ainsi iBeans avec Tcat Server et dispose , avec Mule ESB, de deux produits très séduisants pour l&#8217;entreprise.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/30/devoxx-jour-4-integration-pour-le-web-avec-ibeans/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/</link> <comments>http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#comments</comments> <pubDate>Mon, 13 Jul 2009 15:53:20 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[GChart]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[jBPM]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2541</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA GChart 2.5 pour GWT SOA jBPM 4.0 est disponible Avez-vous besoin d&#8217;un ESB ? Le coin de la technique Making Good Software, bonnes pratiques du développement logiciel Evènements de notre communauté en France et à l&#8217;étranger Sun fait évoluer sa certification programmer RIA [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#GChartpourGWT">GChart 2.5 pour GWT</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#jBPMestdisponible">jBPM 4.0 est disponible</a></li><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#AvezvousbesoindunESB">Avez-vous besoin d&#8217;un ESB ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#MakingGoodSoftwarebonnespratiq">Making Good Software, bonnes pratiques du développement logiciel</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#Sunfaitvoluersacertificationpr">Sun fait évoluer sa certification <em>programmer</em></a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GChartpourGWT"></a>GChart 2.5 pour GWT</h4><p>Afficher des résultats sous forme d&#8217;histogramme ou de camembert se résume pour  bon nombre de projets Java à l&#8217;import de <a
href="http://www.jfree.org/jfreechart/" title="JFreeChart" >JFreeChart</a>, la librairie de référence pour faire des diagrammes en Java (<a
href="http://www.jfree.org/jfreechart/jfreechart-1.0.13-demo.jnlp" title="dmo" >démo</a>).</p><p>Pour les projets GWT, une autre API fait beaucoup parler d&#8217;elle en ce moment (entre autres sur <a
href="http://ajaxian.com/archives/gchart-25-faster-sharper-canvas-rendered-pie-line-and-area-charts" title="Ajaxian" >Ajaxian</a> et <a
href="http://www.ongwt.com/post/2009/07/03/Client-side-GChart-25" title="onGWT" >onGWT</a>) et cette API est <a
href="http://code.google.com/p/gchart/" title="GChart 25" >GChart 2.5</a>. Son objectif est simple : réaliser rapidement de beaux graphiques.</p><p>Une <a
href="http://gchart.googlecode.com/svn/trunk/live-demo/v2_5/com.googlecode.gchart.gchartdemoapp.GChartDemoApp/GChartDemoApp.html" title="démo" >démo</a> nous montre les capacités de l&#8217;outil en termes de rapidité d&#8217;affichage. Le code source de chaque exemple est aussi disponible (<a
href="http://gchart.googlecode.com/svn/trunk/live-demo/v2_5/com.googlecode.gchart.gchartdemoapp.GChartDemoApp/GChartExample11.txt" title="source" >source</a> du graphique <em>Estimated Future Oil Prices</em>).</p><p>Pour la release note technique (plus de compatibilité GWT 1.4, navigateurs testés, objets et méthodes dépréciés, bugfix&#8230;), tout se trouve sur cette <a
href="http://gchart.googlecode.com/svn/trunk/doc/com/googlecode/gchart/client/doc-files/gchart2p5features.html" title="page" >page</a>. Il ne reste plus qu&#8217;à <a
href="http://code.google.com/p/gchart/downloads/list" title="tester" >tester</a> ! Les retours d&#8217;expériences sont bienvenus dans les commentaires.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="jBPMestdisponible"></a>jBPM 4.0 est disponible</h4><p>Tom Baeyens <a
href="http://processdevelopments.blogspot.com/2009/07/jbpm-40-is-out.html" title="annonce sur son blog" >annonce sur son blog</a> la disponibilité de la version finale de jBPM 4.0 respectant ainsi le <a
href="http://blog.xebia.fr/2009/04/06/revue-de-presse-xebia-103/#LecalendrierseconfirmepourjBPM" title="calendrier prvu" >calendrier prévu</a>.</p><p>jBPM n&#8217;avait pas connu d&#8217;évolution majeure depuis 2005, cette nouvelle version constitue donc un évènement majeur pour les utilisateurs de jBPM. Les nouveautés apportées sont importantes :</p><ul><li>Nouvelle version du plugin Eclipse (GPD) permettant la définition graphique de processus suivant la notation <a
href="http://fr.wikipedia.org/wiki/Business_Process_Modeling_Notation" title="BPMN" >BPMN</a></li><li>Introduction de <a
href="http://docs.jboss.com/jbpm/pvm/article/" title="JBoss PVM" >JBoss PVM</a> (Process Virtual Machine), un moteur de <em>workflow</em> générique utilisé par jBPM pour l&#8217;implémentation des différents langages de définition de processus qu&#8217;il propose (jPDL, BPEL et Pageflow)</li><li>Refonte des schémas de base de données utilisés pour les rendre plus évolutifs</li><li>Intégration native à Spring</li><li>Amélioration des performances</li><li>Simplification de l&#8217;installation</li></ul><p>Cette nouvelle version est d&#8217;ores et déjà disponible sur le <a
href="http://repository.jboss.com/maven2/org/jbpm/jbpm4/" title="repository Maven de JBoss" ><em>repository</em> Maven de JBoss</a>. Par ailleurs, l&#8217;ensemble des apports de jBPM 4 seront passés en revue lors du <a
href="http://www.jbossworld.com/" title="JBoss World 2009" >JBoss World 2009</a> en septembre prochain, ainsi qu&#8217;à <a
href="http://www.devoxx.com/display/DV09/jBPM4+in+Action" title="Devoxx 09" >Devoxx 09</a> en novembre.</p><h4><a
name="AvezvousbesoindunESB"></a>Avez-vous besoin d&#8217;un ESB ?</h4><p>Ross Mason, <a
href="http://www.mulesource.org/display/COMMUNITY/Home" title="fondateur de MuleSource" >fondateur de MuleSource</a> a publié sur son blog <a
href="http://blog.mulesource.org/2009/07/to-esb-or-not-to-esb" title="une liste de points à vérifier avant de mettre en place un ESB" >une liste de points à vérifier avant de mettre en place un ESB</a>. L&#8217;article, au titre plutôt racoleur (To ESB or not to ESB), à fait du bruit sur Twitter. D&#8217;ailleurs, en aparté, pour avoir nous-mêmes fait circuler ce lien, nous avons été surpris d&#8217;avoir été répondu par un certain <a
href="http://twitter.com/shakesp/status/2454701331" title="shakesp" >@shakesp</a>.</p><p>Pour en revenir au cœur du sujet, les points qui nous semblent intéressants sont simples à retenir :</p><ul><li>Commencez à penser à un ESB pour intégrer 3 applications, à plusieurs ESB si vous en avez plus que 10</li><li>Avez-vous absolument besoin de plusieurs protocoles de communications ?</li><li>Avez-vous de réels besoins d&#8217;intégration ? Découpage, routing, agrégation de messages &#8230;</li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="MakingGoodSoftwarebonnespratiq"></a>Making Good Software, bonnes pratiques du développement logiciel</h4><p>Une fois n&#8217;est pas coutume, nous vous proposons cette semaine la découverte d&#8217;un blog tout récemment ajouté dans nos RSS : <a
href="http://www.makinggoodsoftware.com" title="Making Good Software" >Making Good Software</a>. Ce blog établit des listes de bonnes (et mauvaises) pratiques du développement logiciel. Non pas que son contenu soit extraordinaire, puisque vous en connaissez probablement déjà les plus gros points, mais il a le mérite de les rappeler : toute ressemblance avec personnes existantes ou ayant existé ne suivant pas ces règles ne saurait être que fortuite <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Dans un premier article, une liste des <a
href="http://www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mistakes-made-by-programmers/" title="5 erreurs non techniques" >5 erreurs non techniques</a> les plus répandues chez les développeurs, dont nos 2 préférés qui vous feront probablement penser à quelqu&#8217;un de votre open-space:</p><ul><li>Ego surdimensionné : &nbsp;&raquo; je suis le meilleur développeur au monde, et ça me permet d&#8217;avoir toujours raison &nbsp;&raquo; (ou la fameuse conversation à sens unique)</li><li>Manque de discipline : &nbsp;&raquo; j&#8217;essaye de tout faire en même temps, mais je ne termine jamais rien &nbsp;&raquo; (définition de <em>done</em> plus que douteuse)</li></ul><p>Un autre article vous donne une liste de <a
href="http://www.makinggoodsoftware.com/2009/06/04/10-commandments-for-creating-good-code/" title="10 points  suivre pour crire du bon code" >10 points à suivre pour écrire du bon code</a> :</p><ul><li>Factorisez votre code, pour simplifier la correction d&#8217;anomalies et le refactoring</li><li>Ecrivez des méthodes les plus courtes possibles</li><li>Travaillez le nom des vos objets, variables et méthodes, il s&#8217;agit de la meilleure des documentations</li><li>Une seule responsabilité par classe,</li><li>Travaillez l&#8217;organisation de votre code, par groupes physiques de fichiers et groupes logiques de fonctions</li><li>Faites des tests unitaires, quand vous aurez fini, faites-en encore plus <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></li><li>Refactorez le plus tôt et le plus souvent possible</li><li>Auto-documentez votre code</li><li>Privilégiez le code par interface</li><li>Faites des revues de code régulières</li></ul><p>Dans un autre article l&#8217;auteur décrit une matrice permettant de <a
href="http://www.makinggoodsoftware.com/2009/06/30/types-of-code-how-to-rate-your-code-from-a-to-f/" title="noter votre code" >noter votre code</a> en fonction de sa simplicité et de son extensibilité.</p><p>Et pour finir, histoire de ne pas commenter l&#8217;ensemble des billets du blog, les <a
href="http://www.makinggoodsoftware.com/2009/06/14/7-steps-to-fix-an-error/" title="7 tapes pour corriger un bug" >7 étapes pour corriger un bug</a> : de la recherche de l&#8217;erreur, à l&#8217;analyse des dommages collatéraux.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Sunfaitvoluersacertificationpr"></a>Sun fait évoluer sa certification <em>programmer</em></h4><p>Sun  teste  une nouvelle version de sa certification SCJP (Sun Certified Java Programmer). La grosse nouveauté de cette révision : l&#8217;examen contiendra dorénavant une partie programmation. Cette certification, que certains appellent &#8216;pensez comme un compilateur Java&#8217; évolue donc pour adopter une approche plus pragmatique.</p><ul><li>Les demandes d&#8217; <a
href="https://dct.sun.com/dct/forms/reg_us_2206_429_0.jsp" title="inscription (gratuites) aux examens <em>beta</em> sont ouvertes&nbsp;&raquo; >inscription (gratuites) aux examens <em>beta</em> sont ouvertes</a> pour cette nouvelle certification , Sun Java Programmer Plus Certification de son petit nom, la sélection des candidats aura lieu ce 22 juillet</li><li>Discussions sur Java Ranch : <a
href="http://www.coderanch.com/t/452870/Programmer-Certification-SCJP/certification/New-Sun-Java-Programmer-Plus" title="New Sun Java Programmer Plus Certification" >New Sun Java Programmer Plus Certification</a>, <a
href="http://www.coderanch.com/t/452410/Programmer-Certification-SCJP/certification/Sun-Java-Programmer-Plus-Certification" title="SCJP vs SJPPC" >SCJP vs SJPPC</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/</link> <comments>http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#comments</comments> <pubDate>Mon, 11 May 2009 16:48:58 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[@Inject]]></category> <category><![CDATA[annotation]]></category> <category><![CDATA[Datagrid]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[Fuji]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[JSon]]></category> <category><![CDATA[JSR-299]]></category> <category><![CDATA[OpenESB]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[Tapestry]]></category> <category><![CDATA[Wicket]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1985</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. SOA Fuji, le futur d&#8217;OpenESB Le coin de la technique Concevoir des APIs efficaces JavaFX : informations et controverses Sortie de Wicket 1.3.6 @Inject standardisation de l’injection de dépendances Sortie de Tapestry 5.1 Trucs et astuces Json &#8211; Restfull Evènements de notre communauté en [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#FujilefuturdOpenESB">Fuji, le futur d&#8217;OpenESB</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#ConcevoirdesAPIsefficaces">Concevoir des APIs efficaces</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#JavaFXinformationsetcontrovers">JavaFX : informations et controverses</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SortiedeWicket">Sortie de Wicket 1.3.6</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#Inject">@Inject standardisation de l’injection de dépendances</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SortiedeTapestry">Sortie de Tapestry 5.1</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#TrucsetastucesJsonRestfull">Trucs et astuces Json &#8211; Restfull</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SoireDatagridauParisJug">Soirée Datagrid au Paris Jug</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="FujilefuturdOpenESB"></a>Fuji, le futur d&#8217;OpenESB</h4><p>La prochaine version d&#8217;OpenESB, qui sera estampillée &#8216;v3&#8242;, est en cours de développement sous le nom de code &#8216;Project Fuji&#8217;. Ce projet a été récemment mis en avant par Andi Egloff, dans <a
href="http://www.java-tv.com/2009/05/07/fuji-the-next-generation-of-openesb/" title="un webcast" >un webcast</a> qui fait le tour des nombreuses nouveautés. Les principales d&#8217;entre elles sont :</p><ul><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=IntegrationFlowLanguageOverview" title="Integration Flow Language (IFL)" >Integration Flow Language (IFL)</a> : il s&#8217;agit d&#8217;un <a
href="http://martinfowler.com/bliki/DomainSpecificLanguage.html" title="DSL externe" >DSL externe</a> permettant de définir des flux d&#8217;intégrations. Le rôle de ce langage est donc le même que le DSL interne offert par Apache Camel.</li><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiDJBI" title="Distributed JBI" >Distributed JBI</a> : La spécification JBI (<a
href="http://www.jcp.org/en/jsr/detail?id=208" title="JSR208" >JSR-208</a>) ne couvre pas la problématique de distribution des composants JBI sur plusieurs noeuds. Fuji apporte une extension propriétaire pour permettre cette distribution.</li><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiRunningOJCComponentsOSGi" title="Utilisation de composants OpenJBI" >Utilisation de composants OpenJBI</a> : ces composants seront utilisables directement dans OpenESB v3. Le projet prévoit de mettre les composants dont la compatibilité aura été validée dans le <em>repository</em> Maven du projet.</li><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiEIP" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a> : un certain nombre d&#8217;EIP sera supporté en standard et configurable via le langage IFL.</li></ul><p>La version finale d&#8217;OpenESB v3 est prévue pour le second semestre 2009, l&#8217;équipe du projet annonce une probable <em>preview</em> pour JavaOne en juin.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ConcevoirdesAPIsefficaces"></a>Concevoir des APIs efficaces</h4><p>John De Goes vient de publier une série de deux articles (<a
href="http://jdegoes.squarespace.com/journal/2009/5/2/good-api-design-part-1.html" title="première partie" >première partie</a> et <a
href="http://jdegoes.squarespace.com/journal/2009/5/6/good-api-design-part-2.html" title="deuxime partie" >deuxième partie</a>) portant sur les bonnes pratiques de conception d&#8217;APIs. Il s&#8217;appuie sur un exemple d&#8217;API de configuration pour illustrer son propos. Les points qu&#8217;il met particulièrement en avant sont :</p><ul><li>Il est important de sélectionner le niveau d&#8217;abstraction approprié et d&#8217;assurer l&#8217;uniformité de celui-ci sur l&#8217;ensemble de l&#8217;API, ainsi que de définir et respecter une responsabilité pour chaque classe. Ceci concerne la granularité des méthodes, le type d&#8217;objets manipulés en entrée et en sortie, ainsi que la présence et le type d&#8217;exception éventuellement renvoyée.</li><li>N&#8217;offrir qu&#8217;une seule possibilité pour chaque besoin, afin d&#8217;éviter la confusion chez l&#8217;utilisateur de cette API.</li><li>S&#8217;appuyer sur les possibilités offertes par le langage pour empêcher certaines mauvaises utilisations d&#8217;une API.</li><li>L&#8217;API doit être la plus intuitive possible afin de minimiser autant que possible le besoin pour l&#8217;utilisateur d&#8217;avoir à se plonger dans une documentation.</li></ul><p>Certaines de ces idées sont déjà partagées par de nombreux développeurs, mais comme c&#8217;est souvent le cas dans l&#8217;énonciation de bonnes pratiques ou de <em>patterns</em>, tout l&#8217;intérêt réside ici dans la formalisation apportée par l&#8217;auteur.</p><p>Les lecteurs intéressés par cette problématique pourront se tourner vers le livre de Jaroslav Tulach, <a
href="http://apress.com/book/view/1430209739" title="Practical API Design" >Practical API Design</a>, qui apporte l&#8217;intéressant retour d&#8217;expérience d&#8217;un architecte de NetBeans, ou encore <a
href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" title="How to Design a Good API and Why it Matters" >How to Design a Good API and Why it Matters</a> par Joshua Bloch (auteur de <a
href="http://java.sun.com/docs/books/effective/" title="Effective Java" >Effective Java</a>).</p><h4><a
name="JavaFXinformationsetcontrovers"></a>JavaFX : informations et controverses</h4><p>Depuis plusieurs mois, nous vous rapportons les différentes <a
href="http://blog.xebia.fr/2009/02/16/revue-de-presse-xebia-96/#JavaFxsurmobile" title="informations" >informations</a> et <a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#LepositionnementdeJavaFXtoujou" title="controverses" >controverses</a> à propos de JavaFX. Cette technologie RIA, développée par Sun, et introduite en décembre 2008 fait beaucoup parler d&#8217;elle car personne ne sait dire aujourd&#8217;hui ce qu&#8217;il adviendra de JavaFX dans les mois et années à venir.</p><p>Les propos particulièrement négatifs dont JavaFX a été victime à ses débuts se font moins nombreux, non pas parce que cette technologie a convaincu, mais parce qu&#8217;elle n&#8217;est plus au centre des débats. En fait, ceci est bénéfique puisque cela permet d&#8217;observer plus sereinement les différents exemples postés régulièrement par la communauté JavaFX naissante. Il ressort de ce tour d&#8217;horizon que les capacités actuelles de JavaFX ne prêtent pas à critique : les fonctionnalités de graphisme et d&#8217;animations qui sont offertes <a
href="http://java.dzone.com/articles/javafx-im-starting-believe" title="semblent satisfaire" >semblent satisfaire</a> de nombreux développeurs. Le problème porte principalement sur les manques et les promesses non tenues à ce jour :</p><ul><li>la portabilité de JavaFX sur plusieurs environnements (_desktop_, web, mobile, et TV, le fameux &#8216;<em>All the screens of your life</em>&#8216;) n&#8217;est pas assuré puisque le déploiement est impossible sur mobile, faute de <em>device</em> compatible. Le fonctionnement sur téléviseur est lui toujours prévu dans une version ultérieure.</li><li>les composants graphiques de haut niveau sont absents. Il s&#8217;agit pourtant d&#8217;un élément indispensable pour le développement d&#8217;applications RIA.</li></ul><p>Joshua Marinacci, un des meneurs de JavaFX chez Sun, a été interviewé par Scott Hanselman <a
href="http://www.hanselminutes.com/default.aspx?showID=178" title="dans un podcast" >dans un podcast</a>. Il annonce que la démonstration de JavaFX sur TV <em>pourrait</em> être faite lors de JavaOne 2009, en juin. Il reconnaît par ailleurs le marketing excessif entourant cette technologie.</p><p>Outre ces réflexions d&#8217;ordre technique, le rachat de Sun par Oracle constitue une autre source de débats. Personne ne sait quelle décision Oracle prendra quant à JavaFX : soutenir ce projet qui nécessite encore un investissement lourd pour prétendre réellement concurrencer les autres acteurs RIA ou abandonner ce marché. Les différentes opinions sur ce sujet sont présentées et argumentées dans <a
href="http://lescastcodeurs.com/2009/05/les-cast-codeurs-podcast-episode-3/" title="le dernier podcast" >le dernier podcast</a> des Cast Codeurs.</p><h4><a
name="SortiedeWicket"></a>Sortie de Wicket 1.3.6</h4><p><a
href="http://wicket.apache.org/" title="Wicket" >Wicket</a>, le framework orienté composant de la <em>Fondation Apache</em>, sort en version <a
href="http://wicket.apache.org/news.html#News-wicket1.3.6" title="1.3.6" >1.3.6</a> (1.4 toujours en <a
href="http://www.apache.org/dyn/closer.cgi/wicket/1.4-rc2" title="release candidate 2" >release candidate 2</a>).</p><p>Malgré les 7 mois d&#8217;écart avec la version précédente, il ne faut pas s&#8217;attendre à une révolution pour cette nouvelle mouture. Il s&#8217;agit en effet d&#8217;une version de stabilisation et d&#8217;amélioration. On notera donc de nombreux <a
href="http://wicket.apache.org/news.html#News-Bug" title="correctifs de bugs" >correctifs de bugs</a> et <a
href="http://wicket.apache.org/news.html#News-Improvement" title="plusieurs amliorations" >plusieurs améliorations</a>.</p><p>Cette version est téléchargeable sur le <a
href="http://www.apache.org/dyn/closer.cgi/wicket/1.3.6" title="site dApache" >site d&#8217;Apache</a> ou en changeant votre version de <em>pom.xml</em> en 1.3.6.</p><p>A noter, toujours autour de Wicket, le retour critique de <a
href="http://www.tomsquest.com" title="Tom's Quest" >Tom&#8217;s Quest</a> sur <a
href="http://www.tomsquest.com/blog/les-limites-de-wicket/" title="Wicket et ses limites" >Wicket et ses limites</a> après la présentation, chez Zenika, de Martin Dashorst, un des committers principaux de Wicket et coauteur du livre <a
href="http://wicketinaction.com/" title="Wicket In Action" >Wicket In Action</a>.</p><h4><a
name="Inject"></a>@Inject standardisation de l’injection de dépendances</h4><p>Pas mal de bruit la semaine dernière dans la blogosphère Java avec l&#8217;annonce par Google et <a
href="http://www.springsource.com/" title="SpringSource" >SpringSource</a> d&#8217;une nouvelle proposition de JSR dédiée à l&#8217;injection de dépendances : <a
href="http://code.google.com/p/atinject/" title="@Inject ("Annotations for Dependency Injection")" >@Inject (&laquo;&nbsp;Annotations for Dependency Injection&nbsp;&raquo;)</a>.<br
/> Comme le <a
href="http://google-code-updates.blogspot.com/2009/05/javaxinjectinject.html" title="souligne 'Crazy' Bob Lee" >souligne &#8216;Crazy&#8217; Bob Lee</a>, l&#8217;auteur principal de <a
href="http://code.google.com/p/google-guice/" title="Google Guice" >Google Guice</a>, la sortie de Spring 1.0, il y a déjà 5 ans, a apporté l&#8217;injection de dépendances aux masses, via un fichier de configuration propriétaire. Il y a 3 ans, Google Guice a proposé la même chose via des annotations (et SpringSource propose la même chose depuis Spring 2.5).<br
/> Si le succès de Google Guice est assez limité face au raz de marée Spring, le constat est là : il manque un standard. Comme les deux librairies ne sont pas compatibles, si vous exposez à un autre projet/équipe une librairie contenant des dépendances injectées par Google Guice, et que l&#8217;autre équipe utilise Spring, elle devra redéfinir tous les beans et leurs dépendances dans un fichier de configuration Spring (ou des annotations Spring).<br
/> @Inject propose donc de standardiser les annotations, afin de rendre portables sur différents frameworks (<a
href="http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/" title="Guice" >Guice</a>, Spring, <a
href="http://blog.xebia.fr/2009/04/24/commencer-linjection-de-dependances-avec-tapestry-ioc" title="Tapestry IOC" >Tapestry IOC</a>, etc.) des classes injectables.</p><p><a
href="http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances" title="@Inject standardisation de l’injection de dépendances" >Lire notre article à ce sujet : @Inject standardisation de l’injection de dépendances</a>.</p><h4><a
name="SortiedeTapestry"></a>Sortie de Tapestry 5.1</h4><p>Tapestry, dont on parlait récemment dans l&#8217;article <a
href="http://blog.xebia.fr/2009/04/24/commencer-linjection-de-dependances-avec-tapestry-ioc/" title="linjection de dpendances avec Tapestry IoC" >l&#8217;injection de dépendances avec Tapestry IoC</a>, passe en version 5.1 en respectant à la lettre son nouveau planning d&#8217;une version tout les 4 à 6 mois.<br
/> Outre les améliorations de performance et les nombreux bugs corrigés, la mise à jour embarque des nouveautés sur le support JavaScript, à la traîne par rapport au prédécesseur Tapestry 4.<br
/> Le rafraîchissement de plusieurs zones d&#8217;une page en une seule requête Ajax est maintenant supporté. Tapestry embarque maintenant la console JavaScript <a
href="http://www.gscottolson.com/blackbirdjs/" title="Blackbird" >Blackbird</a>.<br
/> Du côté des améliorations sur les templates, le chargement et le rendu des pages ont été optimisés, ce qui rend T5 plus rapide que jamais.<br
/> Vous pourrez aussi apprécier l&#8217;amélioration substantielle de l&#8217;archetype quickstart qui offre désormais une jolie interface, avec un design css intégré.<br
/> L&#8217;intégration de Spring est maintenant à double sens : on peut injecter des services Tapestry dans un Bean Spring.<br
/> Pour la prochaine version, qui sortira sans doute à la rentrée 2009, l&#8217;accent sera mis sur l&#8217;intégration de Spring Web Flow, et la possibilité d&#8217;utiliser une application Tapestry en tant que Portlet.</p><ul><li><a
href="http://tapestry.apache.org/tapestry5.1/release-notes.html" title="Release note" >Release note</a></li><li><a
href="http://tapestry.apache.org/tapestry5.1/" title="Site Maven du projet" >Site Maven du projet</a></li></ul><h4><a
name="TrucsetastucesJsonRestfull"></a>Trucs et astuces Json &#8211; Restfull</h4><p><a
href="http://www.linkedin.com/in/edwink" title="Edwin Khodabakchian" >Edwin Khodabakchian</a>, fondateur de Collaxa (aujourd&#8217;hui au coeur de la stratégie SOA d&#8217;Oracle), nous donne quelques <a
href="http://blog.feedly.com/2009/05/06/best-practices-for-building-json-rest-web-services/" title="bonnes pratiques pour crire des services web REST en utilisant Json" >bonnes pratiques pour écrire des services web REST en utilisant Json</a> (un couple qui a le vent en poupe). Actuellement lancé dans l&#8217;écriture de Feedly, une extension Firefox qui agrège des tweets et des entrés Google Reader, Edwin fera régulièrement profiter ses lecteurs de son expérience. Sans entrer dans les détails de ces bonnes pratiques, nous retiendrons l&#8217;astucieux découpage en 7 phases d&#8217;implémentation :</p><ul><li>Definir un service ou une ressource <strong>simple</strong> : définir le modèle Json et les 4 opérations REST et le servlet qui les fournit.</li><li>Ecrire un client : utiliser le service avec un javascript simple. Cette possibilité est offerte par de nombreux frameworks, dont JQuery.</li><li>Ajouter une étape de validation : modifier le service pour valider les ressources Json et utiliser les codes retour HTTP.</li><li>Complexifier les ressources : modifier la hiérarchie d&#8217;Url pour servir des ressources plus riches. Tester la pérennité des ressources simples (phase 2).</li><li>Ajouter un cache : améliorer les performances et la scalabilité de votre système.</li><li>Implémenter la sécurité : utiliser une authentification web.</li><li>Publier des événements business : pour découpler les processus REST des processus back-end. Les ressources REST sont traitées, un évènement business est lancé, qui déclenche le ou les traitements back-end.</li><li>Gérer un cycle de vie pour les ressources : coupler un état de la ressource avec la phase de validation et la phase de publication des évènements.</li></ul><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoireDatagridauParisJug"></a>Soirée Datagrid au Paris Jug</h4><p>Le <a
href="http://blog.xebia.fr/2009/05/06/paris-jug-soiree-grid-computing-le-12-mai/" title="DataGrid au Paris Jug" >DataGrid au Paris Jug</a>, c&#8217;est demain.<br
/> <a
href="http://www.jugevents.org/jugevents/event/16041" title="Pensez  rserver" >Pensez à réserver</a> si ce n&#8217;est déjà fait.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ServiceMix 3.2.x &#8211; Introduction à JBI</title><link>http://blog.xebia.fr/2008/08/01/servicemix-32x-introduction-a-jbi/</link> <comments>http://blog.xebia.fr/2008/08/01/servicemix-32x-introduction-a-jbi/#comments</comments> <pubDate>Fri, 01 Aug 2008 08:18:39 +0000</pubDate> <dc:creator>Manuel Eveno</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[JBI]]></category> <category><![CDATA[ServiceMix]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=537</guid> <description><![CDATA[Pour bien comprendre le fonctionnement de l&#8217;ESB ServiceMix, il faut tout d&#8217;abord se plonger dans la spécification de Java Business Integration (JBI). Java Business Integration est une norme édictée dans la JSR-208 : basée sur une approche orientée composant, JBI définit la manière de router les messages entre composants. Elle définit les composants et leur [...]]]></description> <content:encoded><![CDATA[<p>Pour bien comprendre le fonctionnement de l&#8217;ESB ServiceMix, il faut tout d&#8217;abord se plonger dans la spécification de Java Business Integration (JBI).</p><p>Java Business Integration est une norme édictée dans la <a
title="JSR-208" href="http://jcp.org/en/jsr/detail?id=208">JSR-208</a> : basée sur une approche orientée composant, JBI définit la manière de router les messages entre composants. Elle définit les composants et leur rôle, les messages qui circulent dans le bus, les canaux de communication entre les composants ainsi que les patterns d&#8217;échange.</p><p>ServiceMix est une implémentation de la norme JBI.</p><h3><a
name="ArchitecturedeJBI"></a>Architecture de JBI</h3><p>Le schéma ci-dessous présente l&#8217;architecture générale de JBI.</p><div
align="center"><img
src="http://blog.xebia.fr/wp-content/uploads/2008/08/architecture-jbi.gif" border="0" alt="" /></div><p>L&#8217;ensemble des éléments de ce schéma sera décrit dans la suite de cet article.</p><h3><a
name="Notiondecomposants"></a>Notion de composants</h3><h4><a
name="Catgoriesdecomposants"></a>Catégories de composants</h4><p>JBI définit deux types de composants : Les Binding Components (BC) et les Service Engines (SE).</p><ul><li> <strong>Les Binding Components (BC)</strong><br
/> Les Binding Components permettent l&#8217;accès depuis l&#8217;extérieur au bus JBI. Ils peuvent à la fois exposer des services ou consommer des services disponibles sur des applications hors de l&#8217;ESB.</li><li> <strong>Les Service Engines (SE)</strong><br
/> Les Services Engines exposent et consomment des services disponibles uniquement à l&#8217;intérieur du bus JBI. Ils ne peuvent accéder au monde extérieur.</li></ul><h4><a
name="LesrlesdescomposantsJBI"></a>Les rôles des composants JBI</h4><p>Un composant JBI peut proposer des services suivant deux types de rôles :</p><ul><li> <strong>Rôle &nbsp;&raquo; Provider &nbsp;&raquo; :</strong><br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Ce rôle est endossable par les Binding Components ou les Service Engines.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un service de type provider fournit des services exposés en interne du bus JBI.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Exemples :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un composant de transformation va offrir des services de transformations sur le bus JBI.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un composant Web Service va permettre d&#8217;invoquer un Web Service extérieur à partir du bus JBI.</li><li> <strong>Rôle &nbsp;&raquo; Consumer &nbsp;&raquo; :</strong><br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Ce rôle n&#8217;est endossable que par les Binding Components.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un service de type &nbsp;&raquo; consumer &nbsp;&raquo; écoute les messages provenant de l&#8217;extérieur et initie les échanges JBI à partir des messages qu&#8217;il reçoit.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Exemples :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un composant va exposer un Web Service vers l&#8217;extérieur et envoyer chaque message qu&#8217;il reçoit dans le bus JBI.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un composant va attendre des messages sur une file JMS et envoyer chaque message qu&#8217;il reçoit dans le bus JBI.</li></ul><p>Un composant peut fournir à la fois des services <em>consumer</em> et <em>provider</em>.</p><h3><a
name="Lescomposantsconteneursdeservi"></a>Les composants : conteneurs de services</h3><p>Les composants (BC &amp; SE) une fois installés dans le bus JBI proposent des services. Les composants proposent différents services en fonction de leur technologie.</p><p>Exemple : Le composant de type SE servicemix-saxon offre des services de transformation XSL et XQuery, le composant de type BC permet d&#8217;exposer et d&#8217;invoquer des services externes au bus JBI, etc.</p><p>Ces services doivent être en quelque sorte configurés et instanciés pour s&#8217;exécuter. Les composants agissent ainsi comme des conteneurs pour des instances de service.</p><p>Les instances des services sont packagées sous la forme de <em>Service Unit</em> (SU). Ces <em>services units</em> sont ensuite déployés dans le bus JBI qui va installer chaque instance dans le composant (BC ou SE) fournissant le service.</p><p>Les <em>services units</em> doivent être packagés sous la forme de <em>Service Assembly</em> (SA) pour être &laquo;&nbsp;déployable&nbsp;&raquo;.</p><p>JBI définit un packaging standard (une archive Zip) et des descripteurs (fichier jbi.xml) pour l&#8217;installation et le déploiement des composants afin de permettre leur portabilité sur tous les ESB conformes à sa spécification, sans modification. Le package d&#8217;installation contient tout ce qui est nécessaire à l&#8217;installation d&#8217;un composant (librairies &#8230;).</p><h3><a
name="InteractionentrelescomposantsS"></a>Interaction entre les composants ServiceMix</h3><h4><a
name="LeNormalizedMessageRouterNMR"></a>Le Normalized Message Router (NMR)</h4><p>JBI définit un concept de bus interne permettant la communication entre les composants : c&#8217;est le Normalized Message Router (NMR).</p><p>Les éléments qui composent ce NMR sont :</p><ul><li><strong>NormalizedMessage</strong> : Cette interface de la spécification définit la structure standard d&#8217;un message. Ce format est utilisé pour représenter un message en entrée ou en sortie ainsi qu&#8217;un message d&#8217;erreur. Les messages transitent forcément sous la forme de message XML (implémentant l&#8217;interface javax.xml.transform.Source). Un message peut aussi contenir des propriétés et des attachements (binaires ou non).</li><li><strong>MessageExchange</strong> : Cette classe représente un appel transitant à l&#8217;intérieur du bus JBI. L&#8217;échange contient le message d&#8217;entrée, l&#8217;éventuel message de sortie ou d&#8217;erreur (sous la forme de NormalizedMessage) et véhicule aussi les informations de l&#8217;appel (ex : destinataire) et le statut (actif, fini, en erreur). Il existe plusieurs types de MessageExchange, chacun suivant un pattern d&#8217;échange défini dans JBI.</li><li><strong>DeliveryChannel (DC)</strong> : JBI fournit à chaque composant (BC ou SE) un channel d&#8217;échange avec le NMR. Les composants utilisent ce channel pour échanger des messages au travers du NMR.</li></ul><p>L&#8217;implémentation des mécanismes de routage du NMR dépend de chaque solution d&#8217;implémentation de JBI. ServiceMix fournit une implémentation d&#8217;un NMR sous la forme de flow. Il existe trois types de flow dans ServiceMix : Le SedaFlow (défaut), le JMSFlow et la JCAFlow.</p><p>Le SedaFlow stocke les messages en mémoire, le JMSFlow utilise des queues JMS comme implémentation des DeliveryChannel et le JCAFlow se base sur un connecteur JCA pour stocker les messages.</p><h4><a
name="MessageExchangePatternMEP"></a>Message Exchange Pattern (MEP)</h4><p>JBI définit aussi des patterns d&#8217;échanges de message. Chaque composant supporte selon la technologie qu&#8217;il représente tout ou partie de ces patterns d&#8217;échanges.</p><p>Chaque MEP définit l&#8217;enchaînement, le sens et le nombre de messages échangés ainsi que l&#8217;évolution du statut de l&#8217;échange de manière précise.</p><p>Au travers du DeliveryChannel, les composants interagissent avec le NMR de deux façons :</p><ul><li>En acceptant des échanges (MessageExchange) : le composant reçoit un échange émis par un composant.</li><li>En envoyant des échanges (MessageExchange) : le composant initie ou poursuit un échange après avoir traité les messages de l&#8217;échange.</li></ul><p>Un Binding Component de type <em>consumer</em> initie un échange en créant une instance d&#8217;un objet MessageExchange et en le mettant à disposition des autres composants au travers du NMR. Un autre composant va accepter l&#8217;échange, effectuer un traitement puis envoyer l&#8217;échange (éventuellement mis à jour) vers le NMR, etc.</p><p>L&#8217;échange se termine quand l&#8217;un des composants positionne l&#8217;échange au statut &#8216;Done&#8217; ou &#8216;Error&#8217;.</p><p>Les échanges entre les composants sont décrits au travers des patterns suivants. Il existe 4 MEPs différents basés sur les types d&#8217;invocations One-way et Request-Response. Ils permettent de moduler les types de communications entre les composants :</p><ul><li><strong>In-Only (One-Way) :</strong> Le message est envoyé au destinataire. Aucun moyen n&#8217;est mis en œuvre pour s&#8217;assurer qu&#8217;il est bien arrivé ou non.</li><li><strong>Robust In-Only (One-Way) :</strong> Le message est envoyé au destinataire et un message (de type acknowledge) est retransmis à l&#8217;expéditeur en cas d&#8217;erreur.</li><li><strong>In-Out (Request-Response) :</strong> Un message nécessitant une réponse est envoyé au destinataire.</li><li><strong>In Optional-Out (Request-Response) :</strong> Un message est envoyé au destinataire et peut parfois nécessiter une réponse.</li></ul><p>En exemple voici, un échange de type InOut décrit par des diagrammes de séquence UML, le premier finissant normalement, le second finissant en erreur.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/08/pattern-inout-success.gif" border="0" alt="" /><br
/> <strong>Schéma d&#8217;un échange In Out se terminant normalement</strong><br
/> <br
/>&nbsp;<br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/08/pattern-inout-error.gif" border="0" alt="" /><br
/> <strong>Schéma d&#8217;un échange In Out se terminant en erreur</strong></div><p>Cette présentation de JBI se termine ici, prochainement nous étudierons quelques exemples de mise en œuvre avec ServiceMix.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/08/01/servicemix-32x-introduction-a-jbi/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Introduction à Spring Integration</title><link>http://blog.xebia.fr/2008/07/30/introduction-a-spring-integration/</link> <comments>http://blog.xebia.fr/2008/07/30/introduction-a-spring-integration/#comments</comments> <pubDate>Wed, 30 Jul 2008 12:20:03 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Spring Integration]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=495</guid> <description><![CDATA[Comme nous l&#8217;évoquions dans le billet &#171;&#160;Spring Integration &#8211; L&#8217;avènement des &#8216;lightweight ESB&#8217; ?&#160;&#187;, SpringSource a annoncé fin 2007 le lancement de Spring Integration, une implémentation légère des Enterprise Integration Patterns. Le projet est aujourd&#8217;hui dans sa phase finale (la version courante est 1.0.0.M4). Mark Fisher apporte les dernières touches à Spring Integration : bugfix, [...]]]></description> <content:encoded><![CDATA[<p>Comme nous l&#8217;évoquions dans le billet <em><a
href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/" title="Spring Integration - L'avènement des 'lightweight ESB' ?" >&laquo;&nbsp;Spring Integration &#8211; L&#8217;avènement des &#8216;lightweight ESB&#8217; ?&nbsp;&raquo;</a></em>, SpringSource a annoncé fin 2007 le <a
href="http://blog.springsource.com/main/2007/12/14/spring-integration-a-new-addition-to-the-spring-portfolio/" title="lancement de Spring Integration" >lancement de Spring Integration</a>, une implémentation légère des <a
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a>. Le projet est aujourd&#8217;hui dans sa phase finale <em>(la version courante est 1.0.0.M4)</em>. <a
href="http://blog.springsource.com/main/author/markf/" title="Mark Fisher" >Mark Fisher</a> apporte les dernières touches à Spring Integration : bugfix, refactoring, configuration, documentation, samples, &#8230;</p><p>L&#8217;occasion d&#8217;une introduction à cette plate-forme de messaging.</p><h3><a
name="Objectifsetprincipes"></a>Objectifs et principes</h3><p>Spring Integration vise à simplifier le développement de solutions d&#8217;intégration d&#8217;entreprise et à faciliter l&#8217;adoption par les utilisateurs de Spring des principes EDA <em>(Event Driven Architecture)</em>. Pour ce faire, les objectifs de Spring Integration sont :</p><ul><li>De fournir un modèle simple pour implémenter des <strong>solutions complexes d&#8217;intégration d&#8217;entreprise</strong>.</li><li>De faciliter la mise en place de <strong>modèles d&#8217;échanges asynchrones orientés messages</strong> au sein d&#8217;une application basée sur Spring.</li></ul><p>D&#8217;autre part, Spring Integration <em>(comme toutes les briques du portfolio Spring)</em> suit les principes suivants :</p><ul><li><strong>Couplage lâche</strong> entre composants pour faciliter la modularité et la testabilité.</li><li>Respect de la <strong>séparation des préoccupations</strong> <em>(separation of concerns)</em> entre la logique métier et la logique d&#8217;intégration.</li><li>Points d&#8217;extension abstraits mais clairement définis afin de <strong>promouvoir la réutilisation et la portabilité</strong>.</li></ul><h3><a
name="Lescomposants"></a>Les composants</h3><p>Le système de messaging proposé par Spring Integration suit le modèle <strong>&laquo;&nbsp;<a
href="http://www.enterpriseintegrationpatterns.com/PipesAndFilters.html" title="pipes-and-filters" >pipes-and-filters</a>&laquo;&nbsp;</strong>. Dans ce modèle, les filtres <em>(filters)</em> représentent n&#8217;importe quel composant capable de produire et / ou de consommer des messages. Les tubes <em>(pipes)</em> sont quant à eux responsables du transport des messages entre les filtres. Dans ce modèle, les composants sont ainsi faiblement couplés entre eux.</p><h4><a
name="Lesmessages"></a>Les messages</h4><p>Le composant central de Spring Integration est bien évidemment le message. Un message est un wrapper générique qui emballe n&#8217;importe quel objet java et un ensemble de méta-données <em>(utilisées par le framework pour prendre en charge cet objet)</em>.</p><p>Un message est donc constitué :</p><ul><li>D&#8217;un <strong>identifiant</strong> unique.</li><li>D&#8217;un <strong>en-tête</strong> <em>(header)</em> qui regroupe ses méta-données : Time stamp, date d&#8217;expiration, identifiant de corrélation, adresse de retour, &#8230;, couples arbitraires de clés / valeur.</li><li>De sa <strong>charge utile</strong> <em>(payload)</em> qui peut donc être n&#8217;importe quel objet java.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-message.png" border="0" alt="" /></div><p>Les messages sont définis par l&#8217;interface <code>Message&lt;T&gt;</code>. L&#8217;implémentation par défaut est fournie par la classe <code>GenericMessage&lt;T&gt;</code>. Deux implémentations spécialisées sont proposées : <code>StringMessage</code> <em>(message dont le payload est une <code>String</code>)</em> et <code>ErrorMessage</code> <em>(message dont le payload est un <code>Throwable</code>)</em>.</p><h4><a
name="Lessourcesetlestargets"></a>Les sources et les targets</h4><p>L&#8217;interfaçage entre le système de messaging et le monde extérieur se fait par le biais de sources et de targets.</p><p>En entrée, l&#8217;interface <code>Source&lt;T&gt;</code> définit un <strong>modèle d&#8217;adaptateur</strong> pour la conversion d&#8217;<code>Object</code> en <code>Message&lt;T&gt;</code>. Ainsi, les implémentations de l&#8217;interface <code>Source&lt;T&gt;</code> permettent l&#8217;<strong>ingestion de messages dans le système</strong>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-source.png" border="0" alt="" /></div><p>Spring Integration propose un ensemble d&#8217;implémentations parmi lesquelles : <code>ByteStreamSource</code>, <code>FileSource</code>, <code>JmsSource</code> ou encore <code>FtpSource</code> &#8230;</p><p>En sortie, l&#8217;interface <code>Target&lt;T&gt;</code> définit un <strong>modèle d&#8217;adaptateur</strong> pour la conversion de <code>Message&lt;T&gt;</code> en <code>Object</code>. Ainsi, les implémentations de l&#8217;interface <code>Target&lt;T&gt;</code> permettent l&#8217;<strong>envoi de messages vers l&#8217;extérieur</strong>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-target.png" border="0" alt="" /></div><p>Spring Integration propose un ensemble d&#8217;implémentations parmi lesquelles : <code>ByteStreamTarget</code>, <code>FileTarget</code>, <code>JmsTarget</code> ou encore <code>MailTarget</code> &#8230;</p><h4><a
name="LesMessageChannels"></a>Les Message Channels</h4><p>Au sein du système de messaging, les messages transitent au travers de channels. Les channels représentent la partie <strong>&laquo;&nbsp;pipes&nbsp;&raquo;</strong> du modèle &laquo;&nbsp;<a
href="http://www.enterpriseintegrationpatterns.com/PipesAndFilters.html" title="pipes-and-filters" >pipes-and-filters</a>&laquo;&nbsp;.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-message-channel.png" border="0" alt="" /></div><p>Les channels sont définis par l&#8217;interface <code>MessageChannel</code>. Ils peuvent <em>(entre autres)</em> être définis dans un fichier de configuration de contexte Spring. Par exemple :</p><pre class="brush: xml; title: ; notranslate">
&lt;channel id=&quot;myChannel&quot; /&gt;
&lt;channel id=&quot;stringOrNumberChannel&quot;
	datatype=&quot;java.lang.String,
			java.lang.Number&quot;/&gt;
</pre><h4><a
name="LesMessageEndpoints"></a>Les Message Endpoints</h4><p>La partie <strong>&laquo;&nbsp;filters&nbsp;&raquo;</strong> du modèle &laquo;&nbsp;<a
href="http://www.enterpriseintegrationpatterns.com/PipesAndFilters.html" title="pipes-and-filters" >pipes-and-filters</a>&nbsp;&raquo; est quant à elle représentée par les endpoints.<br
/> Les endpoints sont le point d&#8217;accostage entre le code applicatif et l&#8217;infrastructure de messaging. Ils prennent en charge cette connexion de manière non invasive au travers d&#8217;une configuration déclarative. L&#8217;objectif est ici d&#8217;isoler le code applicatif de l&#8217;infrastructure qui le supporte <em>(&laquo;&nbsp;separtion of concerns&nbsp;&raquo;)</em>.<br
/> On distingue trois types de endpoints:</p><p><strong>Les endpoints sources</strong><br
/> Un endpoint source est un adaptateur qui permet de <strong>connecter une source vers un channel</strong>. Il est responsable de la réception des messages en provenance d&#8217;une source et de leur transmission à un channel. La réception des messages depuis la source par le endpoint est contrôlée par scheduling.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-source-endpoint.png" border="0" alt="" /></div><p><strong>Les endpoints targets</strong><br
/> À l&#8217;inverse, un endpoint target est un adpatateur qui permet de <strong>connecter un channel vers une target</strong>. Il est responsable de la réception des messages depuis un channel et de leur envoi vers une target. De la même façon, la réception des messages en provenance du channel est contrôlée par scheduling.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-target-endpoint.png" border="0" alt="" /></div><p><strong>Les Handler endpoints</strong><br
/> Les handler endpoints permettent quant à eux les interactions de type <em>request / reply</em>. Ils jouent ainsi le rôle de <strong>&laquo;&nbsp;Service Activator&nbsp;&raquo;</strong>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-handler-endpoint.png" border="0" alt="" /></div><p>Les endpoints peuvent <em>(entre autres)</em> être définis par annotation. Par exemple :</p><pre class="brush: java; title: ; notranslate">
@MessageEndpoint(input=&quot;inputChannel&quot;, output=&quot;outputChannel&quot;)
public class MyHandlerEndpoint {
    @Handler
    public String handle(Message&lt;T&gt; input) {
        // Invocation d'un service applicatif ...
        Message&lt;T&gt; output;
        // Construction du message de retour ...
        return output;
    }
}
</pre><p>Notons qu&#8217;il n&#8217;est pas obligatoire de travailler avec des <code>Message&lt;T&gt;</code> <em>(cette façon de faire simplifie juste l&#8217;accès au header)</em>. Le endpoint précédant, pourrait également s&#8217;écrire :</p><pre class="brush: java; title: ; notranslate">
@MessageEndpoint(input=&quot;inputChannel&quot;, output=&quot;outputChannel&quot;)
public class MyHandlerEndpoint {
    @Handler
    public String handle(Foo input) {
        // Invocation d'un service applicatif ...
        Foo output;
        // Construction du message de retour ...
        return output;
    }
}
</pre><p>Ici, l&#8217;extraction du payload du message <em>(de type <code>Foo</code>)</em> est prise en charge par Spring Integration.</p><h4><a
name="LesHandlers"></a>Les Handlers</h4><p>Alors que les sources et les targets proposent un modèle d&#8217;adapteur unidirectionnel, les handlers fournissent un modèle d&#8217;adapteur bi-directionnel, offrant ainsi la possibilité d&#8217;implémenter des <strong>scenarii de type request / reply</strong>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-handler.png" border="0" alt="" /></div><p>Les handlers sont définis par l&#8217;interface <code>MessageHandler</code>. La prise en charge des messages se fait par invocation d&#8217;une méthode arbitraire sur un POJO.<br
/> Parmi les implémentations fournies par Spring Intégration, nous retiendrons :</p><p><strong>Le Message Router Handler</strong><br
/> Ce handler implémente l&#8217; <a
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html" title="Integration Patterns" >Integration Patterns</a> <a
href="http://www.enterpriseintegrationpatterns.com/MessageRouter.html" title="Message Router" >Message Router</a>. Il permet ainsi de router un message en provenance d&#8217;un channel d&#8217;entrée vers un ou plusieurs channels de sortie.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-message-router.png" border="0" alt="" /></div><p>La méthode de handling peut être configurée <em>(entre autres)</em> par annotation de différentes façons :</p><pre class="brush: java; title: ; notranslate">
// Route le message reçu vers le MessageChannel retourné.
@Router
public MessageChannel route(Message&lt;T&gt; message) {...}
</pre><pre class="brush: java; title: ; notranslate">
// Route le message reçu vers l'ensemble des MessageChannel retournés (broadcast).
@Router
public List&lt;MessageChannel&gt; route(Message&lt;T&gt; message) {...}
</pre><pre class="brush: java; title: ; notranslate">
// Route le message reçu vers le channel portant le nom retourné.
@Router
public String route(Foo payload) {...}
</pre><pre class="brush: java; title: ; notranslate">
// Route le message reçu vers l'ensemble des channels dont les noms sont retournés (broadcast).
@Router
public List&lt;String&gt; route(Foo payload) {...}
</pre><p><strong>Le Message Splitter Handler</strong><br
/> Ce handler implémente l&#8217; <a
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html" title="Integration Patterns" >Integration Patterns</a> <a
href="http://www.enterpriseintegrationpatterns.com/Sequencer.html" title="Splitter" >Splitter</a>. Il permet ainsi de découper le message reçu en plusieurs messages.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-message-splitter.png" border="0" alt="" /></div><p>La méthode de handling peut être configurée <em>(entre autres)</em> par annotation de différentes façons :</p><pre class="brush: java; title: ; notranslate">
// Reçoit un payload de type Order et le découpe en message dont le payload et de type OrderItem.
@Splitter(channel=&quot;output&quot;)
List&lt;OrderItem&gt; extractItems(Order order) {
	return order.getItems()
}
</pre><pre class="brush: java; title: ; notranslate">
@Splitter(channel=&quot;output&quot;)
public List&lt;Message&lt;T&gt;&gt; split(Message&lt;T&gt; input) {...}
</pre><p>Les messages résultants se voient affecter un identifiant de corrélation <em>(automatiquement ou explicitement)</em> qui permettra de les agréger.</p><p><strong>Le Message Aggregator Handler</strong><br
/> Ce handler va de pair avec le Splitter. Il implémente l&#8217; <a
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html" title="Integration Patterns" >Integration Patterns</a> <a
href="http://www.enterpriseintegrationpatterns.com/Aggregator.html" title="Aggregator" >Aggregator</a>. Il permet ainsi de recomposer un message à partir de plusieurs messages.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-message-aggregator.png" border="0" alt="" /></div><p>La méthode de handling peut être configurée <em>(entre autres)</em> par annotation de différentes façons :</p><pre class="brush: java; title: ; notranslate">
@Aggregator(defaultReplyChannel=&quot;output&quot;)
public Message&lt;T&gt; aggregate(Collection&lt;Message&lt;T&gt;&gt; input){
	...
}
</pre><p>La barrière d&#8217;agrégation se base sur une <code>CompletionStrategy</code> pour déterminer quand un groupe de message est complet pour agrégation. La stratégie par défaut se base sur un nombre de messages.</p><h3><a
name="LeMessageBus"></a>Le Message Bus</h3><p>Les aspects runtime de Spring Integration sont assurés par le Message Bus.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/07/spring-integration-message-bus.png" border="0" alt="" /></div><p>Le Message Bus est une extension logique de l&#8217;Application Context Spring pour le domaine du messaging. Il joue le rôle de registre pour les Message Channels et les Message Endpoints.<br
/> Il prend notamment en charge :</p><ul><li>Le scheduling des différents pollers.</li><li>La création des pools de threads.</li><li>La gestion du cycle de vie de l&#8217;ensemble des composants du messaging.</li></ul><h3><a
name="Pourbiencommencer"></a>Pour bien commencer</h3><ul><li>Le <a
href="http://www.springframework.org/spring-integration" title="site du projet Spring Integration" >site du projet Spring Integration</a>.</li><li>La <a
href="http://static.springframework.org/spring-integration/reference/htmlsingle/spring-integration-reference.html" title="documentation de référence" >documentation de référence</a>.</li><li>Les <a
href="http://blog.springsource.com/main/author/markf/" title="billets de Mark Fisher sur le blog de Spring Source" >billets de Mark Fisher sur le blog de Spring Source</a>.</li></ul><p>Et rendez-vous prochainement sur notre blog pour un premier sample.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/07/30/introduction-a-spring-integration/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Les 10 pièges de la SOA : 10 &#8211; Le syndrome &#171;&#160;Not Invented Here&#160;&#187;</title><link>http://blog.xebia.fr/2008/05/16/les-10-pieges-de-la-soa-10-le-syndrome-not-invented-here/</link> <comments>http://blog.xebia.fr/2008/05/16/les-10-pieges-de-la-soa-10-le-syndrome-not-invented-here/#comments</comments> <pubDate>Fri, 16 May 2008 06:54:55 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/05/16/les-10-pieges-de-la-soa-10-le-syndrome-not-invented-here/</guid> <description><![CDATA[De par leur implication dans des projets SOA (Service Oriented Architecture), les consultants de Xebia vivent de belles réussites. Mais ils rencontrent aussi un certain nombre de projets qui peinent ou qui sont en échec. Afin de partager ces expériences, nos collègues hollandais, Gero Vermaas, Viktor Grgic, Rik de Groot et Vincent Partington déroulent une [...]]]></description> <content:encoded><![CDATA[<p>De par leur implication dans des projets <a
href="http://blog.xebia.fr/category/soa/" title="SOA" >SOA</a> (Service Oriented Architecture), les consultants de Xebia vivent de belles réussites. Mais ils rencontrent aussi un certain nombre de projets qui peinent ou qui sont en échec.<br
/> Afin de partager ces expériences, nos collègues hollandais, Gero Vermaas, Viktor Grgic, Rik de Groot et Vincent Partington déroulent une série de billets présentant les 10 pièges de la mise en œuvre d&#8217;une architecture orientée services (<a
href="http://blog.xebia.fr/category/soa/" title="SOA" >SOA</a>). Comme toujours dans ce genre de <em>&laquo;&nbsp;classement&nbsp;&raquo;</em>, cette liste n&#8217;est ni exhaustive ni définitive.</p><p>Le premier de ces pièges est <strong>le syndrome &laquo;&nbsp;Not Invented Here&nbsp;&raquo;</strong> (<a
href=" http://en.wikipedia.org/wiki/Not_Invented_Here" title="NIH" >NIH</a>). Ce syndrome se rencontre dans bien des domaines de l&#8217;IT. Dans le cadre de la mise en œuvre d&#8217;une architecture orientée services (<a
href="http://blog.xebia.fr/category/soa/" title="SOA" >SOA</a>), il se manifeste tout particulièrement à deux niveaux :</p><ul><li>La réutilisation de services.</li><li>La mise en place d&#8217;un tiers d&#8217;intermédiation.</li></ul><h4><a
name="Larutilisationdeservices"></a>La réutilisation de services</h4><p>Un des objectifs sous-tendus par la mise en œuvre d&#8217;une <a
href="http://blog.xebia.fr/category/soa/" title="SOA" >SOA</a> est la réutilisation de services.<br
/> Si le département A construit un service <code>get_personal_details</code> <em>(qui retourne, entre autres, l&#8217;adresse complète)</em>, il y a peu d&#8217;arguments qui plaident en faveur de la construction par le département B d&#8217;un service <code>get_address</code>. Il existe pourtant plusieurs raisons qui peuvent amener le département B à construire ce service :</p><ol><li>Les équipes du département B n&#8217;ont pas connaissance du service <code>get_personal_details</code>. Cela dénote généralement l&#8217;absence d&#8217;un annuaire / registre de services <em>(ou sa mauvaise gestion)</em>. Nous discuterons ce point dans un autre billet de cette série.</li><li>La façon dont le département B conçoit son application ne la pousse pas à penser réutilisation. C&#8217;est en général ce qui arrive quand on applique un &laquo;&nbsp;<a
href="http://en.wikipedia.org/wiki/Big_Design_Up_Front" title="Big Design Up Front" >Big Design Up Front</a>&nbsp;&raquo; <em>(une démarche de conception complètement Top down)</em>. Ce point sera également discuté en détail dans un autre billet de la série.</li><li>Les équipes du département B ont connaissance du service <code>get_personal_details</code>, mais elles décident de ne pas l&#8217;utiliser. Soit parce qu&#8217;elles ne savent pas précisément ce qu&#8217;il fait <em>(on retombe alors dans le premier cas)</em>, soit parce qu&#8217;elles ne font pas confiance au département A quant à ses capacités à réaliser ce service correctement, soit, encore, parce qu&#8217;elles préfèrent avoir un contrôle total de l&#8217;implémentation de ce service.</li></ol><p>La troisième raison est un cas typique du syndrome NIH. Il est alors urgent de réunir les deux départements autour d&#8217;une table afin qu&#8217;ils discutent de la responsabilité de ce service et qu&#8217;ils trouvent un terrain d&#8217;entente sur lequel chacun se trouve en confiance.<br
/> Ce genre de comportement est malheureusement assez courant. Mais, c&#8217;est quelque chose qui peut, en général être réglé au cas par cas une fois que le dialogue et la confiance ont été rétablis.</p><h4><a
name="Lamiseenplaceduntiersdintermdi"></a>La mise en place d&#8217;un tiers d&#8217;intermédiation</h4><p>Le deuxième cas de figure dans lequel on rencontre le syndrome NIH lors de la mise en œuvre d&#8217;une <a
href="http://blog.xebia.fr/category/soa/" title="SOA" >SOA</a> est bien plus difficile à résoudre. C&#8217;est celui qui amène une direction informatique à construire son propre bus de service (<a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a>). Cela peut arriver principalement de deux manières :</p><ol><li>Au début des années 2000, l&#8217;intégration applicative basée sur les messages a fait émerger le besoin d&#8217;un socle de services techniques réutilisables <em>(transport, routage, transformation, &#8230;)</em>. Ce besoin a conduit, dans de nombreuses entreprises, à la construction de frameworks de messaging maisons, le plus souvent au dessus d&#8217;un backbone de messages comme MQ Series. Ces frameworks ont rendu de fiers services par le passé, mais de par leur nature, ils sont aujourd&#8217;hui très fortement couplés aux applications qu&#8217;ils supportent <em>(ou l&#8217;inverse)</em>, entravant ainsi l&#8217;introduction des standards <a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a> dans l&#8217;infrastructure du SI.</li><li>Au-delà de ce phénomène, aujourd&#8217;hui encore, certains écrivent leur propre <a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a>. En effet, bon nombre d&#8217;architectes ont l&#8217;impression que les <a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a> sont un produit marketing fortement poussé par les éditeurs et les voient comme quelque chose d&#8217;inutile. Cette vision des choses est un peu exagérée, et il faut avoir de très bonnes raisons <em>(et les épaules solides)</em> pour écrire ces propres services de transport / routing / transformation. Ce qui revient à implémenter son propre <a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a> !</li></ol><p>Dans les deux cas, sortir de cette situation implique beaucoup de travail. Ces systèmes propriétaires sont au cœur des systèmes, leur suppression demandera donc beaucoup de temps.<br
/> L&#8217;acquisition d&#8217;un <a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a> (commercial ou open source) implique la mise en œuvre d&#8217;un plan de migration dans lequel les services devront être migrés un à un pour utiliser cet <a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a> plutôt que l&#8217;ancien système. Un pont devra être donc maintenu entre l&#8217;ancien système et l&#8217;<a
href="http://blog.xebia.fr/tag/esb/" title="ESB" >ESB</a> pour la durée de la migration. De ce fait, il est probable que le débranchement de l&#8217;ancien système ne soit pas effectif avant longtemps &#8230;</p><h4><a
name="Perspectives"></a>Perspectives</h4><p>Avant de commencer à écrire ses propres services ou son propre bus de message, il est donc souhaitable d&#8217;étudier ce dont on dispose. Il y a de grandes chances qu&#8217;un service ou une plateforme &laquo;&nbsp;temporaire&nbsp;&raquo; reste en activité très longtemps &#8230;</p><p>&nbsp;</p><hr
/> <em>Traduction libre du billet &laquo;&nbsp;<a
href="http://blog.xebia.com/2008/04/23/top-10-soa-pitfalls-10-not-invented-here-syndrome/" title="Top 10 SOA Pitfalls: #10 - Not Invented Here syndrome" >Top 10 SOA Pitfalls: #10 &#8211; Not Invented Here syndrome</a>&nbsp;&raquo; publié par Vincent Partington.</em></p><p>&nbsp;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/05/16/les-10-pieges-de-la-soa-10-le-syndrome-not-invented-here/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/</link> <comments>http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#comments</comments> <pubDate>Mon, 14 Apr 2008 18:03:33 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Camel]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[ObjectGrid]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[Tomcat]]></category> <category><![CDATA[Websphere]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Google App Engine, écrivez vos propres applications Google Polémique : Gartner Group nous révèle que Windows Vista s’écroule sous son propre poids Le coin de la technique Polémique : Java est en train de perdre la bataille du web moderne [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#GoogleAppEngine">Google App Engine, écrivez vos propres applications Google</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#Vista">Polémique : Gartner Group nous révèle que Windows Vista s’écroule sous son propre poids</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#JavaWeb">Polémique : Java est en train de perdre la bataille du web moderne</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#JavaEERod">Java EE Next Generations, les prédictions de Rod Johnson</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#Maven209">Sortie de Maven 2.0.9</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#Camel13">Camel 1.3 : les lightweight ESB progressent</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#JettyTomcat">Netcraft Web Survey : Jetty progresse alors que Tomcat stagne</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#IBMeXtremeScale">IBM ObjectGrid est mort ! Longue vie à Websphere eXtreme Scale !</a></li><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#JavaWebFramework">Java Web Frameworks Survey</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#PJUG">Kirk Pepperdine au Paris JUG</a></li></ul><h3>Actualité éditeurs / SSII</h3><h4><a
name="GoogleAppEngine"></a>Google App Engine, écrivez vos propres applications Google</h4><p>Google a annoncé la semaine passée la mise à disposition d&#8217;une plateforme d&#8217;hébergement pour applications Web, <a
href="http://code.google.com/appengine/" title="Google App Engine" >Google App Engine</a>. La plateforme est pour l&#8217;instant en <i>preview release</i>, seuls 10 000 développeurs on pu s&#8217;enregistrer pour y accéder.</p><p>App Engine met à disposition des développeurs (pour l&#8217;instant gratuitement, mais le service sera bientôt payant) les outils utilisés par Google pour ses propres applications :</p><ul><li>Stockage de données avec <a
href="http://en.wikipedia.org/wiki/BigTable" title="BigTable">BigTable</a> et <a
href="http://en.wikipedia.org/wiki/Google_File_System">Google File System (GFS)</a></li><li>Scalabilité et répartition de charge</li><li>APIs Google, pour gérer l&#8217;authentification, envoyer des mails, et dialoguer avec le système de stockage de données</li><li>Ainsi qu&#8217;un environnement de développement local</li></ul><p>Les développements sont pour l&#8217;instant effectués en Python, mais d&#8217;autres langages devraient prochainement être supportés. Si vous souhaitez promouvoir votre langage favori, <a
href="http://code.google.com/p/googleappengine/issues/list" title="c'est par ici que ça se passe" >c&#8217;est par ici que ça se passe</a> (la demande de support de Java est actuellement en tête devant celles de Ruby et PHP).</p><p>Depuis la mise à disposition de ses services <a
href="http://en.wikipedia.org/wiki/Amazon_S3">Amazon Simple Storage Service (S3)</a>, <a
href="http://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud">Amazon Elastic Cloud (EC2 &#8211; nuage de serveurs)</a>, et <a
href="http://en.wikipedia.org/wiki/SimpleDB">SimpleDB (base de données)</a>, nous savions que ce n&#8217;était qu&#8217;une question de mois avant de voir la riposte de Google.<br
/> Mais les services de Google et Amazon ne sont pas en concurrence frontale. Là où Amazon met à disposition des briques logicielles, Google met à disposition un environnement complet. On pourrait imaginer une application utilisant l&#8217;App Engine de Google en façade d&#8217;un nuage (EC2) pour le traitement par batchs.<br
/> A quand la réponse de Microsoft?</p><p>Quelques articles qui nous ont paru intéressants sur le sujet</p><ul><li><a
href="http://blogs.zdnet.com/Google/?p=999" title="ZDNet : Google announces App Engine: Should Amazon worry?" >ZDNet : Google announces App Engine: Should Amazon worry?</a></li><li><a
href="http://www.businessweek.com/the_thread/techbeat/archives/2008/04/google_apps_eng.html" title="BusinessWeek : Google App Engine Goes Up Against Amazon, But That's Not the Point" >BusinessWeek : Google App Engine Goes Up Against Amazon, But That&#8217;s Not the Point</a></li><li><a
href="http://www.biologeek.com/journal/index.php/google-app-engine-avantages-et-inconvenients" title="BioloGeek : Google App Engine - avantages et inconvénients" >BioloGeek : Google App Engine &#8211; avantages et inconvénients</a></li></ul><h4><a
name="Vista"></a>Polémique : Gartner Group nous révèle que Windows Vista s&#8217;écroule sous son propre poids</h4><p>Gartner Group nous annonce dans <a
href="http://blogs.zdnet.com/BTL/?p=8428" title="Windows collapsing under its own weight; Radical change needed" >Windows collapsing under its own weight; Radical change needed</a> que Windows 7 sera radicalement différent de Vista, ce sera le premier système d&#8217;exploitation modulaire de Microsoft.</p><p>Scoop ? Pas vraiment, Gartner nous l&#8217;avait déjà annoncé en Février 2007 dans <a
href="http://www.computerweekly.com/Articles/2007/02/27/222143/is-vista-the-last-monolithic-release.htm" title="Is Vista the last monolithic release?" >Is Vista the last monolithic release?</a>. En revanche, la nouvelle annonce nous dévoile quelques détails sur Windows 7.</p><h3>Le coin de la technique</h3><h4><a
name="JavaWeb"></a>Polémique : Java est en train de perdre la bataille du web moderne</h4><p>TV4IT nous avait invité à participer à son débat <a
href="http://www.tv4it.net/permalink/4681/live-tv4it-java-est-mort-vive-java-partie-1.aspx" title="Java est mort, vive Java ?" >Java est mort, vive Java ?</a> (<a
href="http://www.tv4it.net/permalink/4682/live-tv4it-java-est-mort-vive-java-partie-2.aspx" title="part 2" >part 2</a>, <a
href="http://www.tv4it.net/permalink/4685/live-tv4it-java-est-mort-vive-java-partie-3.aspx" title="part 3" >part 3</a>).<br
/> The Server Side relance le débat cette semaine avec <a
href="http://www.theserverside.com/news/thread.tss?thread_id=49016" title="Java is losing the battle for the modern web ..." >Java is losing the battle for the modern web &#8230;</a>. Derrière ce titre bien trouvé de guerre moderne, comme d&#8217;habitude, Java se ferait sortir du monde des applications web par des architectures LAMP sur des moteurs en C ; même la JVM ne trouve pas grâce aux yeux des cassandres.</p><p>Rien de nouveau dans les polémiques millénaristes si ce n&#8217;est un avis pessimiste sur l&#8217;avenir du prochainement disponible JavaFX face au prometteur <a
href="http://www.microsoft.com/silverlight/" title="Microsoft Silverlight" >Microsoft Silverlight</a> et à l&#8217;omniprésent <a
href="http://www.adobe.com/products/flex/" title="Adobe Flex" >Adobe Flex</a>. Comment JavaFX arrivera-t-il à prendre des parts de marché aux solutions d&#8217;Adobe et de Microsoft ? Quelle promesse de valeur ajoutée convaincra les clients de changer de technologie ?</p><h4><a
name="JavaEERod"></a>Java EE Next Generations, les prédictions de Rod Johnson</h4><p>Rod Johnson nous livre dans <a
href="http://blog.springsource.com/main/2008/04/09/the-biggest-losers-next-contestant-java-bloatware/" title="The Biggest Loser's Next Contestant: Java Bloatware" >The Biggest Loser&#8217;s Next Contestant: Java Bloatware</a> sa vision des prochains serveurs d&#8217;applications Java.</p><p>C&#8217;est l&#8217;occasion de comprendre la ligne directrice du framework Spring et en particulier de <a
href="http://www.springframework.org/osgi" title="Spring Dynamic Modules for OSGi(tm) Service Platforms" >Spring Dynamic Modules for OSGi(tm) Service Platforms</a>, <a
href="http://www.springframework.org/spring-integration" title="Spring Integration" >Spring Integration</a> et Tomcat (récemment rapproché de Spring par le rachat de Covalent).</p><p>Nous passerons les habituelles piques contre les serveurs d&#8217;applications Java EE qualifiés cette fois de &laquo;&nbsp;morbidly obese legacy platforms&nbsp;&raquo;. Au delà de ces critiques lassantes, nous retiendrons :</p><ul><li>L&#8217;avenir de Java EE ne passera plus seulement par les spécifications du JCP mais aussi par celles d&#8217;organismes (cf OSGI, SCA, etc.)</li><li>Les serveurs d&#8217;applications de demain seront modulaires et beaucoup plus compacts</li><li>Les ESB et les serveurs d&#8217;applications vont converger</li><li>Ces évolutions augurent un renouveau de la compétition sur la marché des serveurs d&#8217;applications</li><li>Spring se positionne avec sa stack associée au serveur Tomcat dont on peut s&#8217;attendre une évolution rapide (OSGI-fication ?)</li></ul><h4><a
name="Maven209"></a>Sortie de Maven 2.0.9</h4><p>La dernière version de <a
href="http://maven.apache.org/release-notes.html" title="Maven" >Maven</a> est disponible, voici les points les plus innovants :</p><ul><li><a
href="http://jira.codehaus.org/browse/MNG-3395" title="MNG-3395" >MNG-3395</a> : le <i>super pom</i> 2.0.9 contient désormais les versions par défaut pour les plugins de base de Maven. Cette fonctionnalité était grandement attendue, elle devrait résoudre les problèmes de stabilité rencontrés sur les projets qui ne fixent pas dans leur pom parent les versions des plugins, puisque dans ce cas les plugins étaient mis à jour automatiquement dès leur mise en ligne sur le repository. Le travail <a
href="http://docs.codehaus.org/display/MAVENUSER/Making+Maven+not+suck+%28-db+branch%29" title="effectué par Don Brown avec sa branche maven-db" >effectué par Don Brown avec sa branche maven-db</a> a en partie payé!</li><li><a
href="http://jira.codehaus.org/browse/MNG-1412" title="MNG-1412" >MNG-1412</a> et <a
href="http://jira.codehaus.org/browse/MNG-3111" title="MNG-3111" >MNG-3111</a> : l&#8217;ordre des dépendances dans les fichiers classpath générés est désormais déterminé par l&#8217;ordre de déclaration dans le pom, les dépendances héritées étant ajoutées à la fin.</li><li><a
href="http://jira.codehaus.org/browse/MNG-3415" title="MNG-3415" >MNG-3415</a> : une erreur lors du téléchargement d&#8217;un artefact ne devrait plus corrompre les métadonnées du repository local. On ne devrait plus avoir besoin de supprimer une partie du repository local dans ce cas.</li><li>Un projet peut désormais <a
href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies" title="importer les dépendances de plusieurs projets" >importer les dépendances de plusieurs projets</a> grâce au <i>scope</i> &laquo;&nbsp;import&nbsp;&raquo;. Sur un gros projet multi-modules c&#8217;était quasiment impossible, puisqu&#8217;un module ne peut hériter que d&#8217;un seul parent. Bien évidemment si on utilise cette fonctionnalité Maven 2.0.9 devient obligatoire pour builder le projet.</li></ul><p>A noter que les 2 premiers points peuvent changer le comportement de votre build, attention aux risques de régression! La liste complète des corrections et améliorations <a
href="http://jira.codehaus.org/secure/ReleaseNote.jspa?version=13801&#038;styleName=Html&#038;projectId=10500" title="est en ligne" >est en ligne</a>.</p><h4><a
name="Camel13"></a>Camel 1.3 : les <i>lightweight ESB</i> progressent</h4><p>James Strachan nous <a
href="http://macstrac.blogspot.com/2008/04/apache-camel-130-released-with-208-new.html" title="présente les nouveautés d'Apache Camel 1.3" >présente les nouveautés d&#8217;Apache Camel 1.3</a>, le prédécesseur du toujours pas releasé <a
href="http://www.springframework.org/node/625" title="Spring Integration" >Spring Integration</a> dans le domaine des <i>lightweight esb</i> [1].<br
/> On remarquera l&#8217;amélioration de la testabilité, la meilleure intégration aux POJOs et le support de <a
href="http://www.microsoft.com/windowsserver2003/technologies/msmq/default.mspx" title="Microsoft Message Queuing (MSMQ)" >Microsoft Message Queuing (MSMQ)</a> et d&#8217;<a
href="https://jira.amqp.org/confluence/display/AMQP/Advanced+Message+Queuing+Protocol" title="AMQP" >AMQP</a>.</p><p>Si cette release est une bonne nouvelle pour les utilisateurs des <a
href="http://enterpriseintegrationpatterns.com/" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a>, elle est en revanche une source de confusion pour les utilisateurs d&#8217;<a
href="http://servicemix.apache.org/" title="Apache ServiceMix 3" >Apache ServiceMix 3</a>, le conteneur JBI également inclus dans la stack <a
href="http://open.iona.com/" title="IONA FUSE" >IONA FUSE</a>, dont la valeur ajoutée par rapport à Camel est aujourd&#8217;hui difficile à trouver. La <a
href="http://cwiki.apache.org/confluence/download/attachments/70895/Apache+ServiceMix+4.0.ppt?version=1" title="présentation du futur ServiceMix 4" >présentation du futur ServiceMix 4</a>, qui intégrera OSGI, CXF et Camel, aidera les utilisateurs surpris à comprendre comment s&#8217;articulera la suite ActiveMQ-Camel-CXF-ServiceMix.</p><p>[1] cf. <a
href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/" title="Xebia Blog : Spring Integration - L'avènement des 'lightweight ESB' ?" >Xebia Blog : Spring Integration &#8211; L&#8217;avènement des &#8216;lightweight ESB&#8217; ?</a></p><h4><a
name="JettyTomcat"></a>Netcraft Web Survey : Jetty progresse alors que Tomcat stagne</h4><p>Alors que <a
href="http://www.lighttpd.net/" title="LightHttpd" >LightHttpd</a> empiète poliment sur les plates-bandes de <a
href="http://httpd.apache.org/" title="Apache Http Server" >Apache Http Server</a> avec seulement 2% des parts de marché de son aîné, le conteneur de Servlets open source <a
href="http://www.webtide.com/" title="Jetty" >Jetty</a> rivalise sans complexe avec le très établi mais stagnant <a
href="http://tomcat.apache.org" title="Apache Tomcat" >Apache Tomcat</a> : le nombre de serveurs Jetty représente 80% de celui de serveurs Tomcat (cf <a
href="http://blogs.webtide.com/gregw/2008/04/11/1207878698135.html" title="webtide blog: Jetty has 80% of Tomcats public servers" >webtide blog: Jetty has 80% of Tomcats public servers</a>).</p><p>Comment Jetty a-t-il rattrapé Tomcat aussi vite ? Les innovations de Jetty sont certes intéressantes (<a
href="http://www.osgi.org/Main/HomePage" title="OSGI" >OSGI</a>, <a
href="http://en.wikipedia.org/wiki/Comet_(programming)" title="Ajax Comet Push" >Ajax Comet Push</a>, etc) mais il faut surtout voir l&#8217;attention que Jetty porte à sa communauté de développeurs en proposant un produit très léger et facile à intégrer alors que Tomcat s&#8217;est quelque peu endormi sur ses lauriers. Espérons que le <a
href="http://blog.xebia.fr/2008/02/04/revue-de-presse-xebia-42/#SpringSourcerCovalent" title="récent rachat de Covalent par Spring Source " >récent rachat de Covalent par Spring Source </a> redynamisera la communauté Tomcat.</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/04/jetty_comcat.png' alt='jetty_comcat.png' /><br
/> <em>Source : <a
href="http://blogs.webtide.com/gregw/2008/04/11/1207878698135.html" title="Webtide blog : Jetty Improves in Netcraft survey" >Webtide blog : Jetty Improves in Netcraft survey</a></em></div><h4><a
name="IBMeXtremeScale"></a>IBM ObjectGrid est mort ! Longue vie à Websphere eXtreme Scale !</h4><p>Billy Newport nous annonce que la grille de données qu&#8217;il a supervisée, IBM ObjectGrid, <a
href="http://www.devwebsphere.com/devwebsphere/2008/04/objectgrid-gets.html" title="s'appellera dorénavant Websphere eXtreme Scale" >s&#8217;appellera dorénavant Websphere eXtreme Scale</a></p><p>Simple détail de marketing ou signe de &laquo;&nbsp;Big Is Beautiful&nbsp;&raquo; chez IBM ? Hormis ses qualités qui font d&#8217;ObjectGrid une grille de données de tout premier plan [1], ObjectGrid se singularisait dans le portfolio Java d&#8217;IBM par une grande indépendance à la stack Websphere (les 6 petits Mo du client ObjectGrid s&#8217;exécutent indépendamment de Websphere, <a
href="http://www.ibm.com/developerworks/wikis/display/objectgridprog/Using+a+non-IBM+JDK+or+JRE+with+ObjectGrid" title="même sur une JVM Sun" >même sur une JVM Sun</a>) et par un format de documentation très novateur avec un <a
href="http://www.ibm.com/developerworks/wikis/display/objectgridprog/Reference" title="wiki Confluence" >wiki Confluence</a> plutôt qu&#8217;un classique <a
href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/welcome_nd.html" title="Infocenter" >Infocenter</a>.</p><p>Billy Newport avait été visionnaire en prédisant dès juillet 2005 l&#8217;avènement du lightweight Java dans <a
href="http://www.devwebsphere.com/devwebsphere/2005/07/end_of_the_road.html" title="End of the Java Web Frameworks Survey road for invasive middleware?" >End of the Java Web Frameworks Survey road for invasive middleware?</a>. Espérons que son message continuera à influencer Big Blue et qu&#8217;ObjectGrid ne disparaîtra pas dans l&#8217;imposante stack Websphere.</p><p>[1] cf. l&#8217;<a
href="http://www.ibm.com/developerworks/wikis/display/objectgridprog/Introduction+to+the+EntityManager+API" title="EntityManager" >EntityManager</a> <i>à la</i> JPA qui n&#8217;a pas d&#8217;égal pour manipuler les POJOs des la grille</p><h4><a
name="JavaWebFramework"></a>Java Web Frameworks Survey</h4><p>Peter Karich présente dans <a
href="http://java.dzone.com/tips/java-web-frameworks-survey" title="Java Web Frameworks Survey" >Java Web Frameworks Survey</a> un comparatif des huit frameworks Web qui suivent :</p><ul><li><a
href="http://click.sourceforge.net/" title="Click Framework" >Click Framework</a></li><li><a
href="http://echo.nextapp.com/site/echo2" title="Echo2" >Echo2</a></li><li><a
href="http://code.google.com/webtoolkit/" title="GWT" >GWT</a></li><li><a
href="http://java.sun.com/products/jsp/" title="JSP" >JSP</a></li><li><a
href="http://www.thinwire.com/" title="Thinwire" >Thinwire</a></li><li><a
href="http://wicket.apache.org/" title="Wicket" >Wicket</a></li><li><a
href="http://wingsframework.org/" title="WingS" >WingS</a></li><li><a
href="http://www.zkoss.org/" title="ZK Framework" >ZK Framework</a></li></ul><p>L&#8217;application était un simple bouton avec une zone de texte, dans laquelle on devait mettre un morceau de code permettant de dessiner un graphique. Pour le graphique, la librairie <a
href="http://www.gnuplot.info/" title="gnuplot" >gnuplot</a> a été utilisée.</p><p>Le comparatif nous permet de découvrir certains frameworks peu connus. Selon l&#8217;auteur, le framework Click présente des similarités avec Wicket et propose des aspects plus simples. Mettre en place sa première page avec Echo n&#8217;est pas très compliqué. En revanche GWT demande un certain coût d&#8217;entrée&#8230; (Nous avions partagé certaines de ces conclusions dans notre <a
href="http://blog.xebia.fr/2007/10/26/xebia-web-framework-contest/" title="Web Framework Contest" >Web Framework Contest</a> en Octobre dernier.</p><p>La conclusion de cette étude est que comme souvent chacun de ces frameworks a ses forces et ses faiblesses, et que si vous devez en choisir un il faut se poser les bonnes questions: un support est-t-il disponible ? Il y a t&#8217;il une communauté active? Quelles sont les possibilités d&#8217;intégration à une application existante ?</p><h3>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="PJUG"></a>Kirk Pepperdine au Paris JUG</h4><p><a
href="http://kirk.blog-city.com/" title="Kirk Pepperdine" >Kirk Pepperdine</a> est venu présenter au Paris JUG les enjeux de performances en Java. En attendant que la présentation de Kirk soit disponible, les points essentiels :</p><ul><li>L&#8217;émergence des processeurs multi-coeurs révèle des problèmes de concurrence d&#8217;accès qui n&#8217;apparaissaient pas auparavant : une application peut s&#8217;exécuter moins vite sur un processeur multi-coeur à cause d&#8217;apparition de goulets d&#8217;étranglement (synchronisation, etc).</li><li>Les APIs <code>java.util.concurrent</code> introduites avec Java 5 (en même temps que la clarification du modèle mémoire) simplifient le développement d&#8217;applications hautes performances.</li><li>Les bases de données ne sont pas encore optimisées pour les architectures multi-coeurs et sont concurrencées frontalement par les grilles de données (<a
href="http://www.terracotta.org/" title="Terracotta" >Terracotta</a>, <a
href="http://www.oracle.com/technology/products/coherence/index.html" title="Coherence" >Coherence</a>, etc) qui elles exploitent les opportunités de parallélisme.</li><li>Diagnostiquer un problème des performances d&#8217;une application Java nécessite d&#8217;étudier simultanément les quatre couches de &laquo;&nbsp;The Box&nbsp;&raquo; [1] : Hardware, JVM, Application et People.</li><li>Les premiers outils pour ce type de problèmes sont le Gestionnaire des Tâches sous Windows et vmstat/top sous Unix/Linux car ils donnent une vision d&#8217;ensemble (IO, CPU Système, CPU Applicative, etc).</li></ul><p>D&#8217;autres blogs parlent de la venue de Kirk Pepperdine : <a
href="http://www.touilleur-express.fr/2008/04/09/presentation-de-kirk-pepperdine-au-paris-java-user-group/" title="Le touilleur Express : Présentation de Kirk Pepperdine au Paris Java User Group" >Le touilleur Express : Présentation de Kirk Pepperdine au Paris Java User Group</a>, <a
href="http://sunchic.free.fr/wordpress/index.php/archives/2008/04/09/troisieme-rencontre-du-paris-java-user-group/" title="David Gageot: Troisième rencontre du Paris Java User Group" >David Gageot: Troisième rencontre du Paris Java User Group</a>.</p><p>Merci encore aux organisateurs du Paris JUG et <a
href="http://www.parisjug.org/meetings/20080513/presentation.html" title="rendez-vous le 13 mai" >rendez-vous le 13 mai</a> pour des présentations sur la Productivité des développements Java (Guillaume Duquesnay) et Maven (Arnaud Heritier).</p><p>[1] cf <a
href="http://www.infoq.com/articles/the-box" title="InfoQ : The Box: A Shortcut to finding Performance Bottlenecks" >InfoQ : The Box: A Shortcut to finding Performance Bottlenecks</a> par Kirk Pepperdine</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>ESB : Enterprise Spaghetti Bus ?</title><link>http://blog.xebia.fr/2008/01/15/esb-enterprise-spaghetti-bus/</link> <comments>http://blog.xebia.fr/2008/01/15/esb-enterprise-spaghetti-bus/#comments</comments> <pubDate>Tue, 15 Jan 2008 18:17:32 +0000</pubDate> <dc:creator>Guillaume Bodet</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/01/15/esb-enterprise-spaghetti-bus/</guid> <description><![CDATA[Lors d&#8217;une récente séance de brainstorming avec plusieurs de mes collègues français et hollandais, un intéressant concept a émergé : celui de l&#8217;Enterprise Spaghetti Bus. Je vous en fait part, je suis sûr que vous aurez l&#8217;occasion de le replacer&#8230; Le concept du plat de spaghetti est familier à quiconque a eu l&#8217;occasion de travailler [...]]]></description> <content:encoded><![CDATA[<p>Lors d&#8217;une récente séance de <i>brainstorming</i> avec plusieurs de mes collègues français et hollandais, un intéressant concept a émergé : celui de l&#8217;Enterprise Spaghetti Bus. Je vous en fait part, je suis sûr que vous aurez l&#8217;occasion de le replacer&#8230;<p/><p>Le concept du plat de spaghetti est familier à quiconque a eu l&#8217;occasion de travailler sur des architectures distribuées à grande échelle (ou à petite échelle d&#8217;ailleurs). Le principe en est simple : à force de multiplier les interactions point-à-point entre des composants ou systèmes hétéroclites, on tisse une véritable toile de dépendances croisées qui, à une vitesse surprenante, conduit l&#8217;ensemble du système à la sclérose. Faire évoluer un composant (ou service) devient une tâche impossible, impactant un nombre croissant (et souvent inconnu) de systèmes tiers qui en sont les clients et, du coup, les victimes.<p/> Le schéma suivant résume l&#8217;idée :<p/><p
align="center"><img
src='http://blog.xebia.fr/wp-content/uploads/2008/01/esb-point-to-point-01_small.png' alt='esb-point-to-point-01.png' /></p><p>En règle générale, on cherche donc, lorsque l&#8217;on conçoit une architecture distribuée, à adhérer au paradigme ravioli plutôt qu&#8217;à celui spaghetti. Dans l&#8217;architecture ravioli, chaque composant est petit, et faiblement couplé aux autres ; il encapsule de la viande et d&#8217;autres aliments pour le système ; on peut enlever ou changer un raviolo (oui, au singulier, c&#8217;est raviolo, ne serait-ce que pour faire plaisir à une charmante italienne de ma connaissance) sans impacter les autres ravioli. A l&#8217;occasion, je vous parlerai plus en détail de la Théorie Générale des Pâtes Appliquée au Génie Logiciel (<em>Pasta Theory on Software</em>, en anglais)&#8230;<p/><p>Pour revenir aux problèmes d&#8217;architecture, les ESB sont à première vue un moyen simple de s&#8217;affranchir du modèle point-à-point au profit du modèle <em><a
href="http://en.wikipedia.org/wiki/Spoke-hub_distribution_paradigm">spoke-hub</a></em>, en d&#8217;autres termes de transformer à peu de frais votre plat de spaghetti en plat de ravioli. Le schéma suivant illustre cette évolution :<p
align="center"><img
src='http://blog.xebia.fr/wp-content/uploads/2008/01/esb-point-to-point-02_small.png' alt='esb-point-to-point-02.png' /></p><p>Présenté de la sorte, l&#8217;ESB fait figure de composant magique. Mais cette vision &#8211; que certains n&#8217;hésitent pas à exploiter sans vergogne dans leurs arguments commerciaux &#8211; néglige la nature duale du couplage dans une architecture distribuée.<p/> En effet, lorsque deux composants (ou systèmes ou services ou applications) établissent une communication point-à-point, ils établissent une dépendance à deux niveaux :<ul><li>au niveau technique : les deux systèmes doivent trouver un protocole de communication partagé &#8211; et ceci est vrai quelle que soit la sémantique d&#8217;échange, synchrone ou asynchrone</li><li>au niveau fonctionnel : les deux systèmes doivent s&#8217;entendre sur un format d&#8217;échange</li></ul><p>Appliqué tel quel, un ESB ne fait que résoudre la problématique de couplage au niveau technique &#8211; et c&#8217;est rarement le niveau le plus critique (les protocoles de <em>remoting</em> ne changent qu&#8217;exceptionnellement, et leurs évolutions assurent le plus souvent la rétrocompatibilité).<p/> Si le couplage fonctionnel n&#8217;est pas pris en compte, l&#8217;ESB ne fait que déplacer le problème &#8211; et nous obtenons notre fameux Enterprise Spaghetti Bus :</p><p
align="center"><img
src='http://blog.xebia.fr/wp-content/uploads/2008/01/esb-point-to-point-03_small.png' alt='esb-point-to-point-02.png' /></p><p>D&#8217;aucuns prétendront que cette situation est préférable, puisqu&#8217;elle permet de gérer la complexité en un point unique, et d&#8217;utiliser les services de transformation offerts par l&#8217;ESB pour gérer les évolutions dans les formats déchange ; l&#8217;argument est probablement recevable sur le court terme, tant que le nombre de services et de versions permet une combinatoire de taille raisonnable. Mais il ne fait aucun doute que rapidement, cette combinatoire va exploser &#8211; et avec elle le coût d&#8217;évolution de chaque service.<p/> La parade à l&#8217;Enterprise Spaghetti Bus existe : elle consiste à définir un format pivot, ou <i>modèle canonique</i>, auquel se conforme les producteurs et consommateurs de services. La mise en conformité &#8211; c&#8217;est-à-dire la conversion du format de données interne dans le format canonique &#8211; peut être réalisée par chaque sous-système, ou par l&#8217;ESB (la première solution a ma préférence, mais ce n&#8217;est pas le sujet du moment).  Chaque composant est désormais uniquement couplé au modèle canonique, et la figure rassurante du plat de ravioli semble de nouveau à portée de main.<p/> Reste un problème épineux auquel tous ceux qui tentent de mettre en place une architecture orientée services sont potentiellement confrontés : qui définit et maintient le (ou les) modèle(s) canonique(s) ? Les apôtres de l&#8217;urbanisation bureaucratique et de la gouvernance centralisée tendent à promouvoir un long et coûteux travail de modélisation transverse en amont. Je crois cette approche fondamentalement erronée : au mieux, elle risque d&#8217;aboutir à un report sans fin de la mise en oeuvre ; au pire, elle conduit à la mise en place d&#8217;un modèle rigide, excessivement complexe, mal adapté aux besoins réels des applications et hermétique au changement. Incrémentaliste convaincu, je crois au contraire que le modèle canonique doit être construit de façon progressive et collaborative, en prenant en compte les besoins à mesure qu&#8217;ils se présentent ; cela suppose que l&#8217;architecture intègre les évolutions du modèle canonique &#8211; faute de quoi le problème, une nouvelle fois, aura juste été déplacé. Il doit donc être possible de <em>refactorer</em> le modèle canonique &#8211; une opération que les ESB, précisément, rendent possible. Mais ceci est une autre histoire&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/01/15/esb-enterprise-spaghetti-bus/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Spring Integration &#8211; L&#8217;avènement des &#8216;lightweight ESB&#8217; ?</title><link>http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/</link> <comments>http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/#comments</comments> <pubDate>Mon, 17 Dec 2007 16:50:10 +0000</pubDate> <dc:creator>Cyrille Le Clerc</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/</guid> <description><![CDATA[Une nouvelle approche des ESB SpringSource vient d&#8217;annoncer le lancement de Spring Integration, une implémentation légère des Enterprise Integration Patterns. Le lendemain, le projet Apache ActiveMQ annonçait la sortie de sa version 5 qui ajoute le support de ces mêmes Enterprise Integration Patterns grâce à l&#8217;intégration d&#8217;Apache Camel, un framework léger de routage et de [...]]]></description> <content:encoded><![CDATA[<h4>Une nouvelle approche des ESB</h4><p>SpringSource vient d&#8217;annoncer le <a
href="http://blog.interface21.com/main/2007/12/14/spring-integration-a-new-addition-to-the-spring-portfolio/">lancement de Spring Integration</a>, une implémentation légère des <a
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html">Enterprise Integration Patterns</a>. Le lendemain, le projet Apache ActiveMQ <a
href="http://activemq.apache.org/2007/12/15/apache-activemq-500-released.html">annonçait la sortie de sa version 5</a> qui ajoute le support de ces mêmes Enterprise Integration Patterns grâce à l&#8217;intégration d&#8217;<a
href="http://activemq.apache.org/camel/">Apache Camel</a>, un framework léger de routage et de médiations utilisable soit par <a
href="http://activemq.apache.org/camel/spring.html">configuration XML Spring</a>, soit par un <a
href="http://activemq.apache.org/camel/dsl.html">Domain Specific Language (DSL) Java</a>. Ces deux approches open source se caractérisent dans le monde des ESB par :</p><ul><li>Une grande légèreté : on ne parle plus de conteneur, d&#8217;APIs sophistiquées de connecteurs, de registre de services, de structures de données complexes mais de simples messages composés d&#8217;un body souvent sous forme de <a
href="http://en.wikipedia.org/wiki/Plain_Old_XML">Plain Old XML (POX)</a> et de headers en mode clef/valeur.</li><li>L&#8217;éloignement des standards chers aux grand éditeurs (<a
href="http://en.wikipedia.org/wiki/Java_Business_Integration">Java Business Integration &#8211; JBI</a> et <a
href="http://en.wikipedia.org/wiki/Service_component_architecture">Service Component Architecture &#8211; SCA</a>) pour se cantonner à des <a
href="http://en.wikipedia.org/wiki/POJO">Plain Old Java Objects (POJO)</a>. On notera tout de même que ces nouveaux frameworks de routage utilisent massivement les API Java EE pour les connecteurs et les transactions (JDBC, JMS, JCA, JTA, etc).</li></ul><h4>Exemples de configuration de routes avec Apache Camel</h4><p><strong>Camel Route Configuration With Java DSL</strong></p><pre class="brush: java; title: ; notranslate">
from(&quot;file:src/data&quot;)
   .choice()
      .when(xpath(&quot;/person/city = 'London'&quot;))
         .to(&quot;file:target/messages/uk&quot;)
      .otherwise()
         .to(&quot;file:target/messages/others&quot;);
</pre><p><strong>Camel Route Configuration With Spring 2.0 XML Conf</strong></p><pre class="brush: xml; title: ; notranslate">
&lt;beans ...&gt;
   &lt;camel:camelContext id=&quot;camel&quot;&gt;
      &lt;camel:route&gt;
         &lt;camel:from uri=&quot;file:src/data&quot; /&gt;
         &lt;camel:choice&gt;
            &lt;camel:when&gt;
               &lt;camel:xpath&gt;/person/city = 'London'&lt;/camel:xpath&gt;
               &lt;camel:to uri=&quot;file:target/messages/uk&quot; /&gt;
            &lt;/camel:when&gt;
            &lt;camel:otherwise&gt;
               &lt;camel:to uri=&quot;file:target/messages/others&quot; /&gt;
            &lt;/camel:otherwise&gt;
         &lt;/camel:choice&gt;
      &lt;/camel:route&gt;
   &lt;/camel:camelContext&gt;
&lt;/beans&gt;
</pre><h4>Une rupture radicale avec les précédents ESB ?</h4><p>Plus qu&#8217;une rupture, cet allègement s&#8217;inscrit dans une tendance :</p><ul><li>La vague POJO/POX a déjà déferlé sur l&#8217;informatique de gestion en Java (SpringFramework, etc) et on pouvait l&#8217;attendre sur les technologies d&#8217;intégration d&#8217;applications.</li><li>JBI 1.0 a rencontré un succès très limité et les travaux actuels sur la version 2.0 suscitent des doutes (cf <a
href="http://www.infoq.com/news/2007/05/jbi2">InfoQ : JBI 2.0 at JavaOne</a>) :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<a
href="http://servicemix.apache.org/home.html">Apache ServiceMix</a> se détache progressivement de son objectif initial de conteneur JBI pour devenir en version 4 un &laquo;&nbsp;lightweight SOA/ESB container based on OSGI&nbsp;&raquo;.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<a
href="http://mule.mulesource.org/display/MULE/Home">Mule ESB</a> ne s&#8217;intéresse toujours pas à JBI (cf <a
href="http://mule.mulesource.org/display/MULE/JBI">Mule and JBI</a>).</li><li>La banalisation des connecteurs (JCA, JMS, SOAP, etc) et des conteneurs <a
href="http://en.wikipedia.org/wiki/OSGi">OSGI</a> [1] (conteneur d&#8217;assemblage et d&#8217;exécution de composants) a permis de démocratiser le développement des ESB en laissant ces projets se concentrer sur les fonctionnalités de bus.</li><li>L&#8217;essor des Domain Specific Languages et la simplicité d&#8217;utilisation des configurations XML Spring 2 offrent des alternatives et un retour de balancier face à l&#8217;approche du &laquo;&nbsp;tout graphique&nbsp;&raquo; incarnée par <a
href="http://en.wikipedia.org/wiki/BPEL">BPEL</a>.</li></ul><h4>Perspectives pour 2008</h4><p>On peut attendre en 2008 des mouvements autour des <em>lightweight integration frameworks</em> et des standards :</p><ul><li>Les <em>Lightweight Enterprise Integration Patterns Frameworks</em> vont progresser rapidement et garder leurs distances avec les standards JBI et SCA. Le premier enjeu sera de proposer un middleware d&#8217;exécution pour ces frameworks (middleware de message, application server, etc).</li><li>Mule ESB, l&#8217;ESB Open Source &#8216;historique&#8217; devra rattraper son retard en offrant des fonctionnalités spécifiques aux Enterprise Integration Patterns.</li><li>Les grands éditeurs vont continuer leurs investissements sur leurs standards : IBM et BEA sur SCA, Sun sur JBI.</li><li>JBI 2.0 devra trancher deux questions très délicates :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<a
href="http://jcp.org/en/jsr/detail?id=277">Java Module System</a> &amp; <a
href="http://jcp.org/en/jsr/detail?id=294">Superpackage</a> versus OSGI : Si les premiers sont le standard choisi par Sun, le deuxième, OSGI, fait l&#8217;unanimité dans la communauté des middlewares (commerciaux et open source) qui a déjà décidé de l&#8217;utiliser.<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;SCA : risquer la marginalisation en ignorant ce standard qui rassemble tous les grands de l&#8217;Enterprise Java [2] ou le rejoindre quitte à se faire absorber.</li></ul><h4>Ressources</h4><ul><li><a
href="http://activemq.apache.org/camel/">Apache Camel Project</a></li><li><a
href="http://blog.interface21.com/main/2007/12/14/spring-integration-a-new-addition-to-the-spring-portfolio/">Spring Integration announcement</a></li><li><a
href="http://www4.java.no/presentations/javazone/2007/slides/5521.pdf">Mule 2 and Beyond</a> by Ross Mason, CTO and Co-founder, MuleSource Inc.</li><li><a
href="http://mule.mulesource.org/display/MULE/JBI">Mule and JBI</a> in Mule ESB wiki.</li><li><a
href="http://cwiki.apache.org/confluence/download/attachments/70895/Apache+ServiceMix+4.0.ppt?version=1">ServiceMix V4 presentation</a> by Guillaume Nodet, Apache ServiceMix PMC Chair and IONA Principal Engineer.</li><li><a
href="http://activemq.apache.org/should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.html">Should I deploy Enterprise Integration Patterns in the broker or another application</a> in ActiveMQ wiki.</li><li><a
href="http://www.eweek.com/article2/0,1895,2126646,00.asp">Can JBI 2 succeed where JBI 1 did not ?</a> by Darryl K. Taft</li></ul><p>[1] OSGI est déjà utilisé par Websphere ESB, intégrable dans Spring avec <a
href="http://www.springframework.org/osgi/">Spring Dynamic Modules for OSGi(tm) Service Platforms</a>, prévu dans ServiceMix 4, planifié pour Mule ESB après la v2.<br
/> [2] IBM, BEA, Oracle, SAP, etc</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Livre Blanc Comprendre et savoir utiliser un ESB dans une SOA</title><link>http://blog.xebia.fr/2007/10/16/livre-blanc-comprendre-et-savoir-utiliser-un-esb-dans-une-soa/</link> <comments>http://blog.xebia.fr/2007/10/16/livre-blanc-comprendre-et-savoir-utiliser-un-esb-dans-une-soa/#comments</comments> <pubDate>Tue, 16 Oct 2007 06:32:19 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[Publications]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/10/16/livre-blanc-comprendre-et-savoir-utiliser-un-esb-dans-une-soa/</guid> <description><![CDATA[Les ESB (Enterprise Service Bus) visent, d’une part à assurer l’interconnexion et d’autre part à gérer la médiation des communications et des interactions entre services et applications d’un SI. Quoique non indispensables, ils n’en demeurent pas moins une brique à forte valeur ajoutée dans le cadre d’une mise en place d’une architecture orientée service (SOA) [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://blog.xebia.fr/wp-content/uploads/2007/10/les_esb_dans_la_soa.pdf" title="Comprendre et savoir utiliser un ESB dans une SOA"><img
src="http://blog.xebia.fr/wp-content/uploads/2007/10/les_esb_dans_la_soa.png" alt="Comprendre et savoir utiliser un ESB dans une SOA" style="margin: 1em 1em 1em 1em; float: right;" /></a><br
/> Les ESB (Enterprise Service Bus) visent, d’une part à assurer l’interconnexion et d’autre part à gérer la médiation des communications et des interactions entre services et applications d’un SI. Quoique non indispensables, ils n’en demeurent pas moins une brique à forte valeur ajoutée dans le cadre d’une mise en place d’une architecture orientée service (SOA) mature.<br
/> <br
/> Néanmoins les ESB sont aujourd&#8217;hui victimes de leur succès et il est souvent difficile de décrypter leur rôle exact.<br
/> <br
/> L&#8217;objectif de ce livre blanc est de présenter les fonctionnalités que l&#8217;on peut attendre d&#8217;un ESB et comment il peut répondre aux besoins d&#8217;adaptation inter-applications d&#8217;une SOA.<br
/> <br
/>&nbsp;<br
/> <br
/>&nbsp;<br
/> <a
href="http://blog.xebia.fr/wp-content/uploads/2007/10/les_esb_dans_la_soa.pdf" title="Comprendre et savoir utiliser un ESB dans une SOA">Télécharger le Livre Blanc Comprendre et savoir utiliser un ESB dans une SOA.</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/10/16/livre-blanc-comprendre-et-savoir-utiliser-un-esb-dans-une-soa/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Cas d&#8217;utilisation d&#8217;un ESB (Bonus) : Exposition de services</title><link>http://blog.xebia.fr/2007/10/05/cas-dutilisation-dun-esb-bonus-exposition-de-services/</link> <comments>http://blog.xebia.fr/2007/10/05/cas-dutilisation-dun-esb-bonus-exposition-de-services/#comments</comments> <pubDate>Fri, 05 Oct 2007 06:39:11 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/10/05/cas-dutilisation-dun-esb-bonus-exposition-de-services/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est L&#8217;exposition de services. Problématique Intégrer les applications existantes introduit bon nombre de problématiques. Certains types d&#8217;application [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>L&#8217;exposition de services</strong>.</p><h3>Problématique</h3><p>Intégrer les applications existantes introduit bon nombre de problématiques. Certains types d&#8217;application ne peuvent pas exposer facilement des services (Mainframe, CICS, AS/400, etc.), d&#8217;autres offrent des coûts de développement trop élevés ou encore le coût des briques d&#8217;accès pour chaque service est rédhibitoire, …</p><h3>Principe de mise en œuvre</h3><p>L&#8217;ESB ici va permettre d&#8217;exposer les services d&#8217;une application existante. Sa connectivité lui permet d&#8217;interroger les systèmes existants pour créer les services du SI.</p><div
style="text-align: center;"><img
src="http://blog.xebia.fr/wp-content/uploads/2007/10/esb_exposition_de_service.png" alt="ESB : Exposition de services" /></div><p>Dans le cas où les services de l&#8217;ESB ont véritablement vocation à durer dans le temps et constitue, finalement, une &laquo;&nbsp;extension&nbsp;&raquo; de l&#8217;application dont il expose les services, on aura tendance à créer une instance de l&#8217;ESB distincte du rôle de médiateur habituel.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/10/05/cas-dutilisation-dun-esb-bonus-exposition-de-services/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Cas d’utilisation d’un ESB (6/6) : Médiation intra-domaine et inter-domaines</title><link>http://blog.xebia.fr/2007/10/02/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-66-mediation-intra-domaine-et-inter-domaines/</link> <comments>http://blog.xebia.fr/2007/10/02/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-66-mediation-intra-domaine-et-inter-domaines/#comments</comments> <pubDate>Tue, 02 Oct 2007 06:55:28 +0000</pubDate> <dc:creator>Manuel Eveno</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/10/02/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-66-mediation-intra-domaine-et-inter-domaines/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est La médiation intra-domaine et inter-domaines. Problématique Comment gérer un ESB quand plusieurs domaines métiers, fortement autonomes, [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>La médiation intra-domaine et inter-domaines</strong>.</p><h3>Problématique</h3><p>Comment gérer un ESB quand plusieurs domaines métiers, fortement autonomes, l&#8217;utilisent pour intégrer leurs applications&nbsp;?</p><h3>Principe de mise en œuvre</h3><div
style="text-align: center;"><img
src="http://blog.xebia.fr/wp-content/uploads/2007/10/esb_mediation_intra_domaine.png" alt="ESB : Médiation intra-domaine et inter-domaines" /></div><p>Les différents domaines d&#8217;une organisation sont amenés à échanger les uns avec les autres. Ces domaines correspondent à des équipes différentes, des plannings différents voire à des budgets différents. L&#8217;introduction d&#8217;un ESB aux frontières des domaines permet de décorréler et de découpler les appels entre ces différents domaines. Les domaines peuvent évoluer à leur vitesse avec leur technologie en suivant leurs propres contraintes et éventuellement avec leur vision des données métiers (bien qu&#8217;une vision unifiée des données au niveau du SI, lorsqu&#8217;elle est possible, simplifie grandement les problèmes de communication).</p><p>De même lors d&#8217;échange B2B, un ESB peut être placé comme &laquo;&nbsp;douanier&nbsp;&raquo; entre les applications internes et les applications des partenaires. L&#8217;ESB va gérer encore une fois la conversion des protocoles, des formats de données, centralisé les aspects sécurité et traçabilité dans les échanges.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/10/02/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-66-mediation-intra-domaine-et-inter-domaines/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Cas d’utilisation d’un ESB (5/6) : Intégration avec une solution d&#8217;orchestration</title><link>http://blog.xebia.fr/2007/09/25/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-56-integration-avec-une-solution-dorchestration/</link> <comments>http://blog.xebia.fr/2007/09/25/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-56-integration-avec-une-solution-dorchestration/#comments</comments> <pubDate>Tue, 25 Sep 2007 06:36:31 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/09/25/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-56-integration-avec-une-solution-dorchestration/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est l&#8217;intégration avec une solution d&#8217;orchestration. Problématique Comment déployer un workflow complexe, hébergeant les processus métier de [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>l&#8217;intégration avec une solution d&#8217;orchestration</strong>.</p><h3>Problématique</h3><p>Comment déployer un workflow complexe, hébergeant les processus métier de très haut niveau&nbsp;?</p><h3>Principe de mise en œuvre</h3><div
style="text-align: center;"><img
src="http://blog.xebia.fr/wp-content/uploads/2007/09/esb_orchestration.png" alt="ESB : Intégration avec une solution d’orchestration" /></div><p>Pour éviter de lier trop fortement l&#8217;orchestrateur de processus avec les services qu&#8217;il appelle, il est recommandé d&#8217;insérer un ESB qui joue encore une fois le rôle de médiateur.</p><p>Exemples&nbsp;:</p><ul><li>Il convertit les données échangées au format défini par la conception du processus (alignement avec les besoins métiers).</li><li>Il peut exposer tous les services avec la même technologie pour simplifier la réalisation du processus.</li><li>Il crée un nouveau service en agrégeant deux services existants (ce nouveau service sera éventuellement réintégré ultérieurement dans une des briques du SI à l&#8217;occasion d&#8217;une phase de rationalisation).</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/09/25/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-56-integration-avec-une-solution-dorchestration/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Cas d’utilisation d’un ESB (4/6) : Gestion de la QoS</title><link>http://blog.xebia.fr/2007/09/21/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-46-gestion-de-la-qos/</link> <comments>http://blog.xebia.fr/2007/09/21/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-46-gestion-de-la-qos/#comments</comments> <pubDate>Fri, 21 Sep 2007 06:29:10 +0000</pubDate> <dc:creator>Manuel Eveno</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/09/21/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-46-gestion-de-la-qos/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est la gestion de la QoS (Quality of Service). Problématique La QoS (Quality of Service) d&#8217;un service [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>la gestion de la QoS (Quality of Service)</strong>.</p><h3>Problématique</h3><p>La QoS (Quality of Service) d&#8217;un service est considérée comme un ratio entre son temps de réponse moyen et la fraîcheur des données qu&#8217;il manipule (la QoD : Quality of Data).<br
/> L&#8217;ESB est en mesure (en s&#8217;appuyant éventuellement sur un moteur de règles) de déterminer quelle implémentation invoquer en fonction de la QoS désirée.<br
/> L&#8217;ESB pourrait aussi être utilisé pour de la &laquo;&nbsp;géolocalisation&nbsp;&raquo; de services. Imaginons un service qui soit déployé x fois dans différentes régions ou différents pays. L&#8217;ESB peut déterminer à partir du message qui transite quel est le service le plus approprié.</p><h3>Principe de mise en œuvre</h3><div
style="text-align: center;"><img
src='http://blog.xebia.fr/wp-content/uploads/2007/09/esb_qos.png' alt='ESB : Gestion de la QoS' /></div><p>Il existe deux implémentations du même service :</p><ul><li>L&#8217;implémentation A est au plus proche des données métiers qu&#8217;il manipule (le référentiel). De ce fait il travail avec des données fraîches (mises à jour en temps réel). En revanche, son éloignement de l&#8217;ESB implique un temps de réponse long.</li><li>L&#8217;implémentation B est au plus prêt de l&#8217;ESB. Les temps de réponse sont donc très courts. En revanche, il ne travaille pas avec le référentiel de données mais avec un cache mis à jour chaque nuit. Les données qu&#8217;il manipule peuvent donc potentiellement être périmées.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/09/21/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-46-gestion-de-la-qos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Cas d’utilisation d’un ESB (3/6) : Gestion de version</title><link>http://blog.xebia.fr/2007/09/18/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-36-gestion-de-version/</link> <comments>http://blog.xebia.fr/2007/09/18/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-36-gestion-de-version/#comments</comments> <pubDate>Tue, 18 Sep 2007 06:17:24 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/09/18/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-36-gestion-de-version/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est la gestion de version. Problématique Comment limiter l&#8217;impact d&#8217;une montée de version d&#8217;un service dans une [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>la gestion de version</strong>.</p><h3>Problématique</h3><p>Comment limiter l&#8217;impact d&#8217;une montée de version d&#8217;un service dans une architecture intégrée, quand un nombre quelconques d&#8217;applications dépendent de la version courante de ce service ?<br
/> Ou, à l&#8217;inverse, comment déployer en avance de phase une application cliente d&#8217;une version d&#8217;un service non encore publiée ?</p><h3>Principe de mise en œuvre</h3><div
style="text-align: center;"><img
src='http://blog.xebia.fr/wp-content/uploads/2007/09/esb_gestion_version.png' alt='ESB : Gestion de version' /></div><p>La gestion de version permet de faire évoluer différents systèmes à des rythmes qui leur sont propres.<br
/> Plusieurs situations peuvent se présenter :</p><ul><li>Les versions sont incompatibles entre elles (il n&#8217;est pas possible d&#8217;effectuer une transformation vers la version la plus récente) : le choix d&#8217;une version se fait par <strong>routage</strong>.</li><li>La nouvelle version est une extension compatible avec la version précédente : L&#8217;ESB <strong>effectue l&#8217;appel vers la nouvelle version en appliquant une transformation</strong> du format d&#8217;entrée, du format de sortie ou des deux formats. Ceci évite de maintenir dans l&#8217;application cible deux versions d&#8217;un même service.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/09/18/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-36-gestion-de-version/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Cas d’utilisation d’un ESB (2/6) : Composition / agrégation de services</title><link>http://blog.xebia.fr/2007/09/11/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-26-composition-agregation-de-services/</link> <comments>http://blog.xebia.fr/2007/09/11/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-26-composition-agregation-de-services/#comments</comments> <pubDate>Tue, 11 Sep 2007 06:19:12 +0000</pubDate> <dc:creator>Manuel Eveno</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/09/11/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-26-composition-agregation-de-services/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est la composition / agrégation de services. L&#8217;ESB expose un service de niveau N qu&#8217;il construit par [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>la composition / agrégation de services</strong>.</p><hr/> <br/></p><p>L&#8217;ESB expose un service de niveau N qu&#8217;il construit par composition ou agrégation de plusieurs services de niveau N-1 (voire N).</p><div
style="text-align: center;"><img
src='http://blog.xebia.fr/wp-content/uploads/2007/09/esb_agregation.png' alt='ESB : Composition / agrégation de services' /></div><p>Il s&#8217;agit ici d&#8217;un assemblage simple de service, et non d&#8217;orchestration ou de processus.</p><p>Ce genre de situation peut se produire quand l&#8217;application qui fournit les services ne peut exposer facilement ou rapidement des services conformes à la définition métier qui en a été faite. Il est courant de voir développer des applications dites &laquo;&nbsp;frontales&nbsp;&raquo; qui endossent l&#8217;interfaçage avec l&#8217;application ou le progiciel concerné. Ces applications frontales peuvent tout à fait trouver leur place dans un ESB.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/09/11/cas-d%e2%80%99utilisation-d%e2%80%99un-esb-26-composition-agregation-de-services/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Cas d&#8217;utilisation d&#8217;un ESB (1/6) : Le couplage lâche</title><link>http://blog.xebia.fr/2007/09/07/cas-dutilisation-dun-esb-16-le-couplage-lache/</link> <comments>http://blog.xebia.fr/2007/09/07/cas-dutilisation-dun-esb-16-le-couplage-lache/#comments</comments> <pubDate>Fri, 07 Sep 2007 14:48:18 +0000</pubDate> <dc:creator>Christophe Heubès</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/09/07/cas-dutilisation-dun-esb-16-le-couplage-lache/</guid> <description><![CDATA[En vue du séminaire &#171;&#160;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&#160;&#187; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB. Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est le couplage lâche. Problématique Le couplage technique ou fonctionnel est l&#8217;un des risques les plus critiques [...]]]></description> <content:encoded><![CDATA[<p>En vue du séminaire &laquo;&nbsp;Les ESB dans la SOA : Comprendre &#038; Savoir utiliser&nbsp;&raquo; que Xebia donnera le 09/10/2007, nous vous proposons une série d&#8217;articles présentant différents cas d&#8217;utilisation d&#8217;un ESB.</p><p>Le cas d&#8217;utilisation d&#8217;un ESB présenté aujourd&#8217;hui est <strong>le couplage lâche</strong>.</p><h3>Problématique</h3><p>Le couplage technique ou fonctionnel est l&#8217;un des risques les plus critiques lors de la mise en œuvre d&#8217;une architecture orientée service (SOA).<br
/> Le service invoqué peut être exposé dans une autre technologie, utiliser une autre représentation des données, être asynchrone ou en cluster, etc. L&#8217;ESB va prendre en charge ces adaptations pour libérer l&#8217;application appelante des adhérences avec l&#8217;application qu&#8217;elle appelle. Le problème d&#8217;adhérence est bien sur reporté dans l&#8217;ESB mais on considère qu&#8217;il est plus facile et plus rapide d&#8217;effectuer des modifications dans l&#8217;ESB que dans les applications du SI.<br
/> Ainsi, la mise en place de couplage lâche entre services facilite grandement la monté de version, la migration ou l’externalisation d’un service puisque ces actions n’impactent plus tous les appelants mais seulement l’ESB.</p><h3>Principe de mise en œuvre</h3><div
style="text-align: center;"><img
src='http://blog.xebia.fr/wp-content/uploads/2007/09/esb_couplage_lache.png' alt='ESB : Couplage lâche' /></div><p>Les responsabilités de l&#8217;ESB sont ici les suivantes :</p><ul><li><strong>Exposition</strong> : Le consommateur ne connaît que l&#8217;ESB. Il invoque le service que ce dernier lui expose. Cette invocation se fait sur un protocole et avec un format de données qui sont indépendant du fournisseur de service.</li><li><strong>Routage</strong> : L&#8217;ESB détermine le fournisseur de service à invoquer (éventuellement en s&#8217;appuyant sur un registre ou annuaire de services).</li><li><strong>Transformation</strong> : l&#8217;ESB réalise une médiation de format vers celui pris en charge par le fournisseur de service.</li><li><strong>Invocation</strong> : C&#8217;est l&#8217;ESB qui invoque le fournisseur de service.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/09/07/cas-dutilisation-dun-esb-16-le-couplage-lache/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>La bataille des ESB Apache : Synapse vs. Service Mix vs. CXF</title><link>http://blog.xebia.fr/2007/06/15/la-bataille-des-esb-apache-synapse-vs-service-mix-vs-cxf/</link> <comments>http://blog.xebia.fr/2007/06/15/la-bataille-des-esb-apache-synapse-vs-service-mix-vs-cxf/#comments</comments> <pubDate>Fri, 15 Jun 2007 14:22:33 +0000</pubDate> <dc:creator>Cyrille Le Clerc</dc:creator> <category><![CDATA[SOA]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[Web-Services]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2007/06/15/la-bataille-des-esb-apache-synapse-vs-service-mix-vs-cxf/</guid> <description><![CDATA[De la multiplication des ESB par la Fondation Apache La stratégie SOA et ESB de la fondation Apache s&#8217;obscurcit encore un peu avec l&#8217;annonce de la version 1.0 du &#8216;médiateur de Web Service&#8217; Apache Synapse. On trouve aujourd&#8217;hui chez Apache trois projets focalisés sur les ESB et si les motivations techniques sont surement très intéressantes, [...]]]></description> <content:encoded><![CDATA[<p><em>De la multiplication des ESB par la Fondation Apache</em></p><p>La stratégie SOA et ESB de la fondation Apache s&#8217;obscurcit encore un peu avec <a
href="http://www.theserverside.com/news/thread.tss?thread_id=45734">l&#8217;annonce de la version 1.0</a> du &#8216;médiateur de Web Service&#8217; Apache Synapse.</p><p>On trouve aujourd&#8217;hui chez Apache trois projets focalisés sur les ESB et si les motivations techniques sont surement très intéressantes, les enjeux financiers sont eux passionnants.</p><p>D&#8217;un côté le projet <a
href="http://ws.apache.org">ws.apache.org</a> avec son fer de lance Axis (dont le démarrage très buggé de la version 2 a dérouté) est porté, pour ne pas dire trusté, par la startup <a
href="http://wso2.com/">WSO2</a> (cf. la <a
href="http://ws.apache.org/axis2/team-list.html">liste des committers</a> de Axis2).</p><p>Ensuite, on trouve des nouveaux venus chez Apache qui sont encore dans l&#8217;<a
href="http://incubator.apache.org/">incabuteur</a>. On y retrouve le poids lourd <a
href="http://incubator.apache.org/cxf/">CXF</a> porté par <a
href="http://iona.com">IONA</a> ; CXF est l&#8217;héritier de la populaire librairie SOAP <a
href="http://xfire.codehaus.org/">XFire</a> et de l&#8217;ESB Open Source <a
href="http://www.ionaceltix.com/">IONA Celtix</a>. Enfin, l&#8217;ESB <a
href="http://incubator.apache.org/servicemix/home.html">ServiceMix</a> qui est pour sa part porté par <a
href="http://www.logicblaze.com/">Logic Blaze</a> (cf. <a
href="http://incubator.apache.org/servicemix/team.html">liste des committers</a>).</p><p>Et pour finir, cerise sur la gâteau, le broker de message <a
href="http://activemq.apache.org/">ActiveMQ</a> que porte aussi Logic Blaze, s&#8217;aventure dans le routage et les médiations avec son sous-projet <a
href="http://activemq.apache.org/camel/">Camel</a> !</p><p>&nbsp;<br
/> <strong>Ou cela va-t-il donc nous mener ? Tout cela semble bien compliqué au premier abord mais le dénouement sera probablement assez rapide.</strong></p><h4>Le plus simple, ServiceMix et ActiveMQ.</h4><p>Tous deux portés par Logic Blaze, l&#8217;homogénéité est sauve et nous pouvons espérer qu&#8217;ActiveMQ se focalisera sur son rôle de middleware de messages quand ServiceMix développera sur les fonctionnalités ESB/SOA.</p><h4>Ensuite, CXF by IONA versus ServiceMix by Logic Blaze ?</h4><p>IONA vainqueur par KO grâce à son <a
href="http://www.iona.com/pressroom/2007/20070410.htm">rachat de Logic Blaze en avril 2007</a>.</p><h4>Enfin, Axis2-Synapse by WSO2 versus CXF-ServiceMix by IONA ?</h4><p>Si IONA joue le rôle de David lorsqu&#8217;il affronte les Goliath IBM et BEA sur les produits SOA commerciaux, en revanche, IONA joue ici le rôle de Goliath face au petit WSO2 et la bataille se joue en ce moment.</p><p>&nbsp;</p><p>Notre merveilleux tabloid <a
href="http://www.theserverside.com/">The Server Side</a> est aux premières loges et nous pouvons y apprécier les truculents coups de canif entre  Sanjiva Weerawarana (starring WSO2) et James Strachan  (starring IONA). Les deux rings actuellement utilisés sont les annonces <a
href="http://www.theserverside.com/news/thread.tss?thread_id=45734">TSS : Apache Synapse 1.0 released</a> et <a
href="http://www.theserverside.com/news/thread.tss?thread_id=45743">TSS : WSO2 ESB 1.0 Released</a>.</p><p>Qui sortira vainqueur ? Y-a-t-il de la place pour deux acteurs chez Apache ? Nous ne nous aventurerons pas à nous prononcer mais nous noterons quand même que dans le camps IONA, Celtix, XFire et ActiveMQ ont déjà fait leurs preuves alors que dans le camps WSO2, Axis2 a perdu la position dominante de son prédécesseur Axis1 (cf. notre <a
href="http://blog.xebia.fr/2007/06/11/revue-de-presse-xebia-9/">billet</a> de la semaine dernière sur le projet SOAP Glassfish Tango).</p><p>&nbsp;</p><p>Et l&#8217;intérêt des usagers Apache dans tout ça ? Réjouissons nous de voir autant de valeur mise en open source par des éditeurs commerciaux et amusons nous de voir des éditeurs s&#8217;affronter par Open Source interposé.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2007/06/15/la-bataille-des-esb-apache-synapse-vs-service-mix-vs-cxf/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> </channel> </rss>
