<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2329153605349233615</id><updated>2024-09-06T19:55:30.044+02:00</updated><category term="All"/><category term="Articles"/><category term="Tips"/><category term="Maven"/><category term="Qalingo"/><category term="Spring"/><title type='text'>Hoteia Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.hoteia.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Denis Gosset</name><uri>http://www.blogger.com/profile/01256107958105847565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-7043881325955154522</id><published>2012-11-16T11:08:00.002+01:00</published><updated>2012-11-21T10:36:15.431+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Host your website pages on GitHub</title><content type='html'>&lt;script&gt;
$(function() {
 $( &quot;#tabs-host-your-website-pages-on-github&quot; ).tabs();
});
&lt;/script&gt;

&lt;div class=&quot;article&quot;&gt;
 
 &lt;div id=&quot;tabs-host-your-website-pages-on-github&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a class=&quot;article_link&quot; href=&quot;#tabs-host-your-website-pages-on-github-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a class=&quot;article_link&quot; href=&quot;#tabs-host-your-website-pages-on-github-en&quot;&gt;Anglais&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id=&quot;tabs-host-your-website-pages-on-github-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;div class=&quot;title&quot;&gt;Héberger vos pages web (static) sur GitHub&lt;/div&gt;
    &lt;div class=&quot;content&quot;&gt;
Quelques étapes pour héberger votre contenu web sur GitHub. Prenons notre exemple, &lt;i&gt;&lt;a href=&quot;http://www.qalingo.com&quot; target=&quot;_blank&quot;&gt;Qalingo.com&lt;/a&gt;&lt;/i&gt;&lt;br/&gt;
&lt;br/&gt;
1) Nous avons créé notre organisation sur GitHub: Qalingo&lt;br/&gt;
&lt;br/&gt;
2) Nous créons notre projet, et le transférons vers l&#39;organisation. Le projet associé doit être absolument de type yourName.github.com : qalingo.github.com&lt;br/&gt;
&lt;br/&gt;
3) Règles DNS pour notre nom de domaine : qalingo.com&lt;br/&gt;
&lt;br/&gt;
Par habitude, nous créons 4 redirections utiles:&lt;br/&gt;
&lt;pre&gt;
qalingo.com vers www.qalingo.com
w.qalingo.com vers www.qalingo.com
ww.qalingo.com vers www.qalingo.com
wwww.qalingo.com vers www.qalingo.com
&lt;/pre&gt;
Puis 2 lignes de règles DNS&lt;br/&gt;
&lt;pre&gt;
qalingo.github.com 10800 IN A 204.232.175.78
www 10800 IN CNAME qalingo.github.com.
&lt;/pre&gt;

Attendre que les règles soient diffusées.&lt;br/&gt;
Vous pouvez tester de temps en temps par la commande : 
&lt;pre&gt;
host -t a domainName
&lt;/pre&gt;
Soit pour nous
&lt;pre&gt;
host -t a www.qalingo.com
&lt;/pre&gt;
qui dans notre exemple doit afficher :&lt;br/&gt;
&lt;pre&gt;
www.qalingo.com is an alias for qalingo.github.com.
qalingo.github.com has address 204.232.175.78
&lt;/pre&gt;
Il ne vous reste plus qu&#39;à déposer votre projet web static sur votre repos GitHub (clone, add, commit, push, ...).&lt;br/&gt;
&lt;br/&gt;
Enjoy.
    &lt;/div&gt;
    &lt;div class=&quot;links&quot;&gt;
     &lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;
     &lt;div class=&quot;links_list&quot;&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://pages.github.com/&quot; alt=&quot;GitHub pages&quot; target=&quot;_blank&quot;&gt;GitHub pages&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;https://help.github.com/articles/user-organization-and-project-pages&quot; alt=&quot;User, Organization and Project Pages&quot; target=&quot;_blank&quot;&gt;GitHub: User, Organization and Project Pages&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;https://help.github.com/articles/set-up-git&quot; alt=&quot;Set up Git&quot; target=&quot;_blank&quot;&gt;GitHub: Set up Git&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://lmgtfy.com/?q=git+quick+start+guide&quot; alt=&quot;Git, what&#39;s that ?&quot; target=&quot;_blank&quot;&gt;Git, what&#39;s that ?&lt;/a&gt;&lt;br/&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-host-your-website-pages-on-github-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;div class=&quot;title&quot;&gt;Host your (static) website pages on GitHub&lt;/div&gt;
    &lt;div class=&quot;content&quot;&gt;
Few steps to host your web content on GitHub. Consider our example, &lt;i&gt;&lt;a href=&quot;http://www.qalingo.com&quot; target=&quot;_blank&quot;&gt;Qalingo.com&lt;/a&gt;&lt;/i&gt;&lt;br/&gt;
&lt;br/&gt;
1) We have create our organization on GitHub: Qalingo&lt;br/&gt;
&lt;br/&gt;
2) We create our project, and transfer to the organization. The project name must be absolutely like yourName.github.com: qalingo.github.com&lt;br/&gt;
&lt;br/&gt;
3) Rules for our DNS domain name: qalingo.com&lt;br/&gt;
&lt;br/&gt;
As many times, we create four helpful redirects:&lt;br/&gt;
&lt;pre&gt;
qalingo.com vers www.qalingo.com
w.qalingo.com vers www.qalingo.com
ww.qalingo.com vers www.qalingo.com
wwww.qalingo.com vers www.qalingo.com
&lt;/pre&gt;
Then 2 lines of DNS rules&lt;br/&gt;
&lt;pre&gt;
qalingo.github.com 10800 IN A 204.232.175.78
www 10800 IN CNAME qalingo.github.com.
&lt;/pre&gt;
Wait until the rules are diffused.&lt;br/&gt;
Some time, you can test with the command
&lt;pre&gt;
host -t a domainName
&lt;/pre&gt;
in our case, looks like 
&lt;pre&gt;
host -t a www.qalingo.com
&lt;/pre&gt;
which in our example will display:&lt;br/&gt;
&lt;pre&gt;
www.qalingo.com is an alias for qalingo.github.com.
qalingo.github.com has address 204.232.175.78
&lt;/pre&gt;
Just drop your static web project on your rest GitHub (clone, add, commit, push, ...).&lt;br/&gt;
&lt;br/&gt;
Enjoy.
    &lt;/div&gt;
    &lt;div class=&quot;links&quot;&gt;
     &lt;div class=&quot;subtitle&quot;&gt;References&lt;/div&gt;
     &lt;div class=&quot;links_list&quot;&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://pages.github.com/&quot; alt=&quot;GitHub pages&quot; target=&quot;_blank&quot;&gt;GitHub pages&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;https://help.github.com/articles/user-organization-and-project-pages&quot; alt=&quot;User, Organization and Project Pages&quot; target=&quot;_blank&quot;&gt;GitHub: User, Organization and Project Pages&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;https://help.github.com/articles/set-up-git&quot; alt=&quot;Set up Git&quot; target=&quot;_blank&quot;&gt;GitHub: Set up Git&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://lmgtfy.com/?q=git+quick+start+guide&quot; alt=&quot;Git, what&#39;s that ?&quot; target=&quot;_blank&quot;&gt;Git, what&#39;s that ?&lt;/a&gt;&lt;br/&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;

