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

Wildfly/JBoss Java Discussion :

Problème de Datasource (JBoss/Hibernate/JPA)


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Problème de Datasource (JBoss/Hibernate/JPA)
    Bonjour,

    J'ai l'erreur Could not find datasource: java:Datasource lorsque j'exécute mon application.

    Mon fichier persistence.xml 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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.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_1_0.xsd">
      <persistence-unit name="PersistencePU" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:Datasource</jta-data-source>
        <class>...</class>
        <class>...</class>
        <class>...</class>
        <properties>
     
          <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect "/>
        </properties>
      </persistence-unit>
    </persistence>

    Monfichier mysql-ds.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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!-- $Id: mysql-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ -->
    <!--  Datasource config for MySQL using 3.0.9 available from:
    http://www.mysql.com/downloads/api-jdbc-stable.html
    -->
     
    <datasources>
      <local-tx-datasource>
        <jndi-name>Datasource</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/base</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>***</user-name>
        <password>***</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
     <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>
    et lorsque je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistencePU");
    EntityManager em=emf.createEntityManager();
    L'erreur apparait.
    Quelqu'un peut-il m'aider?

    Voici la trace complète 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
    FATAL [main] (DatasourceConnectionProvider.java:55) - Could not find datasource: java:DataSource
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
    	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
    	at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
    	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
    	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)
    	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691)
    	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
    	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
    	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
    	at fr.ema.obirs.indexation.DAO.IndexationDaoTest.<init>(IndexationDaoTest.java:35)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    	at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:171)
    	at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:216)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    	at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:213)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
    	at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
    	at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
    	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:520)
    	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060)
    	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911)
    ------------- ---------------- ---------------
    Testcase: testFindByPassageID(fr.ema.obirs.indexation.DAO.IndexationDaoTest):	Caused an ERROR
    org.hibernate.HibernateException: Could not find datasource
    javax.persistence.PersistenceException: org.hibernate.HibernateException: Could not find datasource
    	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:698)
    	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
    	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
    	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
    	at fr.ema.obirs.indexation.DAO.IndexationDaoTest.<init>(IndexationDaoTest.java:35)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    Caused by: org.hibernate.HibernateException: Could not find datasource
    	at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
    	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
    	at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
    	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
    	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)
    	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691)
    Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Essaie peut-être avec java:/Datasource

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    J'ai essayé avec java:/Datasource mais ça passe pas

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Désolé, je n'avais pas assez bien lu. Le problème ne vient pas du nom JNDI, mai du fait que ta classe n'accède pas au contexte JNDI (javax.naming.NoInitialContextException).

    Est-ce que tu as cette erreur quand tu déploies ou quand tu l'exécutes en local ?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    au déploiement j'ai aucune erreur. J'arrive pas à voir l'origine du problème et ce n'est pas faute d'avoir cherché sur le net.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    au déploiement j'ai aucune erreur. L'erreur apparait à l'éxécution en local. J'arrive pas à voir l'origine du problème et ce n'est pas faute d'avoir cherché sur le net.

  7. #7
    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
    Tu tourne dans une junit test. C'est bien gentil, mais a tu fournis à ton test un contexte JNDI? Parce que sur une application j2SE comme un test unitaire, il n'y a pas de context jndi fournis par défaut. Personellement, durant les tests unitaires, j'utilise simplejndi comme librairie JNDI, relativement aisé à configurer

  8. #8
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Je ne connais pas trop Jboss mais il me semble qu'il y a un consensus sur le fait de rechercher les ressources dans l'environnement du composant si déclarer dans le descripteur de déploiement.

    Ce qui donnerait plutôt le nom JNDI suivant:

    java:comp/env/Datasource

    Après si tu utilises un Jboss JEE6 compliant tu peux ne pas déclarer ta référence de ressource dans le descripteur mais utiliser les noms portables

    http://docs.oracle.com/cd/E19798-01/...rgn/index.html

  9. #9
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Merci tchize c'est peut-etre pour cela que ça passe pas. Je vais tester pour voir.
    Salut Heimdal, merci pour le lien mais je ne pense pas que ce soit à cause des noms car j'avais regardé de ce coté mais il affichait toujours l'erreur. je vais voir avec simplejndi.
    Merci

  10. #10
    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
    Heimdal: jboss n'est pas concerné, son test ne tourne pas dans jboss mais dans junit (cf la stacktrace)

  11. #11
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Salut,
    je pense que c'est moi qui avais tout mélangé dans mon code faute d'avoir mal compris la différence entre JTA et RESOURCE_LOCAL.
    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <persistence-unit name="ObirsPU" transaction-type="RESOURCE_LOCAL">
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <persistence-unit name="ObirsPU" transaction-type="JTA">
    et j'ai supprimé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jta-data-source>java:/Datasource</jta-data-source>
    puis rajouté les paramètres de connexion dans persistence.xml. et ça marche!!!
    Mais ce que je voudrai savoir c'est quand mettre JTA ou RESOURCE_LOCAL? Mon code marche mais j'aimerais bien éclaircir ces "zones d'ombre".
    Merci à tous

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

Discussions similaires

  1. Problème de requête avec Hibernate (JPA)
    Par flamant dans le forum Hibernate
    Réponses: 3
    Dernier message: 16/03/2012, 09h17
  2. [Ibatis][JBoss] Problème de datasource
    Par KPingouin dans le forum JDBC
    Réponses: 5
    Dernier message: 04/09/2009, 10h11
  3. Réponses: 2
    Dernier message: 25/08/2009, 16h30
  4. [débutant]problème avec Hibernate/JPA
    Par amnass dans le forum JPA
    Réponses: 5
    Dernier message: 19/05/2009, 15h02
  5. Problème de mise en place de datasource pour Hibernate
    Par K-Kaï dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 27/07/2006, 10h41

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