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 Java Discussion :

Creation d'un projet Maven (avec Spring,Hibernate.)


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 43
    Points : 17
    Points
    17
    Par défaut Creation d'un projet Maven (avec Spring,Hibernate.)
    Bonjour,

    Voilà, je vous explique mon problème.
    Je dois élaborer un projet Web Service (Glassfish) avec les technologies suivantes : maven, spring, jpa, hibernate, sql server.

    Tout d'abord, j'aimerai savoir quelle est la meilleure façon de créer un tel projet :
    - Création manuelle du projet avec l'IDE
    - Création du projet par l'intermédiaire de la commande Maven : mvn archetype:generate

    J'ai déjà créer ce projet avec l'aide de cette commande, j'ai également insérer tous fichiers de config pour Hibernate et pour Spring mais j'ai tout de même du mal à comprendre certaine directive xml.
    J'ai même généré les entités par rapport à la base, j'ai également élaborer quelques tests unitaires, ça fonctionne mais j'ai l'impression que mon application est bancale, car je n'arrive pas à la déployer sous Glassfish.

    Savez où je pourrais trouver un tutoriel expliquant pas à pas la création d'un tel projet avec ces mêmes technologies si possibles ?

    Par avance, merci !

    Kévin.

  2. #2
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    Avec Eclipse il est possible d'utiliser directement maven pour créer un projet en utilisant un archetype.
    Quel est le problème de déployement, il faut créer un .war et le déployer directement avec Glassfish.
    Sinon le projet fonctionne sous eclipse avec tomcat ? Tu dois pouvoir ajouter glassfish dans eclipse comme serveur.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    t'as bien définis dans ton pom que c'était un pom de type war? Si oui, il suffit d'envoyer le war généré à glassfish. Et les ide comme eclipse ou netbeans peuvent utiliser ton fichier maven comme base de configuration et te permettre de gérer le déploiement sur un serveur intégré pour ton développement..

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    "Avec Eclipse il est possible d'utiliser directement maven pour créer un projet en utilisant un archetype.
    Quel est le problème de déployement, il faut créer un .war et le déployer directement avec Glassfish.
    Sinon le projet fonctionne sous eclipse avec tomcat ? Tu dois pouvoir ajouter glassfish dans eclipse comme serveur. "

    - Oui le war est crée, mais quand j'essaye de le déployer via la console Glassfish, cela ne fonctionne pas... j'ai beaucoup d'exceptions !
    Je n'ai pas essayé de faire fonctionner le projet sous Tomcat.

    "t'as bien définis dans ton pom que c'était un pom de type war? Si oui, il suffit d'envoyer le war généré à glassfish. Et les ide comme eclipse ou netbeans peuvent utiliser ton fichier maven comme base de configuration et te permettre de gérer le déploiement sur un serveur intégré pour ton développement.. "

    - Affirmatif pour le type war :
    <packaging>war</packaging>
    Par contre, je n'ai pas compris la suite de ta réponse.
    Où se situe mon fichier Maven ? Et qu'est-ce que c'est ?

    De plus, je suis persuader que j'ai mal élaborer mes fichiers de config. Je voux explique le problème.
    En faite, j'ai crée dans la console glassfish, une type de ressources ainsi qu'un pool de connexion correspondant.
    Ensuite, j'ai deux fichiers persistance.xml, l'un se situant dans les dossiers test et l'autre dans le dossier main.
    Celui situé dans le dossier main contient une type de transaction "JTA" et le pool de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <persistence-unit name="amlPU" transaction-type="JTA">
    <jta-data-source>jdbcAg2rPool</jta-data-source>
    Alors que celui situé dans le dossier test contient une type de transaction "RESOURCE-LOCAL" et pas de pool de connexion.
    Ensuite, j'ai un fichier hibernate.cfg.xml dans chaque dossier (test et main),  avec le même contenue dans les deux fichiers :
    <hibernate-configuration>
    	<session-factory>
    		<property name="hibernate.current_session_context_class">
    			org.springframework.orm.hibernate3.SpringSessionContext
     		</property>
    	</session-factory>
    </hibernate-configuration>
    Et pour finir, j'ai deux fichier de contexte dans chaque dossier (test et main). Ceux situés dans le dossier test, contiennent un bean "datasource", un bean "entityManagerFactory" et un bean "transactionManager", ainsi que tous les beans DAO, Service et WS.
    Par contre ceux situés dans le dossier main, contiennent seulement un bean de transactionManager et les les autres Beans DAO, Services, et WS.
    Je pense avoir mal configuré fichier, mais ce qui me paraît bizarre, c'est que je ne dois pas avoir de DataSource, seulement une directive liant le projet au pool de connexion de glassfish.
    Et pouvez-vous me dire aussi à quoi sert l'EntityManagerFactory ??? J'ai du mal à cerner son rôle.


    Voilà une partie du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	<jee:jndi-lookup id="dataSource" jndi-name="jdbcAg2rPool"/> 
    	<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/amlPU"/>
     
    	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
    		p:entityManagerFactory-ref="entityManagerFactory" />
     
      	<tx:annotation-driven transaction-manager="transactionManager"	proxy-target-class="true" /> 
     
    	<!-- JPA annotations bean post processor -->
    	<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
    	<!-- Exception translation bean post processor -->
    	<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />.
    En tout cas, merci d'avoir pris le temps de me comprendre et de m'aider.

    Kevin.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    Quand j'essaye de déployer mon projet sous Glassfish, j'ai ce message d'erreur :

    Exception while loading the app : java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring/db.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: amlPU] Unable to build EntityManagerFactory

    Franchement j'ai tenté plusieurs choses, rien ne fonctionnent.
    Déjà je ne comprend pas pourquoi mon fichier db.xml a générer une datasource alors que pour moi, l'entity manager factory se connecte grâce au pool de glassfish et non par ce data source. Non ?

    J'ai essayé de construire mon EntityManagerFactory de plusieurs façon, mais rien n'y fait ... ça ne fonctionne pas !

    Si vous avez des idées, n'hésiter pas !

  6. #6
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    ça ne m'a pas l'air délirant tout ça.
    De toute façon la conf spring si elle est fausse posera problème au runtime mais pas au déploiement.

    Es-tu sûr que c'est au déploiement et pas au lancement de l'appli ? Souvent le déploiement est suivi directement du lancement de l'appli.

    Quelles sont les erreur lors du déploiements ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2011
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    Non c'est bien au déploiement de l'application que j'ai ce message d'erreur ... enfin normalement, comment puis-je savoir si le déploiement est suivi par le lancement ?

    Le message d'erreur c'est le message que j'ai précédemment posé ( je peux pas t'envoyer toutes la traces parce qu'elle est très longue ^^)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception while loading the app : java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring/db.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: amlPU] Unable to build EntityManagerFactory

  8. #8
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    Donc c'est au chargement de l'appli, au démarrage. Spring n'arrive pas à instancier EntityManagerFactory qui permet d'instancier comme son nom l'indique des EntityManager qui gère la persistance des objets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/amlPU"/>
    A priori je dirais que le jndi-name n'est pas le bon en tout cas il ne le trouve pas.

Discussions similaires

  1. [article] Architecture GWT avec Spring, Hibernate et Maven
    Par guillaume.l dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 24/02/2011, 22h04
  2. [Hudson] Projet Maven avec modules
    Par Invité dans le forum Intégration Continue
    Réponses: 2
    Dernier message: 02/12/2009, 10h10
  3. un projet maven struts .. spring
    Par langar dans le forum Maven
    Réponses: 1
    Dernier message: 29/11/2009, 22h09
  4. creation d'un projet Xfire avec Maven
    Par friedamichelle dans le forum Maven
    Réponses: 5
    Dernier message: 31/01/2008, 15h26

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