Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Tomcat
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 02/06/2006, 12h02   #1
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
Par défaut [Tomcat - Datasource] Le Nom jdbc n'est pas lié à ce Contexte

Bonjour,

Ca fait 3 heures que je bataille avec ma datasource et impossible
j'en arrive toujours à la même erreur ! "Le Nom jdbc n'est pas lié à ce Contexte"
Alors je viens vers vous pour avoir de l'aide !
Envirronement : Ecllipse, tomcat 5.5, datasource vers Oracle.
-> exception javax.naming.NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte
lors du lookup()

Dans le server.xml
Code :
1
2
3
4
<Resource name="jdbc/OracleDS" auth="Container" type="javax.sql.DataSource"
	  		factory="org.apache.commons.dbcp.BasicDataSourceFactory"
	   		username="uid" password="pwd" driverClassName="oracle.jdbc.driver.OracleDriver"
   			url="jdbc:oracle:thin:@server:port:base" maxActive="8" maxIdle="4" />
Le web.xml de l'application
Code :
1
2
3
4
5
6
  <resource-ref>
	<description>Definition du datasource</description>
	<res-ref-name>jdbc/OracleDS</res-ref-name>
	<res-type>javax.sql.DataSource</res-type>
	<res-auth>Container</res-auth>
  </resource-ref>
Et mon appel:
Code :
1
2
			Context ic = new InitialContext();
			DataSource ds = (DataSource)ic.lookup("jdbc/OracleDS");
Voilà je tourne en rond ... je comprend pas.
Ca vous semble correct ou pas ?

Sinon ca pourrait venir du chargement du driver ? j'ai aucunes autres erreurs
dans la console hormis celle du jndi...

merci a+
tomcat...
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 12h51   #2
g_rare
Membre chevronné
 
Avatar de g_rare
 
Inscription : novembre 2005
Messages : 610
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 610
Points : 649
Points : 649
http://www.openspace-fr.com/lofivers...php/t3788.html
Citation:
Apparemment une des raisons du fonctionnement serait que le paramètre user ne fonctionne pas mais qu'il faut utiliser username.
Citation:
J'ai eu recement un problème chian !!! qui ressemble au tien !!! j'ai eu cette exception qui a failli me perdre la tête :
javax.naming.NameNotFoundException: Le Nom java:comp n'est pas lié à ce Contexte
Alors après des heures d'ivestigations et de creusage !! j'ai découvert que le problème venait d'un attribut de l'entrée "<Context ...>" dans le server.xml. Rappel : je bossais avec un Tomcat 4.1.31 et une BDD MySQL. C'est l'attribut useNaming qui doit être à true pour pouvoir utiliser les JNDI !! le problème c'est que dans l'interface admin de Tomcat, si jamais vous décider de créer votre context avec cette interface, le problème est que l'attribut useNaming a la valeur false par défaut !!! l'exception déclenchée ne précise pas que c'est un problè
me de config !!
__________________
" Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...
g_rare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 12h59   #3
zev
Membre actif
 
Inscription : octobre 2004
Messages : 204
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 204
Points : 168
Points : 168
Envoyer un message via MSN à zev
Essaie :

Code :
1
2
3
 
Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup("java:comp/jdbc/OracleDs");
zev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 13h40   #4
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
Bonjour,

Malheuresement j'avais déjà essayé tous ce que vous m'avez donné
comme url ou méthode pour accéder a jndi, mais rien n'y fait...
J'arrive toujours pas accéder à cette ressource !!!

alors je continue de creuser.... je m'arrache pas mal les cheveux !
a+
Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 13h51   #5
zev
Membre actif
 
Inscription : octobre 2004
Messages : 204
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 204
Points : 168
Points : 168
Envoyer un message via MSN à zev
Si ça peut te consoler j'ai le meme pb avec une datasource vers une base hypersonic
zev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 14h35   #6
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
pfff c'est dingue !

J'ai tout essayé et rien n'a faire... ca ne fonctionne pas ! i-m-p-o-s-s-i-b-l-e
de faire tourner ma datasource ! RRRrrrr !!!!
Je sais pas quoi faire

Quelqu'un a une idée ?

bye,
Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 14h44   #7
zev
Membre actif
 
Inscription : octobre 2004
Messages : 204
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 204
Points : 168
Points : 168
Envoyer un message via MSN à zev
Dans ton server.xml
Code :
url="jdbc:oracle:thin:@server:port:base"
Tu as remplacé server:port:base par leur valeurs réelles ?
zev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 15h17   #8
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
Salut,

