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. #1
    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 Tutoriel sur la réalisation d'application Web simple avec Spring
    Bonjour à tous,

    J'ai écrit un tutoriel Java intitulé "Tutoriel sur la réalisation d'application Web simple avec Spring".

    Cet article présente la création d'une application web avec le framework Spring.
    Il présente diverses techniques : utilisation de ressources JNDI, Spring MVC (contrôleur, formulaire avec validation, mapping, tiles), internationalisation, service et DAO avec JPA.

    Merci pour vos commentaires.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Points : 10
    Points
    10
    Par défaut feedback -
    Merci pour ce tuto , je voulais m'y mettre sans savoir par ou commencer , ben maintenant je sais ! ne manquerai pas de laisser un feedback après avoir fait le tour du tuto asap ! encore merci !

  3. #3
    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
    Merci.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Points : 115
    Points
    115
    Par défaut
    Bonjour
    Et merci pour le travail.
    Je suis une tout petit "développeur", et j'ai une question toute bête:
    quelle intérêt apporte ce système ? (par rapport a du htlm/php/sql )
    Parce ça ma l'air laborieux..
    ( je me fais un peu l'avocat du diable ^^ !)

    Merci pour vos lumieres

  5. #5
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 23
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par bilcosby Voir le message
    Bonjour
    Et merci pour le travail.
    Je suis une tout petit "développeur", et j'ai une question toute bête:
    quelle intérêt apporte ce système ? (par rapport a du htlm/php/sql )
    Salut bilcosby,

    Je vais essayer de te donner une réponse compréhensive ^^ :

    Tout d'abord c'est du Java, qui est un écosystème totalement différent de celui de PHP.
    Il est très difficile de comparer Java et PHP sur un plan aussi basique que "quel est l'intérêt d'utiliser l'un plutôt que l'autre ?", ce genre de débat tu en trouves des milliards sur le web.
    Ce sont tout simplement deux technologies différentes, ici Spring MVC (faisant partie du framework Spring) est simplement un framework MVC pour le Java EE (version de Java permettant notamment de faire du web).

    Citation Envoyé par bilcosby Voir le message
    Parce ça ma l'air laborieux..
    ( je me fais un peu l'avocat du diable ^^ !)

    Merci pour vos lumieres
    Tu n'as pas totalement tort, Spring n'est pas forcément apprécié des débutants car il nécessite une connaissance du framework, et demande pas mal de configuration ne serait-ce que pour un hello world.
    Ce qui est de moins en moins vrai, puisque avec la version 4, Spring a sorti un outil : Spring BOOT, qui simplifie beaucoup son usage et configuration, ce qui procure un point d'entrée beaucoup plus abordable du framework pour les débutants.
    Pour être honnête, je m'attendais à voir cet outil à l'oeuvre dans ce tutoriel. (Néanmoins Spring BOOT étant récent, il est possible que l'auteur ait commencé ce tutoriel avant que celui-ci ne soit en version stable, ou alors tout simplement par choix).

    En espérant t'avoir éclairci un peu le sujet

  6. #6
    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 tous les deux,

    Je n'ai pas pris le temps de répondre ces derniers jours et je dois avouer c'est le genre de questions sur lesquelles j'ai un peu de mal...
    Alors merci à Baptiste. Sur l'ensemble, je n'aurai pas répondu mieux. Enfin je me lance... J'espère que je resterai à peu près clair...
    Je n'ai pas une grande pratique de PHP me permettant de réellement comparer les deux technologies et les arguments peuvent tourner à la guerre de clochers...

    Je dirais juste que dans cet article il faut distinguer la partie plus paramétrage/initialisation du projet qui n'est à faire qu'une seule fois (ou juste à modifier pour certaines évolutions) de la partie développement d'une page qui est plus répété et routinière dans un projet.
    Je pense que cette deuxième partie est moins compliquée (bien que plus complexe que du PHP) que la première.

    Après mon appréciation est très personnelle : je ne trouve pas le développement web Java complexe on peut tout à fait se contenter de JSP ou de Servlet et là on retrouve des choses proches du PHP (pour les JSP car c'est un langage de script également) et de programme CGI (pour les Servlets) éventuellement écrit en C par exemple.

    Le développement devient plus complexe quand on ajoute ces fameux frameworks (Struts, Spring MVC, etc) mais il faut voir les gains :
    - moins de code à écrire car beaucoup de choses gérées par le framework
    - meilleur découpage du code en fonction du rôle de chaque composant ce qui facilite la factorisation de code
    - l'article est également complexe à cause du choix d'utiliser Hibernate, l'avantage principal d'Hibernate est de ne pas écrire de SQL : il se charge de tout et s'adapte en fonction de la base de données que l'on choisit
    - une autre chose un peu compliqué est l'accès à la base de données : on n'écrit pas la connexion à la base en effet on demande une connexion dans un pool de connexion que l'on déclare auprès du serveur (cela permet d'obtenir une connexion plus rapidement et de les recycler lorsque l'on a plus besoin). Mais la une partie de la complexité est masquée car c'est le framework qui se charge de demander et libérer la connexion. Le framework gère également la transaction (rollback en cas d'anomalie ou commit automatique si tout se passe bien) ce qui garantir l'intégrité des données et de ne pas oublier une transaction qui bloquerait la base.
    Je ne sais pas si PHP ou autre offre les mêmes avantages mais sans vouloir troller je ne pense pas que quelque soit le langage on puisse avoir les bons côtés sans besoin de connaitre un minimum des subtilités de ces fonctionnalités.

    Pour finir, je n'ai pas parlé de Spring Boot parce que je ne connais pas bien ce produit (même si je m'y intéresse) et parce que le choix était vraiment de présenter les mécanismes de Spring MVC et ce qui gravite autour.
    Peut-être que Spring Boot fera l'objet d'un autre article

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

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Points : 1 370
    Points
    1 370
    Par défaut
    Bonjour,

    Y a t-il beaucoup de différences entre la version 3 et la version 4 ?
    J'ai envie de me mettre à Spring et j'imagine que la plupart des entreprises utilisent encore la version 3.

  8. #8
    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,

    Je ne prétends pas être un maitre de Spring qui connait les évolutions sur le bout des doigts.
    Mais je pense qu'il y a peu de changements entre Spring 3 et 4 pour ce qui est présenté dans cet article.
    Dans la mesure du possible, j'ai noté à partir de quelle version une annotation ou une classe sont apparues.

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

  9. #9
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 23
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Farid63 Voir le message
    Bonjour,

    Y a t-il beaucoup de différences entre la version 3 et la version 4 ?
    J'ai envie de me mettre à Spring et j'imagine que la plupart des entreprises utilisent encore la version 3.
    Spring 4 apporte surtout des nouvelles features et facilite certaines choses.
    Tout ce que tu peux faire avec Spring 3 est faisable avec Spring 4.
    Spring 4 est depuis peu en release il me semble. Donc en effet la plupart des applis déjà existantes sont en version 3.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Points : 1 370
    Points
    1 370
    Par défaut
    Merci pour vos réponses.

    Donc si je me met à Spring 4 maintenant, je ne serai pas perdu quand si un jour je dois travailler sur une appli sous Spring 3 (avec l'aide de la doc bien sur)?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Très bon article pour bien commencer sur ce type de projet.
    J'ajouterais quand même pour la partie mapping dto <-> model vue ou dao l'outil Dozer avec annotation pour les cas complexe.

  12. #12
    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,

    Citation Envoyé par Farid63 Voir le message
    Merci pour vos réponses.

    Donc si je me met à Spring 4 maintenant, je ne serai pas perdu quand si un jour je dois travailler sur une appli sous Spring 3 (avec l'aide de la doc bien sur)?
    De mon point de vue, oui : quelqu'un qui se met à Spring 4 doit être capable de travailler sur Spring 3 (encore une fois je ne prétends pas connaitre les évolutions entre les deux versions mais quelqu'un qui fait du Java 6 saura faire du Java 5, ce qui est moins vrai lors d'évolutions importantes du langage comme le passage aux annotations)

    Citation Envoyé par devjava83 Voir le message
    Très bon article pour bien commencer sur ce type de projet.
    J'ajouterais quand même pour la partie mapping dto <-> model vue ou dao l'outil Dozer avec annotation pour les cas complexe.
    Merci pour l'appréciation (cela fait toujours plaisir).
    Par contre je ne peux pas répondre pour Dozer : je ne connais pas cet outil.

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

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Gasprod Voir le message
    Merci pour ce tuto , je voulais m'y mettre sans savoir par ou commencer , ben maintenant je sais ! ne manquerai pas de laisser un feedback après avoir fait le tour du tuto asap ! encore merci !
    Salut Regis ,
    Voilà , le tour du propriétaire étant fait , mon petit feedback ...
    Tout d'abord , excellent tuto pour débuter avec Spring !
    Personnellement , j'ai débuté javaEE il y a 3 mois et après avoir fait le tour des HttpServletRequest/Response , HttpSession , pool de connection , DAO pattern (que je connaissais déjà via javaSE) et & Cie et face aux tonnes de livres et doc (bien trop souvent plus à jour) , j'ai trouvé l'introduction à Spring très aisée et stimulante pour me diriger vers des concepts/usages plus poussés de Spring ...
    Je suis plutôt un développeur Web Php-OO qui a découvert le framework Symfony2.3 il y a moins d'un an et j'y ai retrouvé de nombreux concepts ... tels le contrôleur frontal de S2 dans ce cas la servlet dispatcher , etc ...
    Je dois avoué que j'ai été un peu perdu par l'usage de HSQLDb que j'ai personnellement remplacé par MySql sans aucun problème !
    Un aspect qui m'intéresse énormément est le mappage d'une db existante pour générer toutes les entity/Pojo avec hibernate par exemple ... tout tuto d'actualité ou lien sur le sujet serait le bienvenu
    En tout cas , encore merci à toi pour ce tuto !
    Gasprod - Serge

  14. #14
    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,

    @Gasprod : Merci pour ce retour. J'ai essayé de rendre l'approche le plus simple possible et je suis content de voir que cela fonctionne.

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

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Points : 1 370
    Points
    1 370
    Par défaut
    Bonjour,

    j'ai du mal à voir l'utilité de la classe "ServiceListeCourses" et de l'interface "IServiceListeCourses" dans l'exemple.
    Pourquoi ne pas passer directement pas le DAO ?
    Surtout qu'ici, les interfaces "IServiceListeCourses" et "IListeCoursesDAO" sont identiques, est-ce que ça ne fait pas doublon?
    A chaque fois qu'on ajoute un méthode dans l'une, il va falloir ajouter la même dans l'autre.

    Autre question, dans l'entité "Course", il n'y a aucun import de librairie d'Hibernate.
    Est-ce normal?

    Merci.

  16. #16
    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,

    Désolé de ne pas avoir répondu plus tôt : je rentre juste de vacances.

    Citation Envoyé par Farid63 Voir le message
    j'ai du mal à voir l'utilité de la classe "ServiceListeCourses" et de l'interface "IServiceListeCourses" dans l'exemple.
    Pourquoi ne pas passer directement pas le DAO ?
    Surtout qu'ici, les interfaces "IServiceListeCourses" et "IListeCoursesDAO" sont identiques, est-ce que ça ne fait pas doublon?
    A chaque fois qu'on ajoute un méthode dans l'une, il va falloir ajouter la même dans l'autre.
    De manière succincte, la DAO a la charge de l'accès que données (http://fr.wikipedia.org/wiki/Objet_d...x_donn%C3%A9es).
    Tandis que la couche service a généralement la charge du respect de la transaction, des règles de gestion, ...
    Une méthode de service peut dans des exemples plus complexes appeler plusieurs DAO ou d'autres méthodes de service (la transaction étant gérée au niveau de la première méthode de service).
    Par ailleurs, on peut remarquer que les signatures ne sont identiques que pour la partie d'affichage des données. Cela n'est pas le cas pour la création, la suppression et la modification.

    Citation Envoyé par Farid63 Voir le message
    Autre question, dans l'entité "Course", il n'y a aucun import de librairie d'Hibernate.
    Est-ce normal?
    Oui c'est normal.
    Car les imports de librairie d'Hibernate sont remplacés par des imports de la Java Persistence API (javax.persistence).

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

  17. #17
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Points : 1 370
    Points
    1 370
    Par défaut
    Citation Envoyé par regis1512 Voir le message
    Bonsoir,
    Oui c'est normal.
    Car les imports de librairie d'Hibernate sont remplacés par des imports de la Java Persistence API (javax.persistence).

    Bonne soirée.
    Ok, du coup pourquoi ne pas utiliser les librairies d'Hibernate ? Ou pourquoi ne pas utiliser la JPA et ainsi ne pas charger hibernate ?
    J'ai vu la même chose sur un autre tutoriel, du coup je me suis posé la question.

  18. #18
    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,

    Les deux sont "nécessaires".

    Pour essayer d'être simple : JPA est une spécification et Hibernate implémente cette spécification.
    J'ai mis des guillemets à nécessaires car l'on peut faire de l'Hibernate sans faire du JPA (car Hibernate existait avant et permet de manipuler des données juste avec ses propres annotations par exemple) et l'on peut faire du JPA avec une autre implémentation (une qui revient régulièrement mais que je ne connais pas du tout est Toplink).

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

  19. #19
    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 Problème configuration JNDI
    D'abord merci pour le temps que vous avez du consacrer à cet article.

    Une remarque pour aider ceux qui ne sont pas familiers de la configuration de Tomcat: ne pas oublier de copier le hsqldb-2.3.1.jar dans le /lib de Tomcat, pour que celui-ci puisse établir la connection avec la base de test hsql.

    Je me suis heurté à un souci jndi que je n'arrive pas à passer. L'application ne semble pas "voir" la déclaration de la connection jndi. Dans les logs je vois simplement des erreurs suscitées par des éléments soi-disant manquant dans le persistence.xml. Apparemment l'application s'attend à tout trouver dans ce fichier et ne se soucie pas de la connection jndi, du coup l'ensemble du contexte Spring ne peut démarrer.

    Je précise que tout marchait bien dans mon suivi du tuto, jusqu'à l'intégration de la base de donnée. Dans le doute j'ai récupéré le code source de référence sur Github, sans plus de succès. J'accède à ma base hsql avec la classe org.hsqldb.util.DatabaseManager sans difficulté. Le server.xml et context.xml de Tomcat ont été modifiés comme décrit dans le tuto.

    Voici ma configuration:
    - Ubuntu 14.04
    - Eclipse Kepler
    - Tomcat 7
    - Java Hotspot 64bits 1.7

    Et les logs:
    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
     
    Nov 02, 2014 1:08:04 AM 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: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
    Nov 02, 2014 1:08:04 AM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-bio-8080"]
    Nov 02, 2014 1:08:04 AM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
    Nov 02, 2014 1:08:04 AM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 407 ms
    Nov 02, 2014 1:08:04 AM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    Nov 02, 2014 1:08:04 AM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
    Nov 02, 2014 1:08:04 AM org.apache.catalina.startup.HostConfig deployDescriptor
    INFO: Deploying configuration descriptor /home/egann/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/Catalina/localhost/tutoriel-web-spring.xml
    Nov 02, 2014 1:08:04 AM org.apache.catalina.startup.SetContextPropertiesRule begin
    WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:tutoriel-web-spring' did not find a matching property.
    Nov 02, 2014 1:08:05 AM org.apache.catalina.core.ApplicationContext log
    INFO: No Spring WebApplicationInitializer types detected on classpath
    Nov 02, 2014 1:08:05 AM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring root WebApplicationContext
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    log4j:WARN Please initialize the log4j system properly.
    Nov 02, 2014 1:08:06 AM 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 org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
    	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:4939)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:663)
    	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1642)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    	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.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
    	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
    	at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
    	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205)
    	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
    	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
    	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
    	at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
    	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
    	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
    	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:397)
    	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
    	at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:150)
    	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
    	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)
    	... 25 more
     
    Nov 02, 2014 1:08:06 AM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Error listenerStart
    Nov 02, 2014 1:08:06 AM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Context [/tutoriel-web-spring] startup failed due to previous errors
    Nov 02, 2014 1:08:06 AM org.apache.catalina.core.ApplicationContext log
    INFO: Closing Spring root WebApplicationContext
    Nov 02, 2014 1:08:06 AM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-bio-8080"]
    Nov 02, 2014 1:08:06 AM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["ajp-bio-8009"]
    Nov 02, 2014 1:08:06 AM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 1948 ms
    Si je change le persistence.xml avec le contenu suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <persistence-unit name="unit">
    	<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    	<properties>
          		<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
        	</properties>
    </persistence-unit>
    l'erreur disparait, mais je ne pourrais toujours pas accéder à l'application sur mon navigateur. Le log est le suivant:
    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
     
    Nov 02, 2014 1:22:07 AM 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: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
    Nov 02, 2014 1:22:08 AM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-bio-8080"]
    Nov 02, 2014 1:22:08 AM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
    Nov 02, 2014 1:22:08 AM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 325 ms
    Nov 02, 2014 1:22:08 AM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    Nov 02, 2014 1:22:08 AM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
    Nov 02, 2014 1:22:08 AM org.apache.catalina.startup.HostConfig deployDescriptor
    INFO: Deploying configuration descriptor /home/egann/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/Catalina/localhost/tutoriel-web-spring.xml
    Nov 02, 2014 1:22:08 AM org.apache.catalina.startup.SetContextPropertiesRule begin
    WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:tutoriel-web-spring' did not find a matching property.
    Nov 02, 2014 1:22:09 AM org.apache.catalina.core.ApplicationContext log
    INFO: No Spring WebApplicationInitializer types detected on classpath
    Nov 02, 2014 1:22:09 AM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring root WebApplicationContext
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    log4j:WARN Please initialize the log4j system properly.
    Nov 02, 2014 1:22:10 AM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring FrameworkServlet 'servlet-dispatcher'
    Nov 02, 2014 1:22:10 AM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-bio-8080"]
    Nov 02, 2014 1:22:10 AM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["ajp-bio-8009"]
    Nov 02, 2014 1:22:10 AM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 2664 ms
    en espérant que cette erreur vous parle...

  20. #20
    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,

    J'ai regardé plusieurs choses mais je ne vois pas ce qui peut être la cause du problème.

    Déjà, je n'ai pas de librairie hsqldb dans le lib de l'installation tomcat.
    Je comprends que cela puisse être surprenant mais cela semble ne pas poser de problème.

    J'ai rajouté le "hibernate.dialect" dans le fichier persistence.xml sans que cela ne produise la moindre différence.

    Le Tomcat utilisé pour le déploiement (http://rpouiller.developpez.com/tuto...bernate/#LII-B) est simplement un dézip du zip d'install windows : apache-tomcat-7.0.52-windows-x86.zip

    Après mes dépendances maven du projet sont :
    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
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building tutoriel-web-spring 0.0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ tutoriel-web-spring ---
    [INFO] com.developpez.rpouiller:tutoriel-web-spring:war:0.0.1-SNAPSHOT
    [INFO] +- javax.servlet:servlet-api:jar:2.5:compile
    [INFO] +- org.springframework:spring-webmvc:jar:4.0.2.RELEASE:compile
    [INFO] |  +- org.springframework:spring-beans:jar:4.0.2.RELEASE:compile
    [INFO] |  +- org.springframework:spring-context:jar:4.0.2.RELEASE:compile
    [INFO] |  |  \- org.springframework:spring-aop:jar:4.0.2.RELEASE:compile
    [INFO] |  |     \- aopalliance:aopalliance:jar:1.0:compile
    [INFO] |  +- org.springframework:spring-core:jar:4.0.2.RELEASE:compile
    [INFO] |  |  \- commons-logging:commons-logging:jar:1.1.3:compile
    [INFO] |  +- org.springframework:spring-expression:jar:4.0.2.RELEASE:compile
    [INFO] |  \- org.springframework:spring-web:jar:4.0.2.RELEASE:compile
    [INFO] +- org.hsqldb:hsqldb:jar:2.3.1:compile
    [INFO] +- org.springframework:spring-orm:jar:4.0.2.RELEASE:compile
    [INFO] |  +- org.springframework:spring-jdbc:jar:4.0.2.RELEASE:compile
    [INFO] |  \- org.springframework:spring-tx:jar:4.0.2.RELEASE:compile
    [INFO] +- org.hibernate:hibernate-entitymanager:jar:4.3.4.Final:compile
    [INFO] |  +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
    [INFO] |  +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
    [INFO] |  +- org.hibernate:hibernate-core:jar:4.3.4.Final:compile
    [INFO] |  |  +- antlr:antlr:jar:2.7.7:compile
    [INFO] |  |  \- org.jboss:jandex:jar:1.1.0.Final:compile
    [INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
    [INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
    [INFO] |  +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile
    [INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
    [INFO] |  +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
     
    [INFO] |  \- org.javassist:javassist:jar:3.18.1-GA:compile
    [INFO] +- javax.servlet:jstl:jar:1.2:compile
    [INFO] +- javax.validation:validation-api:jar:1.1.0.Final:compile
    [INFO] +- org.hibernate:hibernate-validator:jar:5.0.1.Final:compile
    [INFO] |  \- com.fasterxml:classmate:jar:0.8.0:compile
    [INFO] +- org.apache.tiles:tiles-jsp:jar:3.0.3:compile
    [INFO] |  +- org.apache.tiles:tiles-servlet:jar:3.0.3:compile
    [INFO] |  |  +- org.apache.tiles:tiles-core:jar:3.0.3:compile
    [INFO] |  |  |  +- commons-digester:commons-digester:jar:2.0:compile
    [INFO] |  |  |  |  \- commons-beanutils:commons-beanutils:jar:1.8.0:compile
    [INFO] |  |  |  \- org.slf4j:jcl-over-slf4j:jar:1.5.8:compile
    [INFO] |  |  \- org.apache.tiles:tiles-request-servlet:jar:1.0.3:compile
    [INFO] |  +- org.apache.tiles:tiles-template:jar:3.0.3:compile
    [INFO] |  |  +- org.apache.tiles:tiles-api:jar:3.0.3:compile
    [INFO] |  |  \- org.apache.tiles:tiles-autotag-core-runtime:jar:1.1.0:compile
    [INFO] |  \- org.apache.tiles:tiles-request-jsp:jar:1.0.3:compile
    [INFO] |     \- org.apache.tiles:tiles-request-api:jar:1.0.3:compile
    [INFO] \- org.slf4j:slf4j-log4j12:jar:1.5.11:compile
    [INFO]    +- org.slf4j:slf4j-api:jar:1.5.11:compile
    [INFO]    \- log4j:log4j:jar:1.2.14:compile
    [INFO] ------------------------------------------------------------------------
    Voila, je suis désolé de ne pas être plus inspiré.

    Sinon, juste une petite remarque (j'ai du coup modifié le chapitre III-B. Paramétrage du serveur Tomcat) :
    les fichiers server.xml et context.xml sont à modifier depuis Eclipse.

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

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