Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > JBoss
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/08/2012, 11h58   #1
oups655
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2012
Messages : 9
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 : 9
Points : 2
Points : 2
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 :
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 :
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 :
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 :
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)
oups655 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2012, 15h15   #2
hasalex
Membre Expert
 
Avatar de hasalex
 
Homme Alexis Hassler
Inscription : janvier 2009
Messages : 769
Détails du profil
Informations personnelles :
Nom : Homme Alexis Hassler
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2009
Messages : 769
Points : 1 092
Points : 1 092
Essaie peut-être avec java:/Datasource
__________________
Alexis Hassler, Consultant, formateur indépendant - mon entreprise, mon wiki, mon blog java
hasalex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2012, 15h32   #3
oups655
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2012
Messages : 9
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 : 9
Points : 2
Points : 2
J'ai essayé avec java:/Datasource mais ça passe pas
oups655 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2012, 16h28   #4
hasalex
Membre Expert
 
Avatar de hasalex
 
Homme Alexis Hassler
Inscription : janvier 2009
Messages : 769
Détails du profil
Informations personnelles :
Nom : Homme Alexis Hassler
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2009
Messages : 769
Points : 1 092
Points : 1 092
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 ?
__________________
Alexis Hassler, Consultant, formateur indépendant - mon entreprise, mon wiki, mon blog java
hasalex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 10h49   #5
oups655
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2012
Messages : 9
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 : 9
Points : 2
Points : 2
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.
oups655 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 11h21   #6
oups655
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2012
Messages : 9
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 : 9
Points : 2
Points : 2
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.
oups655 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 11h49   #7
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 287
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 18 287
Points : 32 766
Points : 32 766
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
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
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 15h47   #8
Heimdal
Membre chevronné
 
Avatar de Heimdal
 
Inscription : avril 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 549
Points : 637
Points : 637
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
Heimdal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 16h07   #9
oups655
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2012
Messages : 9
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 : 9
Points : 2
Points : 2
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
oups655 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2012, 10h11   #10
tchize_
Expert Confirmé Sénior
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 18 287
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 18 287
Points : 32 766
Points : 32 766
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Heimdal: jboss n'est pas concerné, son test ne tourne pas dans jboss mais dans junit (cf la stacktrace)
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2012, 10h34   #11
oups655
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2012
Messages : 9
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 : 9
Points : 2
Points : 2
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 :
 <persistence-unit name="ObirsPU" transaction-type="RESOURCE_LOCAL">
par
Code :
 <persistence-unit name="ObirsPU" transaction-type="JTA">
et j'ai supprimé la ligne
Code :
<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
oups655 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h21.


 
 
 
 
Partenaires

Hébergement Web