Oui oui ... je suis entrain d'écumer tout le net pour trouver un solution
mais rien a faire... j'ai aucune erreur, mais je n'ai pas non plus de log
comme quoi il a déployé mon datasource. je cherche a mettre des logs
dans mon context, mais pour le moment mon tomcat est pas très parlant :-(

Ca semble fonctionne quand je met le datasource dans Struts, je le vois
me le déployer mais je ne peut pas y'a accéder pour le moment autre
part vu qu'il faut le request... je vais tester ca...

Désespoire...

a+
Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 16h33   #9
spk4ever
Membre à l'essai
 
Inscription : décembre 2005
Messages : 58
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 58
Points : 23
Points : 23
OK je sais d'ou vient ton erreur.
Il faut que tu ajoutes ça dans ton serveur.xml pour lier ton context à ta dataSource, entre les balises <host>:
<Host appBase="webapps" name="localhost">

<Context
path="/NomDuContext"
reloadable="true">
<ResourceLink
global="jdbc/OracleDS"
name="jdbc/OracleDS"
type="javax.sql.DataSource"/>
</Context>

</Host>

Essai ca et tiens ns au courant ca devrai marcher.

Mais le top sinon c'est de creer un fichier context.xml dans ton appli, comme ca tu peux configurer ton dataSource depuis ton appli sans rien toucher sur le serveur. Moi c'est ce que je fais.
spk4ever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 19h01   #10
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
mouaRRRrrr !

J'ai passé la journée la dessus a faire le web de long en large et en travers
et j'arrive chez moi je prend 30 minutes pour reprendre depuis zéro et
hop en deux coup ca marche !!! Effectivement j'ai utilisé la technique
du fichier context.xml dans le WEB-INF/META-INF. J'avais essayé ce
matin mais j'avais pas du collé les bonnes choses... la looze.

Donc : j'ai une solution qui fonctionne mais je pense pas qu'elle soit super
"propre" alors il va falloir que je vois ca de plus pres.

En résumé :

Dans le server.xml
J'ai un host qui contient un context qui contient la déclaration du datasource:

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory" username="xxx" password="xxxx"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/xxxx" />

Dans le repertoire WEB-INF/META-INF j'ai un fichier context.xml qui contient :
La redéclaration de mon context (idem que dans le server.xml) .. c'est la
que je pense que c'est pas propre :-)
<Context docBase="web" path="/web" reloadable="true" source="org.eclipse.jst.j2ee.server:web" debug="1">
<ResourceLink global="jdbc/TestDB" name="jdbc/TestDB" type="javax.sql.DataSource"/>
</Context>

Et enfin dans ma classe java, le code qui va bien :

DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
ds.getConnection();

Donc, je vais faire quelques tests, mais je pense que l'on peut déclarer
directement la datasource dans le context.xml et pas dans le server.xml.
qu'en pensez - vous ?
et penseez vous que le taf <resource-ref> est util vu que je l'ai supprimé
dans mon web.xml ?

Voila merci à tous !


Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 15h58   #11
spk4ever
Membre à l'essai
 
Inscription : décembre 2005
Messages : 58
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 58
Points : 23
Points : 23
Citation:
Envoyé par xfacq
Donc, je vais faire quelques tests, mais je pense que l'on peut déclarer
directement la datasource dans le context.xml et pas dans le server.xml.
qu'en pensez - vous ?

Voila merci à tous !
Oui c'est possible tu n'ais pas obligé de toucher a ton server.xml.
Contenu de mon context.xml:
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
 
<?xml version="1.0" encoding="UTF-8"?>
<Context
	path="/TonContext"
	reloadable="true">
	<WatchedResource>WEB-INF/web.xml</WatchedResource>
	<Resource
	  name="jdbc/c3p0Pool"  -->nom de ton dataSource
	  auth="Container"
	  type="com.mchange.v2.c3p0.ComboPooledDataSource" --> type du dataSource
	  factory="org.apache.naming.factory.BeanFactory" 
	  description="DB Connection" 
	  driverClass="org.gjt.mm.mysql.Driver" --> Driver 
	  jdbcUrl="jdbc:mysql:///db_support"  --> url de connexion
	  user="root" 
	  password=""  
	  maxPoolSize="15" 
	  minPoolSize="3" 
	  acquireIncrement="3"/>
	<ResourceLink
		global="jdbc/c3p0Pool"
		name="jdbc/c3p0Pool"
		type="javax.sql.DataSource" />
</Context>
Code :
1
2
3
4
 
      Context initContext = new InitialContext();
      Context envContext = (Context) initContext.lookup("java:/comp/env");
      ds = (DataSource) envContext.lookup("jdbc/c3p0Pool");
Voilà :-)
spk4ever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 19h27   #12
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
Bon,