&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/7043881325955154522/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2012/11/host-your-website-pages-on-github.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/7043881325955154522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/7043881325955154522'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2012/11/host-your-website-pages-on-github.html' title='Host your website pages on GitHub'/><author><name>Denis Gosset</name><uri>http://www.blogger.com/profile/01256107958105847565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-630819803871055307</id><published>2012-11-05T18:32:00.002+01:00</published><updated>2012-11-21T10:36:15.429+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Qalingo"/><title type='text'>Qalingo: Opensource Java eCommerce draft</title><content type='html'>&lt;script&gt;
$(function() {
 $( &quot;#tabs-qalingo-opensource-ecommerce&quot; ).tabs();
});
&lt;/script&gt;

&lt;div class=&quot;article&quot;&gt;
 &lt;div&gt;Opensource Java eCommerce (POC version, Qalingo)&lt;/div&gt;
 

 &lt;div id=&quot;tabs-qalingo-opensource-ecommerce&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a class=&quot;article_link&quot; href=&quot;#tabs-qalingo-opensource-ecommerce-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a class=&quot;article_link&quot; href=&quot;#tabs-qalingo-opensource-ecommerce-en&quot;&gt;Anglais&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id=&quot;tabs-qalingo-opensource-ecommerce-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;div class=&quot;title&quot;&gt;Opensource Java eCommerce (POC version, Qalingo)&lt;/div&gt;
    &lt;div class=&quot;content&quot;&gt;
Après une longue expérience sur un eCommerce pour une marque française, j&#39;ai souhaité démarrer un projet opensource Java par opposition aux nombreux projets PHP trop plébiscités à mon goût et malgré la présence d&#39;initiatives très respectables comme Broadleaf Commerce, JadaSite, Shopizer ou KonaKart.&lt;br/&gt;
&lt;br/&gt;
Je partage donc une première version écrite ces dernières semaines. Cette étape permettra de prendre du recul et d&#39;en discuter.&lt;br/&gt;
Cette version est un Proof Of Concept, où je n&#39;ai rien optimisé, la cible étant d&#39;écrire un premier jet rapide.&lt;br/&gt;
Les puristes s&#39;agaçeront sur bien des couches et je m&#39;en excuse, c&#39;est un draft ;)&lt;br/&gt;
&lt;br/&gt;
Le repository est sur GitHub : &lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;GitHub Qalingo&lt;/a&gt;&lt;br/&gt;
La Licence opensource est à définir, actuellement en Apache License Version 2.0 (le monde des licences opensource est bien compliqué)&lt;br/&gt;
&lt;br/&gt;
Ce projet se présente comme une boite à outils composée de modules Maven :&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Engine&lt;/h3&gt;
- qalingo-apis : Les APIs Core qui composeront le moteur eCommerce&lt;br/&gt;
- qalingo-misc : Les modules tiers pour import/export, SQL, traductions&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-engine&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Engine on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Web Batch Synchronization&lt;/h3&gt;
qalingo-qalingo-webapp-applications : Les applications tiers type Spring-Batch dédiées à synchroniser le eCommerce vers le CRM/CMS/ERP etc...&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-web-batch&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Web Batch Synchronization on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Web classic Frontoffice &amp; Backoffice&lt;/h3&gt;
- qalingo-theme-assets : Les ressources type &quot;page&quot; et js/css/img etc...&lt;br/&gt;
- qalingo-webapp-backoffices : Les backs, divisés en 3 : &quot;business&quot;, &quot;reporting&quot;, &quot;technical&quot;&lt;br/&gt;
- qalingo-webapp-frontoffices : Les fronts &quot;prehome&quot;, &quot;mcommerce&quot;&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-web-classic-fo-bo&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Web classic Frontoffice &amp; Backoffice on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Web Remote&lt;/h3&gt;
- qalingo-webapp-remotes : Les fronts &quot;remote&quot; Rest/Webservices (pour les Apps mobile)&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-web-remote&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Web Remote on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
D&#39;un point de vue métier, la cible de ce premier jet :&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Gestion d&#39;un catalogue customisable par marché. Il y a donc une definition sur 3 niveaux d&#39;objets pour s&#39;adapter à une marque qui aurait un catalogue monde, une surcharge par marché, avec une ensemble de traductions pour chacun de ces marchés (MarketPlace&gt;Market&gt;MarketArea&gt;Localization).&lt;/li&gt;
&lt;li&gt;Gestion des thèmes par marché et par device via le filtre de l&#39;API Wurlf&lt;/li&gt;
&lt;li&gt;URLs réécrites&lt;/li&gt;
&lt;li&gt;Sécurité via Spring-security&lt;/li&gt;
&lt;li&gt;Simple gestion des cutomers&lt;/li&gt;
&lt;li&gt;Gestion d&#39;attributs complémentaires pour les objets Customer/ProductCategory/ProductMarketing/ProductSku/PaymentGateway/Store&lt;/li&gt;
&lt;li&gt;Simple Tunnel d&#39;achat&lt;/li&gt;
&lt;li&gt;Wishlist customer&lt;/li&gt;
&lt;li&gt;Gestion de régles métier Via Drools&lt;/li&gt;
&lt;li&gt;Gestion de la recherche via SOLR&lt;/li&gt;
&lt;li&gt;Génération des traductions depuis une feuille Excel dédiée aux équipes métier&lt;/li&gt;
&lt;li&gt;Pré Home dédiée à la redirection vers les n marchés&lt;/li&gt;
&lt;li&gt;OpenStreetMap pour la liste des points de vente&lt;/li&gt;
&lt;/ul&gt;
Votre support, votre aide, vos critiques, remarques, conseils seront les bienvenus.&lt;br/&gt;
&lt;br/&gt;
Prochaine étapes, mettre en place une alpha début décembre, une beta début 2013, une 1.0 printemps 2013 (suivant les retours) :&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Nettoyer le code&lt;/li&gt;
&lt;li&gt;Optimiser le code&lt;/li&gt;
&lt;li&gt;Ecrire les test unitaires&lt;/li&gt;
&lt;li&gt;Definir tous les types d&#39;Exception et les logs associés&lt;/li&gt;
&lt;li&gt;Conception des backoffices.&lt;/li&gt;
&lt;li&gt;Conception du &quot;remote&quot; Rest pour les apps mobile&lt;/li&gt;
&lt;li&gt;Brancher le eCommerce vers un CMS de type Alfresco via la norme CMIS (open CMIS) pour synchroniser en Rest les deux environnements&lt;/li&gt;
&lt;li&gt;Ecriture des règles Drools&lt;/li&gt;
&lt;li&gt;Réflexion sur les &quot;bundles&quot;&lt;/li&gt;
&lt;li&gt;Réflexion sur les &quot;changesets&quot;&lt;/li&gt;
&lt;li&gt;Exports/Imports ?&lt;/li&gt;
&lt;li&gt;Réflexion pour permettre des &quot;hooks/plugins&quot; autrement qu&#39;en surchargeant les beans Spring&lt;/li&gt;
&lt;li&gt;portlet Liferay connecté sur la webapp &quot;remote&quot; Rest ?&lt;/li&gt;
&lt;li&gt;Une longue liste de chose à faire, même pour un simple ecommerce...&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;La stack actuelle des frameworks :&lt;/h1&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 200px;&quot;&gt;Spring&lt;/td&gt;
&lt;td&gt;3.1.2.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hibernate&lt;/td&gt;
&lt;td&gt;4.1.7.Final&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ehcache&lt;/td&gt;
&lt;td&gt;2.6.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Velocity&lt;/td&gt;
&lt;td&gt;1.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JQuery&lt;/td&gt;
&lt;td&gt;1.7.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring-Batch&lt;/td&gt;
&lt;td&gt;2.1.9.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring-WS&lt;/td&gt;
&lt;td&gt;2.1.0.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring-Security&lt;/td&gt;
&lt;td&gt;3.1.2.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boostrap&lt;/td&gt;
&lt;td&gt;2.2.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wurlf/ScientiaMobile&lt;/td&gt;
&lt;td&gt;1.4.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SOLR&lt;/td&gt;
&lt;td&gt;4.0.0-BETA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DROOLS&lt;/td&gt;
&lt;td&gt;5.4.0.Final&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;logback&lt;/td&gt;
&lt;td&gt;1.0.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h1&gt;Les outils :&lt;/h1&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 200px;&quot;&gt;Maven&lt;/td&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySql (server)&lt;/td&gt;
&lt;td&gt;5.1.51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySql (driver)&lt;/td&gt;
&lt;td&gt;5.1.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apache-tomcat&lt;/td&gt;
&lt;td&gt;7.0.22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apache&lt;/td&gt;
&lt;td&gt;2.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java&lt;/td&gt;
&lt;td&gt;1.6.0_22&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;br/&gt;
Malgré le fait que j&#39;apprécie beaucoup ce framework, j&#39;ai abandonné Vaadin, pour ne pas avoir trop de frameworks différents. De ce fait les backoffices sont en velocity avec un theme Bootstrap/Font Awesome comme les frontoffices.&lt;br/&gt;
&lt;br/&gt;
Je vais continuer de commiter, et publier en parallèle sur le blog des zooms sur chaques parties.&lt;br/&gt;
&lt;br/&gt;
To Be Continued...&lt;br/&gt;
    &lt;/div&gt;
    &lt;div class=&quot;links&quot;&gt;
     &lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;
     &lt;div class=&quot;links_list&quot;&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://nexus.hoteia.com&quot; alt=&quot;Nexus Hoteia&quot; target=&quot;_blank&quot;&gt;Repository Maven Hoteia&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://www.qalingo.com&quot; alt=&quot;Official Nexus website&quot; target=&quot;_blank&quot;&gt;Site web Qalingo&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;GitHub Qalingo&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://demo.qalingo.com&quot; alt=&quot;Demo Qalingo&quot; target=&quot;_blank&quot;&gt;Demo Qalingo&lt;/a&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-qalingo-opensource-ecommerce-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;div class=&quot;title&quot;&gt;Opensource Java eCommerce (POC version, Qalingo)&lt;/div&gt;
    &lt;div class=&quot;content&quot;&gt;
After a long experience on an eCommerce for a French brand, I wanted to start an opensource project Java despite the presence of very respectable initiatives as Broadleaf Commerce, JadaSite, or Shopizer KonaKart and versus PHP projectsversus PHP projects (too acclaimed for my taste).&lt;br/&gt;
&lt;br/&gt;
I share a first version written in recent weeks. This step will be the good time to get feedback and discuss.&lt;br/&gt;
This version is a proof of concept, where nothing is realy optimized. The target was to write a first draft quickly.&lt;br/&gt;
The purists will be warm concerning many layers and i&#39;m sorry, this is a draft;)&lt;br/&gt;
&lt;br/&gt;
The repository is on GitHub: &lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;GitHub Qalingo&lt;/a&gt;&lt;br/&gt;
The License opensource is to define, current version is on Apache License Version 2.0 (the world of open source licenses is realy complicated)&lt;br/&gt;
&lt;br/&gt;
This project looks like a toolbox consisting of modules Maven:&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Engine&lt;/h3&gt;
- qalingo-apis : The Core APIs that make up the engine eCommerce&lt;br/&gt;
- qalingo-misc : The third party modules for import / export, SQL translations&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-engine&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Engine on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Web Batch Synchronization&lt;/h3&gt;
qalingo-qalingo-webapp-applications : Applications such third-Spring Batch dedicated to eCommerce to synchronize CRM / CMS / ERP etc...&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-web-batch&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Web Batch Synchronization on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Web classic Frontoffice &amp; Backoffice&lt;/h3&gt;
- qalingo-theme-assets : resources type &quot;page&quot; and js / css / img etc...&lt;br/&gt;
- qalingo-webapp-backoffices : The backs were divided into three projects &quot;business&quot;, &quot;reporting&quot;, &quot;technical&quot;&lt;br/&gt;
- qalingo-webapp-frontoffices : Fronts &quot;prehome&quot;, &quot;mCommerce&quot;&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-web-classic-fo-bo&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Web classic Frontoffice &amp; Backoffice on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;h3&gt;Qalingo : B2C Web Remote&lt;/h3&gt;
- qalingo-webapp-remotes : Fronts &quot;remote&quot; Rest / Webservices (for mobile apps)&lt;br/&gt;
&lt;br/&gt;
*&lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo/qalingo-b2c-web-remote&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;Qalingo : B2C Web Remote on GitHub&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
Business perspective, the target of the first draft:&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Catalog management customizable by market. So there is a definition of three levels of Market objects and the last one for the localization. Marketplace&gt; Market&gt; MarketArea&gt; Localization.&lt;/li&gt;
&lt;li&gt;Theme by market and using the filter device API Wurlf&lt;/li&gt;
&lt;li&gt;Rewritten URLs&lt;/li&gt;
&lt;li&gt;Security via Spring-security&lt;/li&gt;
&lt;li&gt;Simple management cutomers&lt;/li&gt;
&lt;li&gt;Attributes object Management for Customer / ProductCategory / ProductMarketing / ProductSku / PaymentGateway / Store&lt;/li&gt;
&lt;li&gt;Simple Tunnel&lt;/li&gt;
&lt;li&gt;Customer Wishlist&lt;/li&gt;
&lt;li&gt;Management of business rules via Drools&lt;/li&gt;
&lt;li&gt;Research via SOLR&lt;/li&gt;
&lt;li&gt;Generation of translations from an Excel sheet dedicated to business teams&lt;/li&gt;
&lt;li&gt;PreHome dedicated to redirect to the n markets&lt;/li&gt;
&lt;li&gt;OpenStreetMap for a list of outlets&lt;/li&gt;
&lt;/ul&gt;
Your support, your help, comments and advice are welcome.&lt;br/&gt;
&lt;br/&gt;
Next steps, alpha version on December, a beta in early 2013, a 1.0 spring 2013 (after returns):&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Clean code&lt;/li&gt;
&lt;li&gt;Optimize the code&lt;/li&gt;
&lt;li&gt;Write the unit test&lt;/li&gt;
&lt;li&gt;Define all types of Exception and associated logs&lt;/li&gt;
&lt;li&gt;Backoffices design&lt;/li&gt;
&lt;li&gt;Design &quot;remote&quot; Rest for mobile apps&lt;/li&gt;
&lt;li&gt;Connect the ecommerce project to a CMS like Alfresco by CMIS standard (open CMIS/Rest) to synchronize the two environments&lt;/li&gt;
&lt;li&gt;Writing Drools rules&lt;/li&gt;
&lt;li&gt;Brainstorming on &quot;bundles&quot;&lt;/li&gt;
&lt;li&gt;Brainstorming on &quot;changesets&quot;&lt;/li&gt;
&lt;li&gt;Exports/Imports ?&lt;/li&gt;
&lt;li&gt;Brainstorming to allow &quot;hooks/plugins&quot; other than overloading the Spring beans&lt;/li&gt;
&lt;li&gt;Liferay portlet webapp connected to the &quot;remote&quot; Rest?&lt;/li&gt;
&lt;li&gt;A long list of things to do, even for a simple ecommerce ...&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Frameworks stack:&lt;/h1&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 200px;&quot;&gt;Spring&lt;/td&gt;
&lt;td&gt;3.1.2.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hibernate&lt;/td&gt;
&lt;td&gt;4.1.7.Final&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ehcache&lt;/td&gt;
&lt;td&gt;2.6.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Velocity&lt;/td&gt;
&lt;td&gt;1.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JQuery&lt;/td&gt;
&lt;td&gt;1.7.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring-Batch&lt;/td&gt;
&lt;td&gt;2.1.9.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring-WS&lt;/td&gt;
&lt;td&gt;2.1.0.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spring-Security&lt;/td&gt;
&lt;td&gt;3.1.2.RELEASE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boostrap&lt;/td&gt;
&lt;td&gt;2.2.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wurlf/ScientiaMobile&lt;/td&gt;
&lt;td&gt;1.4.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SOLR&lt;/td&gt;
&lt;td&gt;4.0.0-BETA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DROOLS&lt;/td&gt;
&lt;td&gt;5.4.0.Final&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;logback&lt;/td&gt;
&lt;td&gt;1.0.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h1&gt;Tools:&lt;/h1&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 200px;&quot;&gt;Maven&lt;/td&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySql (server)&lt;/td&gt;
&lt;td&gt;5.1.51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySql (driver)&lt;/td&gt;
&lt;td&gt;5.1.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apache-tomcat&lt;/td&gt;
&lt;td&gt;7.0.22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apache&lt;/td&gt;
&lt;td&gt;2.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java&lt;/td&gt;
&lt;td&gt;1.6.0_22&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;br/&gt;
Although I appreciate this framework and not wishing too much different frameworks, i abandoned Vaadin. Backoffices are build with Bootstrap theme / Font Awesome as frontoffices.&lt;br/&gt;
&lt;br/&gt;
I will continue to commit on github, and publish more documentations on the blog.&lt;br/&gt;
&lt;br/&gt;
To Be Continued...&lt;br/&gt;
    &lt;/div&gt;
    &lt;div class=&quot;links&quot;&gt;
     &lt;div class=&quot;subtitle&quot;&gt;References&lt;/div&gt;
     &lt;div class=&quot;links_list&quot;&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://nexus.hoteia.com&quot; alt=&quot;Nexus Hoteia&quot; target=&quot;_blank&quot;&gt;Repository Maven Hoteia&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://www.qalingo.com&quot; alt=&quot;Official Nexus website&quot; target=&quot;_blank&quot;&gt;Site web Qalingo&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://github.com/qalingo&quot; alt=&quot;GitHub Qalingo&quot; target=&quot;_blank&quot;&gt;GitHub Qalingo&lt;/a&gt;&lt;br/&gt;
      &lt;a class=&quot;article_link&quot; href=&quot;http://demo.qalingo.com&quot; alt=&quot;Demo Qalingo&quot; target=&quot;_blank&quot;&gt;Demo Qalingo&lt;/a&gt;
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/630819803871055307/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2012/11/qalingo-opensource-java-ecommerce-draft_5.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/630819803871055307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/630819803871055307'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2012/11/qalingo-opensource-java-ecommerce-draft_5.html' title='Qalingo: Opensource Java eCommerce draft'/><author><name>Denis Gosset</name><uri>http://www.blogger.com/profile/01256107958105847565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-4563670625328495828</id><published>2012-04-25T23:50:00.002+02:00</published><updated>2012-11-21T10:36:15.426+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Quick tip, svn files clean your project with Dos command</title><content type='html'>&lt;script&gt;
  $(function() {
   $( &quot;#tabs-svn-files-clean-project&quot; ).tabs();
  });
&lt;/script&gt;
&lt;div class=&quot;article&quot;&gt;
 &lt;div id=&quot;tabs-svn-files-clean-project&quot;&gt;
  &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#tabs-svn-files-clean-project-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#tabs-svn-files-clean-project-en&quot;&gt;English&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;div id=&quot;tabs-svn-files-clean-project-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    Un rapide post, pour partager une commande que je me surprends encore à utiliser au demarrage d&#39;un projet composé de copier/coller ou d&#39;autre projets.&lt;br /&gt;
    La commande Dos supprime de manière récursive l&#39;ensemble des fichiers SVN :
    &lt;br /&gt;&lt;br /&gt;
    &lt;b&gt;for /f &quot;usebackq&quot; %d in (`&quot;dir *.svn /ad/b/s&quot;`) do rd /s/q &quot;%d&quot;&lt;/b&gt;
    &lt;br /&gt;&lt;br /&gt;
    ... et bien utile vu que tout n&#39;est pas encore sous Git ;)
    &lt;br /&gt;&lt;br /&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-svn-files-clean-project-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    A quick post to share a tip. I&#39;m suprise to using an old command to clean a project after somes copy/paste or build from others projects.&lt;br /&gt;
    This Dos command recursively deletes all files SVN:
    &lt;br /&gt;&lt;br /&gt;
    &lt;b&gt;for /f &quot;usebackq&quot; %d in (`&quot;dir *.svn /ad/b/s&quot;`) do rd /s/q &quot;%d&quot;&lt;/b&gt;
    &lt;br /&gt;&lt;br /&gt;
    ...and very useful because not everything is still under Git ;)
    &lt;br /&gt;&lt;br /&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/4563670625328495828/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2012/04/quick-tip-svn-files-clean-your-project.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/4563670625328495828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/4563670625328495828'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2012/04/quick-tip-svn-files-clean-your-project.html' title='Quick tip, svn files clean your project with Dos command'/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/blank.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-7959279098007417874</id><published>2012-03-03T10:32:00.002+01:00</published><updated>2012-11-21T10:36:15.434+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Sql Server JDBC driver fail with sdk 1.6.0.29</title><content type='html'>&lt;script&gt;
  $(function() {
   $( &quot;#tabs-jdbc-sqlserver-failed-with-sdk&quot; ).tabs();
  });
&lt;/script&gt;
&lt;div class=&quot;article&quot;&gt;
 &lt;div id=&quot;tabs-jdbc-sqlserver-failed-with-sdk&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-jdbc-sqlserver-failed-with-sdk-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-jdbc-sqlserver-failed-with-sdk-en&quot;&gt;English&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id=&quot;tabs-jdbc-sqlserver-failed-with-sdk-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt;Si vous utilisez un SQL Server avec le driver JDBC de Microsoft et le SQK 1.6.0.29 d&#39;Oracle, sachez que celà ne fonctionnera probablement pas.&lt;br/&gt;
 En effet vous riquez de perdre comme moi quelques heures précieuses. Il faut manquer de chance pour tomber sur ce problème de version mais il exite.&lt;br/&gt;
 Aucune log ne met bien en exergue le problème. La solution reste cependant assez simple puisqu&#39;il s&#39;agit juste de changer de SDK.
 &lt;/p&gt;
&lt;p&gt;Un lien qui m&#39;a confirmé ce problème &lt;a href=&quot;https://forums.oracle.com/forums/thread.jspa?threadID=2301826&quot; target=&quot;_blank&quot;&gt;sur le forum d&#39;Oracle&lt;/a&gt;&lt;p&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-jdbc-sqlserver-failed-with-sdk-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt;If you use a SQL Server with the JDBC driver from Microsoft and Oracle SQK 1.6.0.29, know that it probably will not work.&lt;br/&gt;
Indeed, you risk losing a few precious hours like me. It is be unlucky to come across this version problem. &lt;br/&gt;
No log is strongly underlines the problem. The solution is quite simple, just to change the SDK.&lt;/p&gt;
&lt;p&gt;A link who confirmed this problem &lt;a href=&quot;https://forums.oracle.com/forums/thread.jspa?threadID=2301826&quot; target=&quot;_blank&quot;&gt;on the Oracle forum&lt;/a&gt;&lt;p&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/7959279098007417874/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2012/03/sql-server-jdbc-driver-fail-with-sdk.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/7959279098007417874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/7959279098007417874'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2012/03/sql-server-jdbc-driver-fail-with-sdk.html' title='Sql Server JDBC driver fail with sdk 1.6.0.29'/><author><name>Denis Gosset</name><uri>http://www.blogger.com/profile/01256107958105847565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-7951574732275441297</id><published>2012-02-21T13:22:00.001+01:00</published><updated>2012-11-21T10:36:15.433+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Spring-security @ Autowired is null if the element &amp;lt;debug/&amp;gt; is present</title><content type='html'>&lt;script&gt;
  $(function() {
   $( &quot;#tabs-spring-security-autowired-null&quot; ).tabs();
  });
&lt;/script&gt;
&lt;div class=&quot;article&quot;&gt;
 &lt;div id=&quot;tabs-spring-security-autowired-null&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-spring-security-autowired-null-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-spring-security-autowired-null-en&quot;&gt;English&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id=&quot;tabs-spring-security-autowired-null-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt;Si vous avez des valeurs &quot;null&quot; au niveau d&#39;injections qui devraient fonctionner, donc déclarées par un scan, voici peut-être une piste.&lt;br/&gt;
J&#39;ai perdu un peu de temps sur le fait que l&#39;élément &amp;lt;debug/&amp;gt; corrompait les injections Spring. Faute de recherche et d&#39;infos sur cela, j&#39;ai trouvé de façon empirique.&lt;br/&gt;
Je vous invite à vérifier votre applicationContext dédié à spring-security et à commenter cet élément pour tester et vérifier qu&#39;il est bien la cause du problème.
 &lt;/p&gt;
&lt;p&gt;L&#39;élément &amp;lt;debug/&amp;gt; est déclaré dans &lt;a href=&quot;http://www.springsource.org/schema/security/spring-security-3.1.xsd&quot; target=&quot;_blank&quot;&gt;spring-security 3.1 xsd&lt;/a&gt;&lt;p&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-spring-security-autowired-null-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt;If you have any null values with Autowired injections that should work, so declared by a scan, maybe the following info is the solution.&lt;br/&gt;
I lost a little time on the fact that the element &amp;lt;debug/&amp;gt; corrupted Spring injections. I didn&#39;t find info on this, I found step by step.&lt;br/&gt;
I invite you to check your applicationContext dedicated to spring-security and comment this element to test and verify that it is causing the problem.&lt;/p&gt;
&lt;p&gt;This élément &amp;lt;debug/&amp;gt; is declared in the &lt;a href=&quot;http://www.springsource.org/schema/security/spring-security-3.1.xsd&quot; target=&quot;_blank&quot;&gt;spring-security 3.1 xsd&lt;/a&gt;&lt;p&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/7951574732275441297/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2012/02/spring-security-autowired-is-null-if.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/7951574732275441297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/7951574732275441297'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2012/02/spring-security-autowired-is-null-if.html' title='Spring-security @ Autowired is null if the element &amp;lt;debug/&amp;gt; is present'/><author><name>Denis Gosset</name><uri>http://www.blogger.com/profile/01256107958105847565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-4370447799781556748</id><published>2011-06-11T22:07:00.010+02:00</published><updated>2012-11-21T10:36:15.419+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Maven"/><title type='text'>Maven repository with Android Google Maps libs</title><content type='html'>&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;
  $(function() {
   $( &quot;#tabs-maven-android-google-maps&quot; ).tabs();
  });
&lt;/script&gt;
&lt;div class=&quot;article&quot;&gt;
 &lt;div id=&quot;tabs-maven-android-google-maps&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-maven-android-google-maps-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-maven-android-google-maps-en&quot;&gt;English&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id=&quot;tabs-maven-android-google-maps-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    Les librairies Android Google Maps sont mises à jour sur notre repository maven &lt;a href=&quot;http://nexus.hoteia.com/&quot; target=&quot;_blank&quot; title=&quot;Hoteia Nexus - Maven repository&quot;&gt;http://nexus.hoteia.com&lt;/a&gt;&lt;br /&gt;
    com.google.android.maps r3_3 4_r2 7_r1 8_r2 9_r2 10_r2 11_r1 12_r1&lt;br /&gt;
    &lt;br /&gt;
    &lt;pre class=&quot;code&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;com.google.android.maps&amp;lt;/groupId&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maps&amp;lt;/artifactId&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;12_r1&amp;lt;/version&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &lt;/pre&gt;
    à suivre...
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-maven-android-google-maps-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    Android Google Maps libs are uploaded on our Maven repository &lt;a href=&quot;http://nexus.hoteia.com/&quot; target=&quot;_blank&quot; title=&quot;Hoteia Nexus - Maven repository&quot;&gt;http://nexus.hoteia.com&lt;/a&gt;&lt;br /&gt;
    com.google.android.maps r3_3 4_r2 7_r1 8_r2 9_r2 10_r2 11_r1 12_r1&lt;br /&gt;
    &lt;br /&gt;
    &lt;pre class=&quot;code&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;com.google.android.maps&amp;lt;/groupId&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maps&amp;lt;/artifactId&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;12_r1&amp;lt;/version&amp;gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &lt;/pre&gt;
    To be continued...
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/4370447799781556748/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2011/06/maven-repository-with-android-google.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/4370447799781556748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/4370447799781556748'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2011/06/maven-repository-with-android-google.html' title='Maven repository with Android Google Maps libs'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-3625568561626774704</id><published>2011-03-17T12:07:00.008+01:00</published><updated>2012-11-21T10:36:15.418+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Maven"/><title type='text'>Hoteia open a public maven repository with Maven</title><content type='html'>&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;
  $(function() {
   $( &quot;#tabs-maven-nexus-hoteia&quot; ).tabs();
  });
&lt;/script&gt;
&lt;div id=&quot;tabs-maven-nexus-hoteia&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;article_link&quot; href=&quot;#tabs-maven-nexus-hoteia-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;article_link&quot; href=&quot;#tabs-maven-nexus-hoteia-en&quot;&gt;Anglais&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div id=&quot;tabs-maven-nexus-hoteia-fr&quot;&gt;&lt;div id=&quot;content&quot;&gt;&lt;div class=&quot;title&quot;&gt;Comment utiliser notre repository Maven ?&lt;/div&gt;&lt;div class=&quot;content&quot;&gt;Pour utiliser notre repository Maven et profiter de nos ajouts de librairies tel que celles qui peuvent manquer à l&#39;utilisation de Maven avec Appengine, voici un exemple de configuration.&lt;br /&gt;
&lt;br /&gt;
Vous trouverez l&#39;interface de consultation sur &lt;a class=&quot;article_link&quot; href=&quot;http://nexus.hoteia.com/index.htm&quot; target=&quot;_blank&quot;&gt;http://nexus.hoteia.com/index.htm&lt;/a&gt;. Si la configuration de notre repository vous pose problème ou si vous souhaiteriez que nous ajoutions d&#39;autres librairies, contactez-nous &lt;a class=&quot;article_link&quot; href=&quot;http://www.hoteia.com&quot; target=&quot;_blank&quot;&gt;www.hoteia.com&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#39;informations sur la configuration de maven, nous vous invitons à consulter cette section du site officiel de Maven &lt;a class=&quot;article_link&quot; href=&quot;http://maven.apache.org/settings.html&quot; target=&quot;_blank&quot;&gt;http://maven.apache.org/settings.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;settings&amp;gt;

    &amp;lt;servers&amp;gt;
    &amp;lt;/servers&amp;gt;

    &amp;lt;mirrors&amp;gt;
        &amp;lt;mirror&amp;gt;
            &amp;lt;id&amp;gt;hoteia-all&amp;lt;/id&amp;gt;
            &amp;lt;name&amp;gt;Hoteia.com&amp;lt;/name&amp;gt;
            &amp;lt;mirrorOf&amp;gt;central,apache, google code, jahia.org, java.net, springsource&amp;lt;/mirrorOf&amp;gt;
            &amp;lt;url&amp;gt;http://nexus.hoteia.com/content/groups/public&amp;lt;/url&amp;gt;
        &amp;lt;/mirror&amp;gt;
    &amp;lt;/mirrors&amp;gt;
    &amp;lt;profiles&amp;gt;
        &amp;lt;profile&amp;gt;
            &amp;lt;id&amp;gt;nexus&amp;lt;/id&amp;gt;
            &amp;lt;repositories&amp;gt;
                &amp;lt;repository&amp;gt;
                    &amp;lt;id&amp;gt;central&amp;lt;/id&amp;gt;
                    &amp;lt;url&amp;gt;http://central&amp;lt;/url&amp;gt;
                    &amp;lt;releases&amp;gt;
                        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
                    &amp;lt;/releases&amp;gt;
                    &amp;lt;snapshots&amp;gt;
                        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
                    &amp;lt;/snapshots&amp;gt;
                &amp;lt;/repository&amp;gt;
                &amp;lt;repository&amp;gt;
                    &amp;lt;id&amp;gt;hoteia-releases&amp;lt;/id&amp;gt;
                    &amp;lt;url&amp;gt;http://nexus.hoteia.com/content/repositories/releases&amp;lt;/url&amp;gt;
                    &amp;lt;releases&amp;gt;
                        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
                    &amp;lt;/releases&amp;gt;
                    &amp;lt;snapshots&amp;gt;
                        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
                    &amp;lt;/snapshots&amp;gt;
                &amp;lt;/repository&amp;gt;
            &amp;lt;/repositories&amp;gt;
            &amp;lt;pluginRepositories&amp;gt;
                &amp;lt;pluginRepository&amp;gt;
                    &amp;lt;id&amp;gt;central&amp;lt;/id&amp;gt;
                    &amp;lt;url&amp;gt;http://central&amp;lt;/url&amp;gt;
                    &amp;lt;releases&amp;gt;
                        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
                    &amp;lt;/releases&amp;gt;
                    &amp;lt;snapshots&amp;gt;
                        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
                    &amp;lt;/snapshots&amp;gt;
                &amp;lt;/pluginRepository&amp;gt;
            &amp;lt;/pluginRepositories&amp;gt;
        &amp;lt;/profile&amp;gt;
    &amp;lt;/profiles&amp;gt;

    &amp;lt;activeProfiles&amp;gt;
        &amp;lt;activeProfile&amp;gt;nexus&amp;lt;/activeProfile&amp;gt;
    &amp;lt;/activeProfiles&amp;gt;

&amp;lt;/settings&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;links&quot;&gt;&lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;&lt;div class=&quot;links_list&quot;&gt;&lt;a class=&quot;article_link&quot; href=&quot;http://nexus.hoteia.com&quot; alt=&quot;Nexus Hoteia&quot; target=&quot;_blank&quot;&gt;nexus.hoteia.com&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;article_link&quot; href=&quot;http://nexus.sonatype.org&quot; alt=&quot;Official Nexus website&quot; target=&quot;_blank&quot;&gt;http://nexus.sonatype.org&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;article_link&quot; href=&quot;http://maven.apache.org&quot; alt=&quot;Official Maven website&quot; target=&quot;_blank&quot;&gt;http://maven.apache.org&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;tabs-maven-nexus-hoteia-en&quot;&gt;&lt;div id=&quot;content&quot;&gt;&lt;div class=&quot;title&quot;&gt;How to use our Maven repository?&lt;/div&gt;&lt;div class=&quot;content&quot;&gt;To use our Maven repository and enjoy our additions to libraries such as those that may miss the use of Maven with AppEngine, here is a sample configuration.&lt;br /&gt;
&lt;br /&gt;
You find the interface of consultation on &lt;a class=&quot;article_link&quot; href=&quot;http://nexus.hoteia.com/index.htm&quot; target=&quot;_blank&quot;&gt;http://nexus.hoteia.com/index. htm &lt;/a&gt;. If you have problems with the configuration of our repository or if you would like us to add other libraries, please contact us &lt;a class=&quot;article_link&quot; href=&quot;http://www.hoteia.com&quot; target=&quot;_blank&quot;&gt;www.hoteia.com &lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
For more information about configuring maven, please consult this section of the official site Maven &lt;a class=&quot;article_link&quot; href=&quot;http://maven.apache.org/settings.html&quot; target=&quot;_blank&quot;&gt;http://maven.apache.org/settings.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;settings&amp;gt;

    &amp;lt;servers&amp;gt;
    &amp;lt;/servers&amp;gt;

    &amp;lt;mirrors&amp;gt;
        &amp;lt;mirror&amp;gt;
            &amp;lt;id&amp;gt;hoteia-all&amp;lt;/id&amp;gt;
            &amp;lt;name&amp;gt;Hoteia.com&amp;lt;/name&amp;gt;
            &amp;lt;mirrorOf&amp;gt;central,apache, google code, jahia.org, java.net, springsource&amp;lt;/mirrorOf&amp;gt;
            &amp;lt;url&amp;gt;http://nexus.hoteia.com/content/groups/public&amp;lt;/url&amp;gt;
        &amp;lt;/mirror&amp;gt;
    &amp;lt;/mirrors&amp;gt;
    &amp;lt;profiles&amp;gt;
        &amp;lt;profile&amp;gt;
            &amp;lt;id&amp;gt;nexus&amp;lt;/id&amp;gt;
            &amp;lt;repositories&amp;gt;
                &amp;lt;repository&amp;gt;
                    &amp;lt;id&amp;gt;central&amp;lt;/id&amp;gt;
                    &amp;lt;url&amp;gt;http://central&amp;lt;/url&amp;gt;
                    &amp;lt;releases&amp;gt;
                        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
                    &amp;lt;/releases&amp;gt;
                    &amp;lt;snapshots&amp;gt;
                        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
                    &amp;lt;/snapshots&amp;gt;
                &amp;lt;/repository&amp;gt;
                &amp;lt;repository&amp;gt;
                    &amp;lt;id&amp;gt;hoteia-releases&amp;lt;/id&amp;gt;
                    &amp;lt;url&amp;gt;http://nexus.hoteia.com/content/repositories/releases&amp;lt;/url&amp;gt;
                    &amp;lt;releases&amp;gt;
                        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
                    &amp;lt;/releases&amp;gt;
                    &amp;lt;snapshots&amp;gt;
                        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
                    &amp;lt;/snapshots&amp;gt;
                &amp;lt;/repository&amp;gt;
            &amp;lt;/repositories&amp;gt;
            &amp;lt;pluginRepositories&amp;gt;
                &amp;lt;pluginRepository&amp;gt;
                    &amp;lt;id&amp;gt;central&amp;lt;/id&amp;gt;
                    &amp;lt;url&amp;gt;http://central&amp;lt;/url&amp;gt;
                    &amp;lt;releases&amp;gt;
                        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
                    &amp;lt;/releases&amp;gt;
                    &amp;lt;snapshots&amp;gt;
                        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
                    &amp;lt;/snapshots&amp;gt;
                &amp;lt;/pluginRepository&amp;gt;
            &amp;lt;/pluginRepositories&amp;gt;
        &amp;lt;/profile&amp;gt;
    &amp;lt;/profiles&amp;gt;

    &amp;lt;activeProfiles&amp;gt;
        &amp;lt;activeProfile&amp;gt;nexus&amp;lt;/activeProfile&amp;gt;
    &amp;lt;/activeProfiles&amp;gt;

&amp;lt;/settings&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;links&quot;&gt;&lt;div class=&quot;subtitle&quot;&gt;References&lt;/div&gt;&lt;div class=&quot;links_list&quot;&gt;&lt;a class=&quot;article_link&quot; href=&quot;http://nexus.hoteia.com&quot; alt=&quot;Nexus Hoteia&quot; target=&quot;_blank&quot;&gt;nexus.hoteia.com&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;article_link&quot; href=&quot;http://nexus.sonatype.org&quot; alt=&quot;Official Nexus website&quot; target=&quot;_blank&quot;&gt;http://nexus.sonatype.org&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;article_link&quot; href=&quot;http://maven.apache.org&quot; alt=&quot;Official Maven website&quot; target=&quot;_blank&quot;&gt;http://maven.apache.org&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/3625568561626774704/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2011/04/hoteia-open-public-maven-repository.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/3625568561626774704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/3625568561626774704'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2011/04/hoteia-open-public-maven-repository.html' title='Hoteia open a public maven repository with Maven'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-1469356810679559615</id><published>2011-01-18T16:26:00.004+01:00</published><updated>2012-11-21T10:36:15.412+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Spring Webservice 2.0 with JaxB (Maven, Hibernate, Tomcat)</title><content type='html'>&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;
  $(function() {
   $( &quot;#tabs-spring-ws-jaxb&quot; ).tabs();
  });
&lt;/script&gt;
  &lt;div class=&quot;article&quot;&gt;   &lt;div id=&quot;tabs-spring-ws-jaxb&quot;&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href=&quot;#tabs-spring-ws-jaxb-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;    &lt;div id=&quot;tabs-spring-ws-jaxb-fr&quot;&gt;     &lt;div id=&quot;content&quot;&gt;      &lt;div class=&quot;title&quot;&gt;Pré-requis&lt;/div&gt;      &lt;div class=&quot;content&quot;&gt;       Pour ce tutorial, nous travaillons avec Maven 3.0, Spring 3.0, Spring WS 2.0, JaxB 2.1, Hibernate 3.4, Tomcat 6.0.29, JDK 1.6.0.17.&lt;br /&gt;
       L&#39;ensemble de cette architecture est disponible dans le zip &lt;a href=&quot;http://static.hoteia.com/blog/files/hoteia-howto-spring-ws-jaxb-full.zip&quot; target=&quot;_blank&quot; alt=&quot;Télécharger hoteia-howto-spring-ws-jaxb-full.zip&quot;&gt;hoteia-howto-spring-ws-jaxb-full&lt;/a&gt;.&lt;br /&gt;
       Un second fichier, &lt;a href=&quot;http://static.hoteia.com/blog/files/hoteia-howto-spring-ws-jaxb-project.zip&quot; target=&quot;_blank&quot; alt=&quot;Télécharger hoteia-howto-spring-ws-jaxb-project.zip&quot;&gt;hoteia-howto-spring-ws-jaxb-project&lt;/a&gt;, ne contient que le workspace.&lt;br /&gt;
      &lt;/div&gt;      &lt;div class=&quot;title&quot;&gt;Mise en place du core, Service &amp; DAO&lt;/div&gt;      &lt;div class=&quot;content&quot;&gt;       &lt;p&gt;        Création de l&#39;entité Person, de son DAO et de son service tel que :&lt;br /&gt;
       &lt;/p&gt;       &lt;p&gt;        Person.java&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;package com.hoteia.howto.spring.domain;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Version;

@Entity
@Table(name = &quot;hoteia_person&quot;)
@NamedQueries({
 @NamedQuery(name=&quot;person.personByLastname&quot;, query=&quot;FROM Person person WHERE person.lastname = :lastname&quot;)
})
public class Person implements Serializable {

 /**
  * Generated UID
  */
 private static final long serialVersionUID = 5907376955767500978L;

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Long id;
 
 @Version
 private int version;
 
 private String title;
 private String lastname;
 private String firstname;

 public Long getId() {
  return id;
 }

 public void setId(Long id) {
  this.id = id;
 }
 
 public int getVersion() {
  return version;
 }

 public void setVersion(int version) {
  this.version = version;
 }

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public String getLastname() {
  return lastname;
 }
 
 public void setLastname(String lastname) {
  this.lastname = lastname;
 }
 
 public String getFirstname() {
  return firstname;
 }
 
 public void setFirstname(String firstname) {
  this.firstname = firstname;
 }

 @Override
 public String toString() {
  return &quot;Person [id=&quot; + id + &quot;, version=&quot; + version + &quot;, title=&quot; + title
    + &quot;, lastname=&quot; + lastname + &quot;, firstname=&quot; + firstname + &quot;]&quot;;
 }

 @Override
 public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result
    + ((firstname == null) ? 0 : firstname.hashCode());
  result = prime * result + ((id == null) ? 0 : id.hashCode());
  result = prime * result
    + ((lastname == null) ? 0 : lastname.hashCode());
  result = prime * result + ((title == null) ? 0 : title.hashCode());
  result = prime * result + version;
  return result;
 }

 @Override
 public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  Person other = (Person) obj;
  if (firstname == null) {
   if (other.firstname != null)
    return false;
  } else if (!firstname.equals(other.firstname))
   return false;
  if (id == null) {
   if (other.id != null)
    return false;
  } else if (!id.equals(other.id))
   return false;
  if (lastname == null) {
   if (other.lastname != null)
    return false;
  } else if (!lastname.equals(other.lastname))
   return false;
  if (title == null) {
   if (other.title != null)
    return false;
  } else if (!title.equals(other.title))
   return false;
  if (version != other.version)
   return false;
  return true;
 }
 
}
       &lt;/pre&gt;       &lt;p&gt;        PersonDaoImpl.java&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;package com.hoteia.howto.spring.dao.impl;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.hoteia.howto.spring.dao.PersonDao;
import com.hoteia.howto.spring.domain.Person;

@Repository(&quot;personDao&quot;)
@Transactional
@Scope(&quot;prototype&quot;)
public class PersonDaoImpl extends BaseDaoImpl implements PersonDao {

 protected final Log logger = LogFactory.getLog(getClass());
 
 public Person getPersonById(String personId) {
  return hibernateTemplate.get(Person.class, new Long(personId));
 }

 @SuppressWarnings(&quot;unchecked&quot;)
 public Person getPersonByLastname(String lastname) {
  String[] parameterNames = new String[] { &quot;lastname&quot; };
  String[] parameterValues = new String[] { lastname };
  List&amp;lt;Person&amp;gt; persons = hibernateTemplate.findByNamedQueryAndNamedParam(&quot;person.personByLastname&quot;, parameterNames, parameterValues);
  if(persons != null
    &amp;&amp; persons.size() &gt; 1){
   return persons.get(0);
  } else {
   return null;
  }
 }
 
 @SuppressWarnings(&quot;unchecked&quot;)
 public List&amp;lt;Person&amp;gt; findAllPerson(Person person) {
  return (List&amp;lt;Person&amp;gt;) hibernateTemplate.find(&quot;from &quot; + Person.class.getName());
 }

 @Transactional(readOnly = false)
 public void savePerson(Person person) {
  hibernateTemplate.saveOrUpdate(person);
 }

 @Transactional(readOnly = false)
 public void deletePerson(Person person) {
  hibernateTemplate.delete(person);

 }

}
       &lt;/pre&gt;       &lt;p&gt;        hoteia-howto-spring-dao.xml, context des DAOs, qui sera packagé dans le jar pour être importé dans le context de la webapp.&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
     xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:p=&quot;http://www.springframework.org/schema/p&quot;
     xmlns:context=&quot;http://www.springframework.org/schema/context&quot; xmlns:tx=&quot;http://www.springframework.org/schema/tx&quot;
     xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     &quot;&amp;gt;

 &amp;lt;context:component-scan base-package=&quot;com.hoteia.howto&quot;/&amp;gt;
 
&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;p&gt;        PersonServiceImpl.java&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;package com.hoteia.howto.spring.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.hoteia.howto.spring.dao.PersonDao;
import com.hoteia.howto.spring.domain.Person;
import com.hoteia.howto.spring.service.PersonService;

@Repository(&quot;personService&quot;)
public class PersonServiceImpl implements PersonService {
 
 @Autowired
 private PersonDao personDao;

 public Person getPersonById(String personId) {
  return personDao.getPersonById(personId);
 }
 
 public Person getPersonByLastname(String lastname) {
  return personDao.getPersonByLastname(lastname);
 }

 public List&amp;lt;Person&amp;gt; findAllPerson(Person person) {
  return personDao.findAllPerson(person);
 }
 
 public void savePerson(Person person) {
  personDao.savePerson(person);
 }

 public void deletePerson(Person person) {
  personDao.deletePerson(person);
 }

}
       &lt;/pre&gt;       &lt;p&gt;        hoteia-howto-spring-service.xml, context des Services, qui sera packagé dans le jar pour être importé dans le context de la webapp.&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
     xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:p=&quot;http://www.springframework.org/schema/p&quot;
     xmlns:context=&quot;http://www.springframework.org/schema/context&quot; xmlns:tx=&quot;http://www.springframework.org/schema/tx&quot;
     xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     &quot;&amp;gt;

 &amp;lt;context:component-scan base-package=&quot;com.hoteia.howto&quot;/&amp;gt;

&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;      &lt;/div&gt;      &lt;div class=&quot;links&quot;&gt;       &lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;       &lt;div class=&quot;links_list&quot;&gt;        &lt;a href=&quot;http://www.hibernate.org/&quot; alt=&quot;Hibernate&quot; target=&quot;_blank&quot;&gt;Hibernate&lt;/a&gt;&lt;br /&gt;
       &lt;/div&gt;      &lt;/div&gt;      &lt;div class=&quot;title&quot;&gt;Mise en place du client/server ws&lt;/div&gt;      &lt;div class=&quot;content&quot;&gt;       &lt;p&gt;        person.xsd&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
                    
&amp;lt;xsd:schema xmlns=&quot;http://localhost:8280/ws-in/ws/services/person/schemas&quot;
            targetNamespace=&quot;http://localhost:8280/ws-in/ws/services/person/schemas&quot;
            xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&amp;gt;

    &amp;lt;xsd:element name=&quot;save-persons-request&quot;&amp;gt;
        &amp;lt;xsd:complexType&amp;gt;
            &amp;lt;xsd:sequence&amp;gt;
                &amp;lt;xsd:element name=&quot;person&quot; type=&quot;person&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&amp;gt;
            &amp;lt;/xsd:sequence&amp;gt;
        &amp;lt;/xsd:complexType&amp;gt;
    &amp;lt;/xsd:element&amp;gt; 
    
    &amp;lt;xsd:element name=&quot;save-persons-response&quot;&amp;gt;
        &amp;lt;xsd:complexType&amp;gt;
            &amp;lt;xsd:sequence&amp;gt;
                &amp;lt;xsd:element name=&quot;response&quot; type=&quot;response&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; /&amp;gt;
            &amp;lt;/xsd:sequence&amp;gt;
        &amp;lt;/xsd:complexType&amp;gt;
    &amp;lt;/xsd:element&amp;gt;

    &amp;lt;xsd:complexType name=&quot;person&quot;&amp;gt;
        &amp;lt;xsd:sequence&amp;gt;
            &amp;lt;xsd:element name=&quot;id&quot; type=&quot;xsd:string&quot; /&amp;gt;
            &amp;lt;xsd:element name=&quot;lastname&quot; type=&quot;xsd:string&quot; /&amp;gt;
            &amp;lt;xsd:element name=&quot;firstname&quot; type=&quot;xsd:string&quot; /&amp;gt;
        &amp;lt;/xsd:sequence&amp;gt;
    &amp;lt;/xsd:complexType&amp;gt;

    &amp;lt;xsd:complexType name=&quot;response&quot;&amp;gt;
        &amp;lt;xsd:sequence&amp;gt;
            &amp;lt;xsd:element name=&quot;message&quot; type=&quot;xsd:string&quot; /&amp;gt;
            &amp;lt;xsd:element name=&quot;code&quot; type=&quot;xsd:string&quot; /&amp;gt;
            &amp;lt;xsd:element name=&quot;status&quot; type=&quot;xsd:string&quot; /&amp;gt;
        &amp;lt;/xsd:sequence&amp;gt;
    &amp;lt;/xsd:complexType&amp;gt;
 
&amp;lt;/xsd:schema&amp;gt;

       &lt;/pre&gt;       &lt;p&gt;        PersonEndpoint.java&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;package com.hoteia.howto.spring.ws;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;

import com.hoteia.howto.spring.Constants;
import com.hoteia.howto.spring.ws.jaxb.pojo.ObjectFactory;
import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsRequest;
import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsResponse;
import com.hoteia.howto.spring.ws.service.PersonEndPointService;

/**
 * Person Web service endpoint. Uses a &lt;code&gt;PersonService&lt;/code&gt; to create a response string.
 *
 */
@Endpoint
public class PersonEndpoint {

 protected final Log logger = LogFactory.getLog(getClass());
 
    /**
     * The local name of the expected request.
     */
    public static final String PERSON_REQUEST_LOCAL_NAME = &quot;save-persons-request&quot;;

    /**
     * The local name of the created response.
     */
    public static final String PERSON_RESPONSE_LOCAL_NAME = &quot;save-persons-response&quot;;

    @Autowired
 private PersonEndPointService personEndPointService;

    /**
     * Reads the given &lt;code&gt;requestElement&lt;/code&gt;, and sends a the response back.
     *
     * @param requestElement the contents of the SOAP message as DOM elements
     * @return the response element
     */
    @PayloadRoot(localPart = PERSON_REQUEST_LOCAL_NAME, namespace = Constants.NAMESPACE_URI)
    public SavePersonsResponse handleSavePersonsResponseRequest(SavePersonsRequest savePersonsRequest) {
     
  ObjectFactory objFactory = new ObjectFactory();
  SavePersonsResponse savePersonsResponse = objFactory.createSavePersonsResponse();
  personEndPointService.savePersons(savePersonsRequest, savePersonsResponse);
   
        return savePersonsResponse;
    }
    
}
       &lt;/pre&gt;       &lt;p&gt;        PersonEndPointServiceImpl.java&lt;br /&gt;
       &lt;/p&gt;       &lt;div class=&quot;code&quot;&gt;package com.hoteia.howto.spring.ws.service.impl;&lt;br /&gt;
&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
&lt;br /&gt;
import org.apache.commons.lang.StringUtils;&lt;br /&gt;
import org.apache.commons.logging.Log;&lt;br /&gt;
import org.apache.commons.logging.LogFactory;&lt;br /&gt;
&lt;br /&gt;
import com.hoteia.howto.spring.domain.Person;&lt;br /&gt;
import com.hoteia.howto.spring.service.PersonService;&lt;br /&gt;
import com.hoteia.howto.spring.ws.jaxb.pojo.ObjectFactory;&lt;br /&gt;
import com.hoteia.howto.spring.ws.jaxb.pojo.Response;&lt;br /&gt;
import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsRequest;&lt;br /&gt;
import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsResponse;&lt;br /&gt;
import com.hoteia.howto.spring.ws.service.PersonEndPointService;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Default implementation of &lt;code&gt;PersonEndPointService&lt;/code&gt;.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class PersonEndPointServiceImpl implements PersonEndPointService {&lt;br /&gt;
&lt;br /&gt;
 protected final Log logger = LogFactory.getLog(getClass());&lt;br /&gt;
 &lt;br /&gt;
 private PersonService personService;&lt;br /&gt;
 &lt;br /&gt;
    public void setPersonService(PersonService personService) {&lt;br /&gt;
        this.personService = personService;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void savePersons(SavePersonsRequest savePersonsRequest, SavePersonsResponse savePersonsResponse) {&lt;br /&gt;
     try {&lt;br /&gt;
&lt;br /&gt;
         for (Iterator&amp;lt;com.hoteia.howto.spring.ws.jaxb.pojo.Person&amp;gt; iterator = savePersonsRequest.getPerson().iterator(); iterator.hasNext();) {&lt;br /&gt;
          com.hoteia.howto.spring.ws.jaxb.pojo.Person personPojo = (com.hoteia.howto.spring.ws.jaxb.pojo.Person) iterator.next();&lt;br /&gt;
       &lt;br /&gt;
       Person person = new Person();&lt;br /&gt;
          if(StringUtils.isNotEmpty(personPojo.getId())){&lt;br /&gt;
           person = personService.getPersonById(personPojo.getId());&lt;br /&gt;
          }&lt;br /&gt;
       person.setLastname(personPojo.getLastname());&lt;br /&gt;
       person.setFirstname(personPojo.getFirstname());&lt;br /&gt;
       &lt;br /&gt;
       personService.savePerson(person);&lt;br /&gt;
       &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
         ObjectFactory objFactory = new ObjectFactory();&lt;br /&gt;
   Response response = objFactory.createResponse();&lt;br /&gt;
   response.setCode(&quot;SUCCESS&quot;);&lt;br /&gt;
   response.setMessage(&quot;SUCCESS&quot;);&lt;br /&gt;
   response.setStatus(&quot;SUCCESS&quot;);&lt;br /&gt;
   &lt;br /&gt;
   savePersonsResponse.setResponse(response);&lt;br /&gt;
&lt;br /&gt;
     } catch (Exception e) {&lt;br /&gt;
      logger.error(&quot;Error during the save of the persons&quot;, e);&lt;br /&gt;
      &lt;br /&gt;
         ObjectFactory objFactory = new ObjectFactory();&lt;br /&gt;
   Response response = objFactory.createResponse();&lt;br /&gt;
   response.setCode(&quot;ERROR&quot;);&lt;br /&gt;
   response.setMessage(&quot;ERROR&quot;);&lt;br /&gt;
   response.setStatus(&quot;ERROR&quot;);&lt;br /&gt;
   &lt;br /&gt;
   savePersonsResponse.setResponse(response);&lt;br /&gt;
  }&lt;br /&gt;
     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
       &lt;/div&gt;       &lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;       &lt;p&gt;        PersonClient.java&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;package com.hoteia.howto.spring.ws.client;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.ws.client.core.support.WebServiceGatewaySupport;

import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsRequest;
import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsResponse;

public class PersonClient extends WebServiceGatewaySupport {

 protected final Log logger = LogFactory.getLog(PersonClient.class.getName());

    public void savePersons(SavePersonsRequest savePersonsRequest) throws Exception {
        SavePersonsResponse savePersonsResponse = (SavePersonsResponse) getWebServiceTemplate().marshalSendAndReceive(savePersonsRequest);
  
        if(savePersonsResponse.getResponse().getCode().equals(&quot;ERROR&quot;)){
   logger.error(&quot;something is wrong with the person ws response&quot;);
  }

    }
}
       &lt;/pre&gt;       &lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;       &lt;p&gt;        Nous découpons les contexts Spring en 3 fichiers common, server, client, afin de pouvoir les importer depuis le même jar sans contrainte.&lt;br /&gt;
       &lt;/p&gt;       &lt;p&gt;        spring-ws-common.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;&amp;gt;

    &amp;lt;bean id=&quot;xsdSchema&quot; class=&quot;org.springframework.xml.xsd.SimpleXsdSchema&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This bean definition contains the XSD schema.
        &amp;lt;/description&amp;gt;
        &amp;lt;property name=&quot;xsd&quot; ref=&quot;xsd&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;
 
 &amp;lt;bean id=&quot;marshaller&quot; class=&quot;org.springframework.oxm.jaxb.Jaxb2Marshaller&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            The JAXB 2 Marshaller is used by the endpoints.
        &amp;lt;/description&amp;gt;
  &amp;lt;property name=&quot;contextPath&quot; value=&quot;com.hoteia.howto.spring.ws.jaxb.pojo&quot;/&amp;gt;
        &amp;lt;property name=&quot;schema&quot; ref=&quot;xsd&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;
 
    &amp;lt;bean class=&quot;org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This adapter allows for methods that need and returns marshalled objects. The MarshallingEndpoint
            uses JAXB 2 objects.
        &amp;lt;/description&amp;gt;
        &amp;lt;constructor-arg ref=&quot;marshaller&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;

 &amp;lt;bean id=&quot;xsd&quot; class=&quot;java.lang.String&quot;&amp;gt;
     &amp;lt;constructor-arg type=&quot;String&quot; value=&quot;classpath:/person.xsd&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;
&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;p&gt;        spring-ws-server.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;&amp;gt;

    &amp;lt;description&amp;gt;
        This web application context contains Spring-WS beans. The beans defined in this context are automatically
        detected by Spring-WS, similar to the way Controllers are picked up in Spring Web MVC.
    &amp;lt;/description&amp;gt;

    &amp;lt;import resource=&quot;spring-ws-common.xml&quot; /&amp;gt;
 
    &amp;lt;bean id=&quot;personEndPointService&quot; class=&quot;com.hoteia.howto.spring.ws.service.impl.PersonEndPointServiceImpl&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This bean is the person service.
        &amp;lt;/description&amp;gt;
        &amp;lt;property name=&quot;personService&quot; ref=&quot;personService&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;
 
    &amp;lt;bean id=&quot;payloadMapping&quot; class=&quot;org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This endpoint mapping uses the qualified name of the payload (body contents) to determine the endpoint for
            an incoming message. Every message is passed to the default endpoint. Additionally, messages are logged
            using the logging interceptor.
        &amp;lt;/description&amp;gt;
        &amp;lt;property name=&quot;interceptors&quot;&amp;gt;
            &amp;lt;list&amp;gt;
                &amp;lt;ref local=&quot;validatingInterceptor&quot;/&amp;gt;
                &amp;lt;ref local=&quot;loggingInterceptor&quot;/&amp;gt;
            &amp;lt;/list&amp;gt;
        &amp;lt;/property&amp;gt;
    &amp;lt;/bean&amp;gt;

    &amp;lt;bean id=&quot;validatingInterceptor&quot;
          class=&quot;org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This interceptor validates both incoming and outgoing message contents according to the &#39;person.xsd&#39; XML
            Schema file.
        &amp;lt;/description&amp;gt;
        &amp;lt;property name=&quot;xsdSchema&quot; ref=&quot;xsdSchema&quot;/&amp;gt;
        &amp;lt;property name=&quot;validateRequest&quot; value=&quot;true&quot;/&amp;gt;
        &amp;lt;property name=&quot;validateResponse&quot; value=&quot;true&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;

    &amp;lt;bean class=&quot;org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter&quot;/&amp;gt;

    &amp;lt;bean id=&quot;loggingInterceptor&quot; class=&quot;org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This interceptor logs the message payload.
        &amp;lt;/description&amp;gt;
    &amp;lt;/bean&amp;gt;

    &amp;lt;bean id=&quot;person&quot; class=&quot;org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition&quot;&amp;gt;
        &amp;lt;description&amp;gt;
            This bean definition represents a WSDL definition that is generated at runtime. It can be retrieved by
            going to http://localhost:8280/ws-in/ws/services/person/person.wsdl (i.e. the bean name corresponds to the filename).
        &amp;lt;/description&amp;gt;
        &amp;lt;property name=&quot;schema&quot; ref=&quot;xsdSchema&quot;/&amp;gt;
        &amp;lt;property name=&quot;portTypeName&quot; value=&quot;Person&quot;/&amp;gt;
        &amp;lt;property name=&quot;locationUri&quot; value=&quot;http://localhost:8280/ws-in/ws/services/person&quot;/&amp;gt;
        &amp;lt;property name=&quot;targetNamespace&quot; value=&quot;http://localhost:8280/ws-in/ws/services/person/schemas&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;
 


&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;p&gt;        spring-ws-client.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;&amp;gt;

    &amp;lt;import resource=&quot;spring-ws-common.xml&quot; /&amp;gt;

    &amp;lt;bean id=&quot;personClient&quot; class=&quot;com.hoteia.howto.spring.ws.client.PersonClient&quot;&amp;gt;
        &amp;lt;property name=&quot;defaultUri&quot; value=&quot;http://localhost:8280/ws-in/ws/services/person&quot;/&amp;gt;
        &amp;lt;property name=&quot;marshaller&quot; ref=&quot;marshaller&quot;/&amp;gt;
        &amp;lt;property name=&quot;unmarshaller&quot; ref=&quot;marshaller&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;/div&gt;      &lt;div class=&quot;links&quot;&gt;       &lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;       &lt;div class=&quot;links_list&quot;&gt;        &lt;a href=&quot;http://jaxb.java.net/&quot; alt=&quot;Jaxb&quot; target=&quot;_blank&quot;&gt;Jaxb&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;
        &lt;a href=&quot;http://static.springsource.org/spring-ws/sites/2.0/&quot; alt=&quot;Spring 2.0&quot; target=&quot;_blank&quot;&gt;Spring 2.0&lt;/a&gt;&lt;br /&gt;
       &lt;/div&gt;      &lt;/div&gt;      &lt;div class=&quot;title&quot;&gt;Mise en place d&#39;un front pour la sortie (envoi) Webservice&lt;/div&gt;      &lt;div class=&quot;content&quot;&gt;       &lt;p&gt;        Nous utiliserons uniquement un controleur pour constuire n &quot;Persons&quot;, et les envoyer via le webservice distant.&lt;br /&gt;
       &lt;/p&gt;       &lt;p&gt;        PersonController.java&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;package com.hoteia.howto.spring.mvc.controller;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.hoteia.howto.spring.ws.client.PersonClient;
import com.hoteia.howto.spring.ws.jaxb.pojo.ObjectFactory;
import com.hoteia.howto.spring.ws.jaxb.pojo.Person;
import com.hoteia.howto.spring.ws.jaxb.pojo.SavePersonsRequest;

@Controller
@RequestMapping(&quot;/sendPersons&quot;)
public class PersonController {

 protected final Log logger = LogFactory.getLog(getClass());

 @Autowired
 private PersonClient personClient;
 
 @RequestMapping(method = RequestMethod.GET)
 public ModelAndView parse(){
  if(logger.isDebugEnabled()){
   logger.debug(&quot;sendPersons&quot;);
  }
  
  try {
   ObjectFactory objFactory = new ObjectFactory();
   
   SavePersonsRequest savePersonsRequest = objFactory.createSavePersonsRequest();
   
   Map&amp;lt;String, Person&amp;gt; persons = buildPersonDetails();

   int poolSize = 50;
   int count = 1;
         for (Iterator&amp;lt;Person&amp;gt; iterator = persons.values().iterator(); iterator.hasNext();) {

          Person person = (Person) iterator.next();
    savePersonsRequest.getPerson().add(person);

    if(count == poolSize
      || count == persons.size()){
     personClient.savePersons(savePersonsRequest);
     savePersonsRequest = objFactory.createSavePersonsRequest();
     count = 1;
    }

    count++;
    
         }
   
  } catch (Exception e) {
   logger.error(&quot;Error on the parse controller&quot;, e);
  }

  ModelAndView model = new ModelAndView(&quot;sendPersons-view&quot;);
 
  return model;
 }
 
 private Map&amp;lt;String, Person&amp;gt; buildPersonDetails(){
  if(logger.isDebugEnabled()){
   logger.debug(&quot;start to build person Map&quot;);
  }

  Map&amp;lt;String, Person&amp;gt; persons = new HashMap&amp;lt;String, Person&amp;gt;();
  
  Person person = new Person();
  person.setId(&quot;&quot;);
  person.setLastname(&quot;Bar&quot;);
  person.setFirstname(&quot;Foo&quot;);
  persons.put(person.getLastname() + &quot;-&quot; + person.getFirstname(), person);
  
  if(logger.isDebugEnabled()){
   logger.debug(&quot;stop to build person Map&quot;);
  }
  
  return persons;
 }
}
       &lt;/pre&gt;       &lt;p&gt;        dispatcher-servlet.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
 xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
 xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
 xsi:schemaLocation=&quot;
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&quot;&amp;gt;

 &amp;lt;!-- Scans the classpath of this application for @Components to deploy as beans --&amp;gt;
 &amp;lt;context:component-scan base-package=&quot;com.hoteia.howto.spring.mvc&quot; /&amp;gt;

 &amp;lt;!-- Application Message Bundle --&amp;gt;
 &amp;lt;bean id=&quot;messageSource&quot; class=&quot;org.springframework.context.support.ReloadableResourceBundleMessageSource&quot;&amp;gt;
  &amp;lt;property name=&quot;basename&quot; value=&quot;/WEB-INF/classes/ApplicationResources&quot; /&amp;gt;
  &amp;lt;property name=&quot;cacheSeconds&quot; value=&quot;0&quot; /&amp;gt;
 &amp;lt;/bean&amp;gt;

 &amp;lt;!-- Configures Spring WS Client --&amp;gt;
 &amp;lt;import resource=&quot;classpath*:spring-ws-client.xml&quot; /&amp;gt;

 &amp;lt;!-- Configures Spring MVC --&amp;gt;
 &amp;lt;import resource=&quot;mvc-config.xml&quot; /&amp;gt;

&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;p&gt;        mvc-config.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
 xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
 xmlns:mvc=&quot;http://www.springframework.org/schema/mvc&quot;
 xsi:schemaLocation=&quot;
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&quot;&amp;gt;

 &amp;lt;!-- Configures the @Controller programming model --&amp;gt;
 &amp;lt;mvc:annotation-driven /&amp;gt;

 &amp;lt;!-- Forwards requests to the &quot;/&quot; resource to the &quot;welcome&quot; view --&amp;gt;
 &amp;lt;mvc:view-controller path=&quot;/&quot; view-name=&quot;welcome&quot;/&amp;gt;

 &amp;lt;!-- Configures Handler Interceptors --&amp;gt; 
 &amp;lt;mvc:interceptors&amp;gt;
  &amp;lt;!-- Changes the locale when a &#39;locale&#39; request parameter is sent; e.g. /?locale=de --&amp;gt;
  &amp;lt;bean class=&quot;org.springframework.web.servlet.i18n.LocaleChangeInterceptor&quot; /&amp;gt;
 &amp;lt;/mvc:interceptors&amp;gt;

 &amp;lt;!-- Saves a locale change using a cookie --&amp;gt;
 &amp;lt;bean id=&quot;localeResolver&quot; class=&quot;org.springframework.web.servlet.i18n.CookieLocaleResolver&quot; /&amp;gt;

 &amp;lt;!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory --&amp;gt;
 &amp;lt;bean class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&amp;gt;
  &amp;lt;property name=&quot;prefix&quot; value=&quot;/WEB-INF/views/&quot;/&amp;gt;
  &amp;lt;property name=&quot;suffix&quot; value=&quot;.jsp&quot;/&amp;gt;
 &amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;      &lt;/div&gt;      &lt;div class=&quot;links&quot;&gt;       &lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;       &lt;div class=&quot;links_list&quot;&gt;        &lt;a href=&quot;http://www.springsource.com/&quot; alt=&quot;www.springsource.com&quot; target=&quot;_blank&quot;&gt;Spring Source&lt;/a&gt;&lt;br /&gt;
       &lt;/div&gt;      &lt;/div&gt;      &lt;div class=&quot;title&quot;&gt;Mise en place d&#39;un front pour l&#39;entrée (réception) Webservice&lt;/div&gt;      &lt;div class=&quot;content&quot;&gt;       &lt;p&gt;        dispatcher-servlet.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
 xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
 xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
 xsi:schemaLocation=&quot;
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&quot;&amp;gt;

 &amp;lt;!-- Scans the classpath of this application for @Components to deploy as beans --&amp;gt;
 &amp;lt;context:component-scan base-package=&quot;com.hoteia.howto.spring.mvc&quot; /&amp;gt;
 
 &amp;lt;!-- Configures Spring MVC --&amp;gt;
 &amp;lt;import resource=&quot;mvc-config.xml&quot; /&amp;gt;
 
 &amp;lt;!-- Application Message Bundle --&amp;gt;
 &amp;lt;bean id=&quot;messageSource&quot; class=&quot;org.springframework.context.support.ReloadableResourceBundleMessageSource&quot;&amp;gt;
  &amp;lt;property name=&quot;basename&quot; value=&quot;/WEB-INF/classes/ApplicationResources&quot; /&amp;gt;
  &amp;lt;property name=&quot;cacheSeconds&quot; value=&quot;0&quot; /&amp;gt;
 &amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;p&gt;        mvc-config.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
 xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
 xmlns:mvc=&quot;http://www.springframework.org/schema/mvc&quot;
 xsi:schemaLocation=&quot;
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&quot;&amp;gt;

 &amp;lt;!-- Configures the @Controller programming model --&amp;gt;
 &amp;lt;mvc:annotation-driven /&amp;gt;

 &amp;lt;!-- Forwards requests to the &quot;/&quot; resource to the &quot;welcome&quot; view --&amp;gt;
 &amp;lt;mvc:view-controller path=&quot;/&quot; view-name=&quot;welcome&quot;/&amp;gt;

 &amp;lt;!-- Configures Handler Interceptors --&amp;gt; 
 &amp;lt;mvc:interceptors&amp;gt;
  &amp;lt;!-- Changes the locale when a &#39;locale&#39; request parameter is sent; e.g. /?locale=de --&amp;gt;
  &amp;lt;bean class=&quot;org.springframework.web.servlet.i18n.LocaleChangeInterceptor&quot; /&amp;gt;
 &amp;lt;/mvc:interceptors&amp;gt;

 &amp;lt;!-- Saves a locale change using a cookie --&amp;gt;
 &amp;lt;bean id=&quot;localeResolver&quot; class=&quot;org.springframework.web.servlet.i18n.CookieLocaleResolver&quot; /&amp;gt;

 &amp;lt;!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory --&amp;gt;
 &amp;lt;bean class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&amp;gt;
  &amp;lt;property name=&quot;prefix&quot; value=&quot;/WEB-INF/views/&quot;/&amp;gt;
  &amp;lt;property name=&quot;suffix&quot; value=&quot;.jsp&quot;/&amp;gt;
 &amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;       &lt;p&gt;        db-config.xml&lt;br /&gt;
       &lt;/p&gt;       &lt;pre class=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
     xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:p=&quot;http://www.springframework.org/schema/p&quot;
     xmlns:context=&quot;http://www.springframework.org/schema/context&quot; xmlns:tx=&quot;http://www.springframework.org/schema/tx&quot;
     xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     &quot;&amp;gt;

 &amp;lt;context:component-scan base-package=&quot;com.hoteia.howto&quot;/&amp;gt;
  
 &amp;lt;!-- Configures Spring WS Server --&amp;gt;
 &amp;lt;import resource=&quot;classpath*:spring-ws-server.xml&quot; /&amp;gt;

    &amp;lt;bean id=&quot;sessionFactory&quot;
        class=&quot;org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean&quot;&amp;gt;
        &amp;lt;property name=&quot;dataSource&quot;&amp;gt;
            &amp;lt;ref bean=&quot;dataSource&quot; /&amp;gt;
        &amp;lt;/property&amp;gt;
        &amp;lt;property name=&quot;packagesToScan&quot; value=&quot;com.hoteia.howto.spring.domain&quot; /&amp;gt;
        &amp;lt;property name=&quot;hibernateProperties&quot;&amp;gt;
            &amp;lt;props&amp;gt;
                &amp;lt;prop key=&quot;hibernate.dialect&quot;&amp;gt;${hibernate.dialect}&amp;lt;/prop&amp;gt;
                &amp;lt;prop key=&quot;hibernate.hbm2ddl.auto&quot;&amp;gt;create&amp;lt;/prop&amp;gt;
                &amp;lt;prop key=&quot;hibernate.show_sql&quot;&amp;gt;false&amp;lt;/prop&amp;gt;
            &amp;lt;/props&amp;gt;
        &amp;lt;/property&amp;gt;
    &amp;lt;/bean&amp;gt;

    &amp;lt;bean id=&quot;transactionManager&quot;
        class=&quot;org.springframework.orm.hibernate3.HibernateTransactionManager&quot;&amp;gt;
        &amp;lt;property name=&quot;sessionFactory&quot;&amp;gt;
            &amp;lt;ref bean=&quot;sessionFactory&quot; /&amp;gt;
        &amp;lt;/property&amp;gt;
    &amp;lt;/bean&amp;gt;
 
    &amp;lt;bean id=&quot;propertyConfigurer&quot;
        class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&amp;gt;
        &amp;lt;property name=&quot;locations&quot;&amp;gt;
            &amp;lt;list&amp;gt;
                &amp;lt;value&amp;gt;classpath:jdbc.properties&amp;lt;/value&amp;gt;
            &amp;lt;/list&amp;gt;
        &amp;lt;/property&amp;gt;
    &amp;lt;/bean&amp;gt;
 
 &amp;lt;!-- JNDI DataSource for J2EE environments --&amp;gt;
    &amp;lt;bean id=&quot;dataSource&quot; class=&quot;org.apache.commons.dbcp.BasicDataSource&quot; destroy-method=&quot;close&quot;&amp;gt;
        &amp;lt;property name=&quot;driverClassName&quot; value=&quot;${jdbc.driverClassName}&quot;/&amp;gt;
        &amp;lt;property name=&quot;url&quot; value=&quot;${jdbc.url}&quot;/&amp;gt;
        &amp;lt;property name=&quot;username&quot; value=&quot;${jdbc.username}&quot;/&amp;gt;
        &amp;lt;property name=&quot;password&quot; value=&quot;${jdbc.password}&quot;/&amp;gt;
        &amp;lt;property name=&quot;maxActive&quot; value=&quot;100&quot;/&amp;gt;
        &amp;lt;property name=&quot;maxWait&quot; value=&quot;1000&quot;/&amp;gt;
        &amp;lt;property name=&quot;poolPreparedStatements&quot; value=&quot;true&quot;/&amp;gt;
        &amp;lt;property name=&quot;defaultAutoCommit&quot; value=&quot;true&quot;/&amp;gt;
    &amp;lt;/bean&amp;gt;
 
&amp;lt;/beans&amp;gt;
       &lt;/pre&gt;      &lt;/div&gt;      &lt;div class=&quot;links&quot;&gt;       &lt;div class=&quot;subtitle&quot;&gt;Références&lt;/div&gt;       &lt;div class=&quot;links_list&quot;&gt;        &lt;a href=&quot;http://www.springsource.com/&quot; alt=&quot;www.springsource.com&quot; target=&quot;_blank&quot;&gt;Spring Source&lt;/a&gt;&lt;br /&gt;
       &lt;/div&gt;      &lt;/div&gt;     &lt;/div&gt;    &lt;/div&gt;   &lt;/div&gt;  &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/1469356810679559615/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2011/01/spring-webservice-20-with-jaxb-maven.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/1469356810679559615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/1469356810679559615'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2011/01/spring-webservice-20-with-jaxb-maven.html' title='Spring Webservice 2.0 with JaxB (Maven, Hibernate, Tomcat)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-5351686177653384738</id><published>2010-12-04T20:04:00.003+01:00</published><updated>2012-11-21T10:36:15.428+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><title type='text'>Git over https by Apache 2 &amp; Apache Directory (Ubuntu)</title><content type='html'>&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;
$(function() {
$( &quot;#tabs-git-over-https-apache-directory&quot; ).tabs();
});
&lt;/script&gt;
&lt;div class=&quot;article&quot;&gt;
&lt;div id=&quot;tabs-git-over-https-apache-directory&quot;&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#tabs-git-over-https-apache-directory-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;&lt;br /&gt;
&lt;div id=&quot;tabs-git-over-https-apache-directory-fr&quot;&gt;&lt;br /&gt;
&lt;div id=&quot;content&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;title&quot;&gt;Pré-requis&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;content&quot;&gt;&lt;br /&gt;
Pour ce tutorial, nous travaillons avec une version d&#39;Ubuntu 10.10 server, JDK 1.6.0_22.&lt;br /&gt;
Nous commencerons par installer Apache Directory, Git et Apache 2.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;title&quot;&gt;Apache Directory&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;content&quot;&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Download d&#39;Apache Directory 1.5.X depuis &lt;a href=&quot;http://directory.apache.org/apacheds/1.5/download/download-linux-bin.html&quot; alt=&quot;Download Apache Directory&quot; target=&quot;_blank&quot;&gt;http://directory.apache.org/apacheds/1.5/download/download-linux-bin.html&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div id=&quot;links&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;1) cd /opt
2) mkdir dl
3) cd dl
4) wget http://mirror.ibcp.fr/pub/apache//directory/apacheds/unstable/1.5/1.5.7/apacheds-1.5.7-x86_64.bin
5) chmod a+x apacheds-1.5.7-x86_64.bin
6) ./apacheds-1.5.7-x86_64.bin
&lt;/pre&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;Where do you want to install Apache DS? [Default: /opt/apacheds-1.5.7]
&lt;b&gt;&lt;i&gt;we have keep the default folder&lt;/i&gt;&lt;/b&gt;
Where do you want to install Apache DS instances? [Default: /var/lib/apacheds-1.5.7]
&lt;b&gt;&lt;i&gt;we have keep the default folder&lt;/i&gt;&lt;/b&gt;
What name do you want for the default instance? [Default: default]
&lt;b&gt;&lt;i&gt;we have use the name of the company&lt;/i&gt;&lt;/b&gt;
Where do you want to install the startup script? [Default: /etc/init.d]
&lt;b&gt;&lt;i&gt;we have keep the default folder&lt;/i&gt;&lt;/b&gt;
Which user do you want to run the server with (if not already existing, the specified user will be created)? [Default: apacheds]
&lt;b&gt;&lt;i&gt;we have keep the default name&lt;/i&gt;&lt;/b&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Rapel des commandes :&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
/etc/init.d/apacheds-1.5.7-company-name start&lt;br /&gt;
/etc/init.d/apacheds-1.5.7-company-name restart&lt;br /&gt;
/etc/init.d/apacheds-1.5.7-company-name stop&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Pour manipuler la configuration et l&#39;utilisation de votre server LDAP Apache Directory, il est fortement conseillé d&#39;utiliser Apache Directory Studio :&lt;br /&gt;
&lt;a href=&quot;http://directory.apache.org/studio/&quot; alt=&quot;Download Apache Directory Studio&quot; target=&quot;_blank&quot;&gt;http://directory.apache.org/studio/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Votre LDAP étant probablement ouvert sur le net, pensez à changer le mot de passe par défaut qui est :&lt;/i&gt;&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
uid=admin,ou=system&lt;br /&gt;
&lt;br /&gt;
password=secret&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;links&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;subtitle&quot;&gt;Références Apache Directory&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;links_list&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://directory.apache.org/apacheds/1.5/143-changing-the-admin-password.html&quot; alt=&quot;Change the admin password&quot; target=&quot;_blank&quot;&gt;Change the admin password&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://fusesource.com/docs/esb/4.3/amq_security/LDAP-AddUserEntries.html&quot; alt=&quot;Create a user&quot; target=&quot;_blank&quot;&gt;Create a user&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;title&quot;&gt;Git&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;content&quot;&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Installation rapide de Git.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install git-core gitweb
&lt;/pre&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
- The git repository will be here : /var/cache/git&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Création du repository avec le nom que vous souhaitez.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/cache/git
mkdir your-company.git
cd your-company.git
&lt;/pre&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
Nous changerons les droits plus tard pour le user d&#39;Apache.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Création du repository avec le nom que vous souhaitez.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/cache/git/your-company.git
git init
&lt;i&gt;créer un lien sympolique si besoin&lt;/i&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Testons rapidement la connexion depuis Eclipse et son plugin (qui ATTENTION ne fonctionnera pas en http/https avec la version testée).&lt;br /&gt;
&lt;br /&gt;
Check &lt;a href=&quot;http://www.eclipse.org/egit/&quot; alt=&quot;EGit&quot; target=&quot;_blank&quot;&gt;http://www.eclipse.org/egit/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;ssh://git@your-ip-or-domain/your-repository-path
&lt;/pre&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
On observe :&lt;br /&gt;
&lt;br /&gt;
Branches&lt;br /&gt;
&lt;br /&gt;
Tags&lt;br /&gt;
&lt;br /&gt;
Symbolic References&lt;br /&gt;
&lt;br /&gt;
Remotes&lt;br /&gt;
&lt;br /&gt;
Working directory (branch master)&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;links&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;subtitle&quot;&gt;Références Git&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;links_list&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://progit.org/book/&quot; alt=&quot;Pro Git Book&quot; target=&quot;_blank&quot;&gt;http://progit.org/book/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.eclipse.org/resources/resource.php?id=528&quot; alt=&quot;Eclipse Plugin EGit&quot; target=&quot;_blank&quot;&gt;http://www.eclipse.org/resources/resource.php?id=528&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;title&quot;&gt;Apache 2&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;content&quot;&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Dernière étape :)&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install apache2
cd /etc/apache2/
a2enmod ssl
a2enmod authnz_ldap  
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Les commandes habituelles pour mémoire :&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/init.d/apache2 start
/etc/init.d/apache2 restart
/etc/init.d/apache2 stop
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Création de votre fichier de conf VirtualHost :&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;nano /etc/apache2/sites-available/yourcompany-ssl
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Exemple de configuration :&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;SetEnv GIT_PROJECT_ROOT /var/cache/git
SetEnv GIT_HTTP_EXPORT_ALL

NameVirtualHost git.yourdomain.com:443

&amp;lt;VirtualHost git.yourdomain.com:443&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DocumentRoot /var/cache/git
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServerName git.yourdomain.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorLog /var/log/apache2/git.error.log
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LogLevel warn
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CustomLog /var/log/apache2/git.access.log combined
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServerSignature On
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Options Indexes FollowSymLinks MultiViews
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SSLEngine On
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SSLCertificateFile /etc/ssl/certs/yourdomain.crt
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SSLCertificateKeyFile /etc/ssl/private/yourdomain.key

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ScriptAlias / /usr/lib64/git-core/git-http-backend/

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Location &quot;/&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthBasicProvider ldap
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthType Basic
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthzLDAPAuthoritative on
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthName &quot;Git server&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthLDAPURL &quot;ldap://ldap.yourdomain.com:10389/ou=users,ou=system&quot; NONE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthLDAPBindDN &quot;uid=yourUserGitName,ou=users,ou=system&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AuthLDAPBindPassword yourUserPassword
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;require valid-user
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Order deny,allow
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Location&gt;

&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Attention, si comme nous, vous travaillez avec des changements de configuration sur votre nom de domaine, il peut être utile de modifier votre host.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
Check if your address is up&lt;br /&gt;
&lt;br /&gt;
ERROR : (EAI 2)Name or service not known: Could not resolve host name&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;nano /etc/hosts
&lt;i&gt;add the line&lt;/i&gt;
91.121.143.131 git.your-domain.com
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Activer votre configuration et donnez les droits à Apache pour qu&#39;il puisse par la suite manipuler le repository.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;cd /etc/apache2/
a2ensite yourcompany-ssl
chown -R www-data.www-data /var/cache/git/
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Création de vos certificat/clé.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;cd /etc/ssl/private/
openssl genrsa -out your-company.key 1024

cd /etc/ssl/certs/
openssl req -new -key ../private/your-company.key -out your-company.csr
openssl x509 -req -days 365 -in your-company.csr -signkey ../private/your-company.key -out your-company.crt
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Redémarrer ou recharger votre server SSH.&lt;br /&gt;
Rapel des commandes :&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
sudo /etc/init.d/ssh reload&lt;br /&gt;
&lt;br /&gt;
sudo /etc/init.d/ssh restart&lt;br /&gt;
&lt;br /&gt;
sudo /etc/init.d/ssh start&lt;br /&gt;
&lt;br /&gt;
sudo /etc/init.d/ssh stop&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;links&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;subtitle&quot;&gt;Références Apache &amp; Git&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;links_list&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.courtine.org/2010/11/19/git-et-ldap-en-entreprise/&quot; alt=&quot;blog.courtine.org&quot; target=&quot;_blank&quot;&gt;http://blog.courtine.org/2010/11/19/git-et-ldap-en-entreprise/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.jeremyskinner.co.uk/2010/07/31/hosting-a-git-server-under-apache-on-windows/&quot; alt=&quot;www.jeremyskinner.co.uk&quot; target=&quot;_blank&quot;&gt;http://www.jeremyskinner.co.uk/2010/07/31/hosting-a-git-server-under-apache-on-windows/&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;title&quot;&gt;Fin de la configuration entre Git et Apache&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;content&quot;&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Vous aller maintenant pouvoir récuperer votre projet depuis votre server git via https.&lt;br /&gt;
&lt;br /&gt;
Votre URL pour manipuler Git sera de la forme :&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;info&quot;&gt;&lt;br /&gt;
https://yourUserGitName:yourUserPassword@git.your-domain.com/your-git-repository/&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Pour simplifier les choses, désactivons la verification SSL.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;git config --global http.sslverify &quot;false&quot;
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Récupération du projet depuis votre repo en ligne. Cette commande va créer un projet du même nom que votre repo (sans le .git).&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://yourUserGitName:yourUserPassword:@git.your-domain.com/your-git-repository/
&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Depuis Eclipse, importer ce projet comme projet Java, ou créer un projet Java pointant sur ce projet checkouté.&lt;br /&gt;
La version d&#39;Egit 0.9.3 ne m&#39;a pas permis de travailler en http ou https.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
Commance ici, l&#39;utilisation de Git en mode commande. On vous laisse découvrir la doc ou d&#39;autres blogs traitant du sujet.&lt;br /&gt;
Vous pouvez déjà créer dans votre nouveau projet un fichier text pour vérifier que votre server Apache possède les droits afin de manipuler le repository Git.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;git add your-test-file
git commit
&lt;i&gt;you had just commit on your local repository, so now you will push to your remote project on the git server&lt;/i&gt;
git push
&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/5351686177653384738/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2010/12/git-over-https-by-apache-2-apache_04.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/5351686177653384738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/5351686177653384738'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2010/12/git-over-https-by-apache-2-apache_04.html' title='Git over https by Apache 2 &amp; Apache Directory (Ubuntu)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2329153605349233615.post-1992838881498055859</id><published>2010-11-30T17:48:00.005+01:00</published><updated>2012-11-21T10:36:15.416+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="All"/><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><title type='text'>Here we are...</title><content type='html'>&lt;script&gt;
  $(function() {
   $( &quot;#tabs-here-we-are&quot; ).tabs();
  });
&lt;/script&gt;
&lt;div class=&quot;article&quot;&gt;
 &lt;div id=&quot;tabs-here-we-are&quot;&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-here-we-are-fr&quot;&gt;Français&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href=&quot;#tabs-here-we-are-en&quot;&gt;English&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id=&quot;tabs-here-we-are-fr&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt;Comme beaucoup d&#39;experts JEE et de passionnés de technologies, à notre tour, nous allons partager avec vous notre quotidien, nos réactions, nos conseils, nos tutoriaux.&lt;/p&gt;&lt;p&gt;à suivre...&lt;/p&gt;
   &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;tabs-here-we-are-en&quot;&gt;
   &lt;div id=&quot;content&quot;&gt;
    &lt;p&gt;As many experts and enthusiasts JEE technologies in our turn, we will share with you our lives, our reactions, our advices, our tutorials.&lt;/p&gt;&lt;p&gt;To be continued...&lt;/p&gt;
   &lt;/div&gt;
  &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.hoteia.com/feeds/1992838881498055859/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://blog.hoteia.com/2010/11/here-we-are.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/1992838881498055859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2329153605349233615/posts/default/1992838881498055859'/><link rel='alternate' type='text/html' href='http://blog.hoteia.com/2010/11/here-we-are.html' title='Here we are...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>