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

JPA Java Discussion :

JPA / WebApp / Servlet/ Pool conexion Tomcat


Sujet :

JPA Java

  1. #1
    Invité
    Invité(e)
    Par défaut JPA / WebApp / Servlet/ Pool conexion Tomcat
    bonjour,

    voila j'ai réussi à mettre en place la connexion de pool avec tomcat mais là j’essaie de l'utiliser avec JPA donc j'ai créé un projet jpa avec eclipse, je l'ai testé il marche puis j'ai recopié les fichiers dans le dynamique web projet d'eclipse mais il ne trouve pas la persistance, je ne sais pas pourquoi ?

    Merci
    Dernière modification par Mathieu.J ; 31/05/2012 à 17h56. Motif: Orthographe

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Voici ce que j'ai compris :

    Tu as un projet JPA qui fonctionne en test unitaire, mais quand tu l'intègres dans un WAR, ou un projet WEB ça ne marche plus. C'est bien ça ?

    mais il ne trouve pas la persistance
    Quel est le message d'erreur plus exactement ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    alors pour l'erreur c ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named dbv2
    	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
    	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
    	at Atest.test.main(test.java:14)
    Pour mon arborescence c'est un projet web dynamique:

    test/Webcontecnt/META-INF/persistence.xml don le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    	<persistence-unit name="dbv2" transaction-type="RESOURCE_LOCAL">
    		<class>dbv2.Action</class>
    	</persistence-unit>
    </persistence>
    et bien sur pour le tes j'ai fais ça :

    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
     
    public static void main(String[] args) {
     
                   EntityManagerFactory emf =
                   Persistence.createEntityManagerFactory("dbv2");
                   EntityManager em = emf.createEntityManager();
     
                   Tabletest b = em.find(Tabletest.class,1);
                   System.out.println(b.getattribut());
                   c = new Action();
                   c.setTabletest(b);
                   c.setNAction(0.2f);
                   String description = "Description";
                   c.setDescription(description);
     
                    em.getTransaction().begin();
                    em.persist(c);
                    em.getTransaction().commit();
     
                    // refermer em et emf
                    em.close();
                    emf.close();
    	}
    je l'ai mis commça pour verifier si ça marche et il me donne lerreur que je vous est mis tout a lheur

    j'ai l'application qui marche bien avec la conection de pool de tomcat donc ce que je voulai c'est combiner les deux mais bon si déja le JPA ne marche pas a la base je peux pas avancer

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Ton persitence.xml semble incomplet.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    Ton persitence.xml semble incomplet.
    et portant ça marche dans un projet JPA je n'ai fait que copier coller mais il manque quoi à votre avis ?
    Dernière modification par paissad ; 01/06/2012 à 09h40. Motif: Orthographe

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ai trouver un truc j'ai copier coller le dossier meta-inf dans src du projet et il trouve la persistence mais du coup je comprend pas pkoi alors que le context pour la conection de pool est dans meta-inf mais dans webcontent

    est-ce que j'ai rater quelque chose ?

    Merci

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Le webcontent ne doit pas être dans le classpath alors que SRC l'est (Souvent compilé dans /WEB-INF/classes.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Maintenan j'essai de l'utilisé avec le poole de connexion de tomcat mais j'y arrive pas (le JPA marche trés bien quand je l'utilise avec une classe normale )
    la conection de poole marche aussi dans une servelet mais quand je combine les deux ça marche pas donc comment faire pour combiner les deux sachant que j'utilise tomcat et mysql comme db

    Merci

  9. #9
    Invité
    Invité(e)
    Par défaut
    voila ce qu'il me fais comme erreur quelqu'un peux m'aider SVP

    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
    mai 31, 2012 7:45:39 PM org.apache.catalina.core.StandardWrapperValve invoke
    Grave: Servlet.service() for servlet [action] in context with path [/applicationtest] threw exception [L''exécution de la servlet a lancé une exception] with root cause
    java.lang.ClassNotFoundException: javax.persistence.Persistence
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    	at calculedpe.batimentTraitement.doGet(serveleteaction.java:50)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    je comprend pas pour quoi ?

    Merci

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Vérifie qu'il y a bien le jar de l'api JPA dans les lib de tomcat ou dans ton WEB-INF/lib

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    Vérifie qu'il y a bien le jar de l'api JPA dans les lib de tomcat ou dans ton WEB-INF/lib
    j'utilise eclipselink et il n'est pas dans la lib, il est en dehors. Par contre je l'ai ajoutée au classpath. Vous croyez que c'est le problème ?

    Je vais essayer de le mettre dedans.
    Dernière modification par paissad ; 01/06/2012 à 09h42. Motif: Orthographe, SMS.

  12. #12
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    La classe javax.persistence.Persistence n'est pas dans EclipseLink (Implémentation) mais dans JPA, persistence.jar en général (API).

    http://wiki.eclipse.org/EclipseLink/...e_JAR_location

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    La classe javax.persistence.Persistence n'est pas dans EclipseLink (Implémentation) mais dans JPA, persistence.jar en général (API).

    http://wiki.eclipse.org/EclipseLink/...e_JAR_location
    Merci Mathieu pour votre aide précieuse, ça avance maintenant, j'arrive à exécuter le jpa dans une classe normale maintenant sur ma servlet je me suis inspiré de objectdb exemple mais quand je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EntityManagerFactory emf =
        			           (EntityManagerFactory)getServletContext().getAttribute("emf");
    ça ne génère pas d'erreur ça veux dire qu'il trouve la persistence mais quand je mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       EntityManager em = emf.createEntityManager();
    il me met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Grave: "Servlet.service()" pour la servlet batiment a généré une exception
    java.lang.NullPointerException
    	at calculedpe.batimentTraitement.doGet(batimentTraitement.java:40)
    Merci
    Dernière modification par paissad ; 01/06/2012 à 09h44. Motif: Orthographe

  14. #14
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    C'est celle-ci la ligne 40 de ta classe batimentTraitement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EntityManager em = emf.createEntityManager();
    En tout cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    emf  = Persistence.createEntityManagerFactory(PU_NAME);
    Semble plus approprié que de récupérer la factory dans le ServletContext.

    Rien à voir avec ton problème mais respecte les règles de nommages Java, c'est souvent source d'erreur batimentTraitement => BatimentTraitement .

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bon voila j'ai fais directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EntityManagerFactory emf =
        		               Persistence.createEntityManagerFactory("dbv2");
        		               EntityManager em = emf.createEntityManager();
    est il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.persistence.PersistenceException: No Persistence provider for EntityManager named dbv2
    alors pour la persistence.xml je l'ai mis dans src/META-INF/ et dans WebContent/META-inf mais rien ne marche pour la servelet en fin il le trouve pas

    une idée ?

  16. #16
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Complète ton fichier persistence.xml en ajoutant le provider et tout ce qui va bien.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    Complète ton fichier persistence.xml en ajoutant le provider et tout ce qui va bien.
    j'ai fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    	<persistence-unit name="dbv2" transaction-type="RESOURCE_LOCAL"><provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    mais toujours la même chose la seul différence c'est que quand je le mes dans WebContent ça me fais la même erreur dans une classe normale et dans la servelet et quand je le remet dans src dans la classe ça marche sans problème mais pas dans la servelet

    que penser vous ?

  18. #18
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    As-tu regardé en entier le lien que je t'ai donné ?

    After the servlet and servlet-mapping elements, place the following persistence-context-ref in your tomcat applications' web.xml so the web application has a reference to the eclipselink persistence unit.

    <persistence-context-ref>
    <persistence-context-ref-name>persistence/em</persistence-context-ref-name>
    <persistence-unit-name>statCreateTablesJTA</persistence-unit-name>
    </persistence-context-ref>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Create Dynamic Web application
    Dans la partie "Create Dynamic Web application" tout semble y être.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    voila ce que j'ai fais j'ai creé mon application web et tous puis j'ai mis le fichier META-INF/persi.. dans WEB-INF/classes/..

    et puis la je peux l'utilisé et l’appeler depuis une servelet sans problème.

    Donc maintenant il me reste la connexion de pool de tomcat a utilisé avec JPA Par contre j'ai pas compris la différence entre JTA et nom-JTA moi pour l'instant j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transaction-type="RESOURCE_LOCAL"
    et ça marche.

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. BEGIN TRANSACTION ne fonctionne pas (webapp et pool)
    Par ouragan44 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/04/2006, 11h30
  2. tutoriel servlets/jsp/Eclipse/tomcat de serge tahé
    Par dprevots dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 03/04/2006, 21h33
  3. [ Tomcat ][ Servlet ] Pool de connexion jdbc mssqlserver
    Par Néo-Tony dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 01/02/2006, 18h30
  4. [pool connexion tomcat]
    Par agougeon dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/01/2006, 16h18
  5. [Debutant]contexte d'une Webapp servlet et jsp
    Par yahia dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/10/2003, 11h43

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