Aujourd'hui, de retour au boulot, je me suis dit, "super ca va être réglé cette
affaire" ... ben non ! que dalle ! rien a faire :-( Je suis reparti de zéro et
j'ai fait exactement la même chose que sur mon poste à la maison, rien
à faire ?!!! C'est quand même dingue !!!

Les différences entre les deux me direz vous ?
- maison : linux, tomcat 5.5.16, jdk 1.5, postgresql
- boulot : windows , tomcat 5.5.17, jdk1.5, Oracle (mais j'ai essayé avec
datasource vers postgresql mais rien a faire)

C'est comme si le tomcat ne mettait pas le datasource dans l'annuaire JNDI,
j'ai essayé toutes les solutions qui existent mais j'arrive toujours au meme
résultats. J'ai même deplacé mon jdk et mon tomcat dans des repertoires
sans espaces (eg: c:\Mes Documents) etc.. etc...
Voilà, donc si quelqu'un à une nouvelle piste à explorer je suis
prenneur :-)

Merci à tous,
Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 10h26   #13
spk4ever
Membre à l'essai
 
Inscription : décembre 2005
Messages : 58
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 58
Points : 23
Points : 23
Quelles sont tes erreurs ?
spk4ever est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 10h38   #14
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
Salut et merci pour l'intéret :-)

Je n'ai pas d'erreur de création ou quoi que ce soit, j'ai simplement une
exception lors de l'appel à la datasource:

Code :
exception javax.naming.NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte
C'est vraiment super bizarre... j'avoue ne vraiment pas comprendre ce qui
pose un problème ! Ou alors je suis tombé sur une version de tomcat
buguée... faudrait que je fasse un test avec une autre version à la limite.



Merci a+
Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2006, 11h41   #15
xfacq
Membre du Club
 
Inscription : avril 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 85
Points : 65
Points : 65
Par défaut Resolu !

Bonjour,

Cette fois j'en ai le coeur net ! Ca vient de la version du tomcat !!!

5.5.17 -> ca fonctionne pas
5.5.16 -> ca fonctionne nickel :-)

C'est pas le délire ca ?!!

Merci a tous pour votre intéret !
a+
Xavier
xfacq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 14h16   #16
darkyspirit
Invité régulier
 
Inscription : juin 2004
Messages : 18
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 18
Points : 7
Points : 7
Bonjour,

Je suis en train de voir les possibilités de configuration d'une datasource, et j'aurais voulu savoir s'il était possible de déclarer le contexte ds un fichier à part du server.xml avec Tomcat 4.x

Si vous avez des infos sur la manière de proceder, je suis preneur car je n'ai rien trouvé là dessus sur le site de tomcat ni ailleur.

Merci d'avance
darkyspirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 11h33   #17
clincks
Candidat au titre de Membre du Club
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 13
Points : 13
Citation:
Envoyé par xfacq Voir le message
Salut et merci pour l'intéret :-)

Je n'ai pas d'erreur de création ou quoi que ce soit, j'ai simplement une
exception lors de l'appel à la datasource:

Code :
exception javax.naming.NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte
C'est vraiment super bizarre... j'avoue ne vraiment pas comprendre ce qui
pose un problème ! Ou alors je suis tombé sur une version de tomcat
buguée... faudrait que je fasse un test avec une autre version à la limite.



Merci a+
Xavier
Il faut définir dans le fichier context.xml

<ResourceLink global="jdbc/tadebdefinition" name="jdbc/tadebdefinition" type="javax.sql.DataSource"/>
clincks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2012, 17h47   #18
sauzanne
Invité de passage
 
Inscription : avril 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 7
Points : 1
Points : 1
J'ai déjà eu ce problème il s'agit et fréquemment de simples problèmes de syntaxe un simple s en moins et c'est l'erreur. Je conseille de rajouter directement à context.xml les infos. Comme dans l'exemple ci-dessous

Code :
1
2
3
4
5
6
7
8
9
10
<Resource name="jdbc/fbi"
		auth="Container"
		type="javax.sql.DataSource"
		username="sa"
		maxActive="100"
		maxIdle="100"
		removeAbandonedTimeout="60"
		password="ffbb,jjk,dc,117"
		driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
		url="jdbc:sqlserver://192.168.1.3;databaseName=FFBB_NEW"/>
et dans votre fichier xml (ici hibernate) :
sauzanne 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 05h44.


 
 
 
 
Partenaires

Hébergement Web