IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Tutoriel sur la réalisation d'application Web simple avec Spring


Sujet :

Spring Web Java

  1. #21
    Membre actif
    Homme Profil pro
    Développement logiciel
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développement logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Points : 244
    Points
    244
    Par défaut
    La petite remarque sur la configuration de Tomcat sous Eclipse m'apporte beaucoup! Je n'étais pas au courant des subtilités du plugin WTP et m'évertuais à configurer les "vrais" fichier de configuration du serveur. Cela explique aussi pourquoi Tomcat peut se passer du jar servlet-api.

    Maintenant ça marche beaucoup mieux, merci!

  2. #22
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bon c'est très bien.
    Bon courage pour la suite.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  3. #23
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Points : 53
    Points
    53
    Par défaut
    Salut,

    Tout d'abord je vous remercie pour votre intéressant tutoriel,moi j'ai commencé à pratiquer ce qu'il y'a dans votre tutoriel et j'aimerais bien débuter en spring mvc web,alors j'ai commencé à éxècuter le premier projet "tutoriel-web-spring" alors j'ai bien suivi toutes les étapes décrites dans votre tutoriel mais durant l'éxècution voici ce que m'a donné comme résultat:

    Etat HTTP 500 - Impossible de compiler la classe pour la JSP:

    type Rapport d''exception

    message Impossible de compiler la classe pour la JSP:

    description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

    exception

    org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP:

    An error occurred at line: [63] in the generated java file: [D:\projets\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\tutoriel-web-spring\org\apache\jsp\index_jsp.java]
    The method getDispatcherType() is undefined for the type HttpServletRequest

    Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:570)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/8.0.17
    c'est quoi l'origine de ce problème?

  4. #24
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Voici une réponse rapide car je n'ai pas le temps de faire le test complet.

    L'appel à cette méthode provient de l'utilisation de Tomcat 8 au lieu de Tomcat 7 comme indiqué dans l'article.
    La méthode getDispatcherType() existe dans HttpServletRequest depuis la version 3.0 (voir Javadoc de la classe mère http://docs.oracle.com/javaee/6/api/...cherType%28%29)

    Deux solutions :
    - utiliser Tomcat 7
    - Changer la dépendance du projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <dependency>
    	<groupId>javax.servlet</groupId>
    	<artifactId>javax.servlet-api</artifactId>
    	<version>3.1.0</version>
            <scope>compile</scope>
    </dependency>
    Bonne journée.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  5. #25
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 233
    Points : 53
    Points
    53
    Par défaut
    merci pour votre aide maintenant ça marche

  6. #26
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je viens de suivre votre tutoriel en l'adaptant à une BDD MySQL sans (trop) de difficultés.
    La lecture de cet article et sa mise en pratique permettent, à mon avis, d'acquérir une compréhension globale et claire du fonctionnement de Spring.

    Merci pour cette contribution qui constitue un très bon point de départ pour découvrir ce framework.

  7. #27
    Membre du Club
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Tout d'abord, merci pour ce tutoriel ! Néanmoins, je suis bloqué à la partie sur les injections de dépendances pour utiliser les données dans ma DB MySQL.
    L'erreur que j'ai au démarrage du serveur est là suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'afficherListeCoursesController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kdefives.tp.services.IServiceListeCourses com.kdefives.tp.controller.AfficherListeCoursesController.service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.kdefives.tp.services.IServiceListeCourses] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
    	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.kdefives.tp.services.IServiceListeCourses com.kdefives.tp.controller.AfficherListeCoursesController.service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.kdefives.tp.services.IServiceListeCourses] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
    	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    	... 22 more
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.kdefives.tp.services.IServiceListeCourses] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
    	... 24 more

    J'ai posté une demande d'aide sur le forum dans la rubrique Spring mais je la poste ici en espérant que tu pourras m'aider plus facilement étant donné que tu es le créateur du tuto. ^^

    Lien de mon post : http://www.developpez.net/forums/d15...or-dependency/

    Merci d'avance !

  8. #28
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonsoir,

    Une idée comme ca :
    Est-ce que ServiceListeCourses implémente IServiceListeCourses ?

    Bonne soirée.
    Régis.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  9. #29
    Membre du Club
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Bonjour Régis,

    Oui. J'ai réussi à trouver la solution. Le problème était que je n'avais pas déclarer mes packages dao et services dans mon fichier servlet-dispatch.xml

    Du coup j'en ai déduit que chaque package qui contient des classes utilisant des annotations du framework Spring doit être déclaré dans ce fichier XML ! ^^

    Merci pour ton feedback en tout cas

  10. #30
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 83
    Points
    83
    Par défaut Fichier de persistence.xml introuvable
    Bonjour Régis,

    Merci pour ce tutoriel très intéressant. Il m'a vraiment permis de finalement me lancer dans spring MVC.
    Je l'ai suivi pas à pas et je rencontre un problème. Spring n'arrive pas retrouver le fichier persistence.xml que j'ai placé dans le répertoire META-INF de src/main/resources.

    Voicie la trace de l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    oct. 12, 2015 2:24:29 PM org.apache.catalina.core.AprLifecycleListener init
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Users\magloire.U2GCAMEROUN\bin\Sencha\Cmd\ext-6.0.0;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\TortoiseSVN\bin;H:\Dev\wamp\bin\mysql\mysql5.5.16\bin;C:\Program Files\Java\jdk1.7.0_25\bin;C:\Program Files (x86)\Git\cmd;C:\Program Files\nodejs\;H:\Dev\wamp\bin\php\php5.4.43;H:\phpbin;H:\App\apache-ant-1.9.4\bin;H:\App\Android\sdk\platform-tools;H:\App\Android\sdk\tools;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;H:\App\apache-maven-3.3.3-bin\apache-maven-3.3.3\bin;C:\ProgramData\ComposerSetup\bin;C:\Python27;C:\svn\bin;H:\bin;C:\Program Files (x86)\salesforce.com\Data Loader\bin;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\Windows Live\Shared;C:\Users\magloire.U2GCAMEROUN\bin\Sencha\Cmd\6.0.0.202;C:\Ruby193\bin;C:\Users\magloire.U2GCAMEROUN\AppData\Roaming\npm;C:\Program Files (x86)\CVSNT\;C:\Program Files (x86)\Google\google_appengine\;.
    oct. 12, 2015 2:24:29 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
    WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:spring-web' did not find a matching property.
    oct. 12, 2015 2:24:29 PM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-bio-8080"]
    oct. 12, 2015 2:24:29 PM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
    oct. 12, 2015 2:24:29 PM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 1052 ms
    oct. 12, 2015 2:24:29 PM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    oct. 12, 2015 2:24:29 PM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.54
    oct. 12, 2015 2:24:33 PM org.apache.catalina.core.ApplicationContext log
    INFO: No Spring WebApplicationInitializer types detected on classpath
    oct. 12, 2015 2:24:33 PM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring root WebApplicationContext
    oct. 12, 2015 2:24:33 PM org.springframework.web.context.ContextLoader initWebApplicationContext
    INFO: Root WebApplicationContext: initialization started
    oct. 12, 2015 2:24:34 PM org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh
    INFO: Refreshing Root WebApplicationContext: startup date [Mon Oct 12 14:24:34 WAT 2015]; root of context hierarchy
    oct. 12, 2015 2:24:34 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
    oct. 12, 2015 2:24:35 PM org.springframework.web.context.ContextLoader initWebApplicationContext
    SEVERE: Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:973)
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:750)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    	at java.util.concurrent.FutureTask.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
    	at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:655)
    	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:358)
    	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:307)
    	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
    	... 22 more
     
    oct. 12, 2015 2:24:35 PM org.apache.catalina.core.StandardContext listenerStart
    SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:973)
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:750)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    	at java.util.concurrent.FutureTask.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
    	at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:655)
    	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:358)
    	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:307)
    	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
    	... 22 more
     
    oct. 12, 2015 2:24:35 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Error listenerStart
    oct. 12, 2015 2:24:35 PM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Context [/spring-web] startup failed due to previous errors
    oct. 12, 2015 2:24:35 PM org.apache.catalina.core.ApplicationContext log
    INFO: Closing Spring root WebApplicationContext
    oct. 12, 2015 2:24:35 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-bio-8080"]
    oct. 12, 2015 2:24:35 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["ajp-bio-8009"]
    oct. 12, 2015 2:24:35 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 5451 ms
    Ma configuration est la suivante:
    Eclipse mars
    tomcat 7.0.54
    Spring 4.0.2
    Hibernate 4.3.4

    Merci pour ton aide.
    - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #31
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Cela a l'air bon... Enfin cela devrait être bon...
    Mis à part les trucs bêtes comme le nom du dossier et du fichier, est-ce que le fichier est bien présent dans le dossier contenant les sources compilées (comme le classpath correspond au jar et à l'endroit où c'est compilé) ?
    Des fois que l'IDE n'est pas recopié le fichier de paramétrage : si les source folders sont mal paramétrés (src/main/resources non indiqué ou indiqué avec des sources java mais pas avec des fichiers).

    C'est ma première idée.
    Bon courage.
    Régis.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  12. #32
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    Citation Envoyé par regis1512 Voir le message
    Mis à part les trucs bêtes comme le nom du dossier et du fichier, est-ce que le fichier est bien présent dans le dossier contenant les sources compilées (comme le classpath correspond au jar et à l'endroit où c'est compilé) ?
    C'est bête comme on peut être aveugle des fois. Mon fichier persistence.xml était mal nommé (persistance.xml). Merci d'avoir attirer mon attention dessus.

    Tout marche bien maintenant.

    Merci pour tout.
    - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #33
    Nouveau membre du Club
    Femme Profil pro
    Analyste Concepteur SI
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Concepteur SI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Tout d'abord merci pour ce super tuto !

    Je rencontre un problème au niveau " II-E. Passage de donnée à la JSP « bonjour.jsp »" du tutoriel.
    En effet au lieu d'obtenir le résultat voulu c'est à dire "Bonjour Regis avec Spring" j'obtiens:
    Bonjour {0} avec Spring.
    en utilisant l'adresse: Il semblerait donc que ma classe BonjourController.java ne soit pas prise en compte.

    De plus lorsque j'utilise l'adresse du tuto: j'obtient une Erreur 404 Not Found.
    Je suppose donc que la partie au niveau du code du dispatcher-servlet.xml ne fonctionna pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/vues/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
        </bean>
    J'ai d'abord commencé le tuto avec mes propres packages mais au vu des bugs j'ai testé avec les packages du tuto pour être sûre que cela ne venait pas d'une erreur nommage..
    Merci par avance pour votre aide

    Mon code source:
    src/main/webapp/WEB-INF/web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
     
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
       <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
        </context-param>
     
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
     
        <!-- Declaration de la servlet de Spring et de son mapping -->
        <servlet>
            <servlet-name>servlet-dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>servlet-dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    src/main/webapp/WEB-INF/dispatcher-servlet.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
     
        <bean id="messageSource"
            class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
            <property name="basename" value="classpath:messages" />
            <property name="defaultEncoding" value="ISO-8859-1" />
        </bean>
     
            <context:component-scan base-package="com.developpez.rpouiller" />
     
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/vues/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
        </bean>
    </beans>
    src/main/resources/com/developpez/rpouiller/controller/bonjourController.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package com.developpez.rpouiller.controller;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
     
    @Controller
    @RequestMapping("/bonjour")
    public class BonjourController {
     
        @RequestMapping(method = RequestMethod.GET)
        public String afficherBonjour(final ModelMap pModel) {
            pModel.addAttribute("personne", "Regis");
            return "bonjour";
        }
    }
    src/main/resources/messages_fr.properties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    titre.bonjour=Bonjour avec Spring
    libelle.bonjour.lemonde=Bonjour {0} avec Spring.

  14. #34
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Je ne suis pas certain d'identifier le problème.
    Mais les premières choses qu'il faut vérifier sont les emplacements des fichiers et leur nom.
    En cas de doute, il est possible de comparer avec le projet sur GitHub indiqué en fin d'article : https://github.com/regis1512/tutoriel-web-spring
    Par exemple, le dossier "vues" doit être dans le dossier "src/main/webapp".

    Bonne journée.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  15. #35
    Nouveau membre du Club
    Femme Profil pro
    Analyste Concepteur SI
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Concepteur SI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Merci pour votre réponse.

    J'avais effectivement un problème au niveau de la localisation de ma classe java.
    Mon package com.developper.rpouiller.controller était dans le dossier src/main/resources au lieu de src/main/java.

    Merci pour le lien !
    Images attachées Images attachées  

  16. #36
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Problème similaire à Fuzo13
    Bonjour et merci pour ce tuto !

    J'ai un problème exactement identique à celui de Fuzo

    Je rencontre un problème au niveau " II-E. Passage de donnée à la JSP « bonjour.jsp »" du tutoriel.
    En effet au lieu d'obtenir le résultat voulu c'est à dire "Bonjour Regis avec Spring" j'obtiens:
    Bonjour {0} avec Spring.
    en utilisant l'adresse:
    Il semblerait donc que ma classe BonjourController.java ne soit pas prise en compte.

    De plus lorsque j'utilise l'adresse du tuto:
    j'obtient une Erreur 404 Not Found.
    Je suppose donc que la partie au niveau du code du dispatcher-servlet.xml ne fonctionna pas non plus:
    Fuzo13 avait un problème de placement sur sa classe BonjourController.java. Ce n'est pas mon cas : Voici l'arborescence de mon projet

    Nom : bugSpring.JPG
