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

Tomcat et TomEE Java Discussion :

[Tomcat - Datasource] Le Nom jdbc n'est pas lié à ce Contexte


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    http://www.openspace-fr.com/lofivers...php/t3788.html
    Apparemment une des raisons du fonctionnement serait que le paramètre user ne fonctionne pas mais qu'il faut utiliser username.
    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...

  3. #3
    zev
    zev est déconnecté
    Membre actif
    Inscrit en
    Octobre 2004
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 204
    Points : 220
    Points
    220
    Par défaut
    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Context initCtx = new InitialContext();
    DataSource ds = (DataSource) initCtx.lookup("java:comp/jdbc/OracleDs");

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    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

  5. #5
    zev
    zev est déconnecté
    Membre actif
    Inscrit en
    Octobre 2004
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 204
    Points : 220
    Points
    220
    Par défaut
    Si ça peut te consoler j'ai le meme pb avec une datasource vers une base hypersonic

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    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

  7. #7
    zev
    zev est déconnecté
    Membre actif
    Inscrit en
    Octobre 2004
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 204
    Points : 220
    Points
    220
    Par défaut
    Dans ton server.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url="jdbc:oracle:thin:@server:port:base"
    Tu as remplacé server:port:base par leur valeurs réelles ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    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

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    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.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    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

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    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 : 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
     
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          Context initContext = new InitialContext();
          Context envContext = (Context) initContext.lookup("java:/comp/env");
          ds = (DataSource) envContext.lookup("jdbc/c3p0Pool");
    Voilà :-)

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    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

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    Quelles sont tes erreurs ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    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

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    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

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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"/>

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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) :

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

Discussions similaires

  1. erreur BC30451: Le nom 'xx' n'est pas reconnu
    Par starkson dans le forum ASP.NET
    Réponses: 8
    Dernier message: 23/05/2011, 22h16
  2. Tomcat6 , le nom jdbc n'est pas lié à ce contexte.
    Par astrofiles dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 21/11/2008, 11h31
  3. [Tomcat 5.5.25] Le Nom jdbc n'est pas lié à ce Contexte
    Par FabienN dans le forum Tomcat et TomEE
    Réponses: 13
    Dernier message: 14/11/2008, 10h56
  4. Réponses: 9
    Dernier message: 08/01/2008, 05h22
  5. [Struts][Tomcat] ERREUR : le nom jdbc n'est pas lié à ce contexte.
    Par ultracoxy dans le forum Tomcat et TomEE
    Réponses: 23
    Dernier message: 15/06/2006, 16h54

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