Affichages : 1236
Taille : 39,1 Ko

    De plus si je souhaite debugg l'appli (debug as > debug on server)
    J'obtiens une erreur prétendant que les éléments de messages (titre.bonjour...) sont introuvable dans local en_US

    SEVERE: Servlet.service() for servlet [jsp] in context with path [/tutoriel-web-spring] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'titre.bonjour' for locale 'en_US'.] with root cause
    javax.servlet.jsp.JspTagException: No message found under code 'titre.bonjour' for locale 'en_US'.
    at org.springframework.web.servlet.tags.MessageTag.doEndTag(MessageTag.java:202)
    at org.apache.jsp.vues.bonjour_jsp._jspx_meth_spring_005fmessage_005f0(bonjour_jsp.java:144)
    at org.apache.jsp.vues.bonjour_jsp._jspService(bonjour_jsp.java:97)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

    Une idée pour solutionner le problème ?

  17. #37
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Le message "No message found under code 'titre.bonjour' for locale 'en_US'."
    est causé car seul le fichier "message_fr.properties" existe et le navigateur envoie comme information que la locale est de l'Anglais américain.

    Il faut soit :
    - corriger ce qu'envoie le navigateur
    - créer un message_en.properties (fichier pour l'Anglais), message_en_US.properties (fichier pour l'Anglais américain) ou message.properties (fichier par défaut). Ces fichiers devant contenir les messages nécessaires.

    Bonne journée.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  18. #38
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Tu peux aussi utiliser un LocaleResolver dans lequel tu attribues un defaultLocale "fr".

    A+.

  19. #39
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Configuration de Mysql
    Tout d'abord je remercie Mr R. Pouiller pour cet article,
    J'aimerais savoir si la base de données utilisé etais MySql comment se ferais la configuration des différents étapes qu'on a vu avec hsqlDb?

    cordialement.

  20. #40
    Nouveau Candidat au Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci bien pour ce tutoriel jai trouvé un erreur et jai pas trouvé une solution jai toujours un erreur ""Bonjour {0} avec Spring. "" je pense j'ai un problème en mapping "" le code j lai copié tel qu’il est ,pouvez vous maider et merci ?? et jaimerais savoir ou vous avez mis le controller mercii

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/03/2018, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo