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 5.5.25] Le Nom jdbc n'est pas lié à ce Contexte


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut [Tomcat 5.5.25] Le Nom jdbc n'est pas lié à ce Contexte
    Salut,

    Voila j'essaie depuis plusieurs jours de mettre en place une authentification sous Tomcat en suivant ce tutoriel
    Mais j'ai une erreur qui surviens lorsque je valide la saisie de mes identifiants.
    La voici :
    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
    24 oct. 2008 11:43:23 org.apache.catalina.realm.DataSourceRealm open
    GRAVE: Exception performing authentication
    javax.naming.NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte
    	at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
    	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
    	at org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:402)
    	at org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:283)
    	at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:181)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:595)
    Avez-vous déjà eu ce genre d'erreur ?
    Je précise que je développe sous Eclipse.


    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    as-tu bien créé le datasource jdbc que tu utilise dans ton realm? Pas de faute d'ortographe dans le nom? Affiche ici la configuration de ton realm et de ton datasource si t'as un doute.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Etant donnée que je développe sous Eclipse, j'ai modifié mon fichier server.xml.
    Voici la déclaration du contexte et du Realm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <Realm className="org.apache.catalina.realm.DataSourceRealm" 
    dataSourceName="jdbc/authen" roleNameCol="ROLE" 
    userCredCol="PASS" userNameCol="LOGIN" userRoleTable="HRR_ROLES" 
    userTable="HRR_USER"/>
    <Context docBase="HRReport" path="/HRReport" reloadable="true" 
    source="org.eclipse.jst.j2ee.server:HRReport">
    <Resource name="jdbc/authen" auth="Container" 
    type="javax.sql.DataSource" username="name" password="pass" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    url="jdbc:oracle:thin:@adresse:1521:HR" 
    maxActive="8" maxIdle="4"/>
    </Context>
    Ensuite je teste avec ces 2 lignes de code que je place dans une page JSP, et qui affiche la version de la base Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%DataSource ds= (DataSource) new InitialContext().lookup("java:comp/env/jdbc/authen"); %>
    <%= ds.getConnection().getMetaData().getDatabaseProductVersion() %>

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new InitialContext().lookup("jdbc/authen");

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Les deux lignes 2 tests que j'ai mis fonctionne.
    Cela m'affiche bien la version de ma base Oracle
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the OLAP and Oracle Data Mining options JServer Release 9.2.0.4.0 - Production

    Le problème se situe après avoir mi en place la contrainte de sécurité dans mon fichier web.xml
    Je rentre mes identifiant, puis quand je valide j'obtiens l'erreur
    Le Nom jdbc n'est pas lié à ce Contexte
    Voici la configuration de ma contrainte de sécurité défini dans le web.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
    <login-config>
    	<auth-method>BASIC</auth-method>
    	<realm-name>Espace Membres</realm-name>
    	<form-login-config>
    		<form-login-page>/admin/login.jsp</form-login-page>
    		<form-error-page>/admin/error.jsp</form-error-page>
    	</form-login-config>
    </login-config>
     
    <security-constraint>
    	<display-name>authentification</display-name>
    	<web-resource-collection>
    		<web-resource-name>Ressource protégée</web-resource-name>
    		<url-pattern>/admin/*</url-pattern>
    		<http-method>GET</http-method>
    		<http-method>POST</http-method>
    	</web-resource-collection>
    	<auth-constraint>
    		<role-name>admin</role-name>
    	</auth-constraint>
    </security-constraint>

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    pardon , mal lu. A priori ta config est correct. J'ai pas des masses d'idée sur une solution. As-tu essayé en mettant ta ressource jndi en dehors du contexte?

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Je viens d'essayer en mettant la ressource en dehors du contexte et c'est toujours pareil.
    J'ai tout essayé, c'est vraiment bizarre.

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    as-tu essayé en dehors d'eclipse?

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Ah non tiens.
    Je vais tester ça dessuite.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Points : 399
    Points
    399
    Par défaut
    Bonjour,

    peux-tu déplacer ta déclaration du Realm vers l'intérieur de l'élément Context?( § Realm Configuration HowTo, Doc Tomcat 5.5 ).

    Cordialement,

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    as-tu essayé en dehors d'eclipse?
    Comment faire pour paramétrer le contexte ?
    J'ai un serveur Tomcat de test mais je ne sais pas comment le configurer.

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    un simple fichier context.xml que tu met dans le META-INF de ton war, sa structure est la meme que le <context ...> que tu avais sous eclipse, tu ne doit juste pas préciser de path (docBase, source, etc) car ce sera calculé par tomcat.

  13. #13
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Je viens de tester en mettant un fichier context.xml dans META-INF et j'arrive a accéder a ma Datasource.
    J'ai testé avec les 2 lignes dans la page JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%DataSource ds= (DataSource) new InitialContext().lookup("java:comp/env/jdbc/authen"); %>
    <%= ds.getConnection().getMetaData().getDatabaseProductVersion() %>
    Cela m'affiche bien la version de ma base de données, dans ma page.
    Par contre quand je valide le formulaire d'authentification j'ai toujours le même message d'erreur qui s'affiche dans les logs :
    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
    Oct 28, 2008 11:01:59 AM org.apache.catalina.realm.DataSourceRealm open
    SEVERE: Exception performing authentication
    javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
    	at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
    	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
    	at org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:402)
    	at org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:283)
    	at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:181)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:595)

  14. #14
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Salut a tous

    Me voila de retour sur mon problème.
    Je viens de trouver la solution, et ça venait d'un problème de configuration du REALM et de ma base de données
    J'ai trouvé la solution sur ce POST

    Voici la configuration de mon fichier context.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
    <Context docBase="HRReport" path="/HRReport" reloadable="true" source="org.eclipse.jst.j2ee.server:HRReport">
    	<Resource name="jdbc/authen" auth="Container" type="javax.sql.DataSource" username="login" password="pass" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@adresseServeur:1521:TEST" maxActive="50" maxIdle="4"/>
    	<Realm className="org.apache.catalina.realm.DataSourceRealm" dataSourceName="jdbc/authen" localDataSource="true" userRoleTable="HRR_ROLE" userTable="HRR_USER" userCredCol="PASS" userNameCol="LOGIN" roleNameCol="ROLENAME" digest="MD5"/>
    </Context>
    Il fallait mettre l'attribut localDataSource="true" dans le realm.

    Ensuite voici la configuration du web.xml concernant la protection du répertoire admin
    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
    	<!-- Protection de la partie Administration-->
    	<security-role>
    		<description>administration</description>
    		<role-name>admin</role-name>
    	</security-role>
     
    	<login-config>
    		<auth-method>FORM</auth-method>
    		<realm-name>Espace Membres</realm-name>
    		<form-login-config>
    			<form-login-page>/admin/login.jsp</form-login-page>
    			<form-error-page>/admin/errorLogin.jsp</form-error-page>
    		</form-login-config>
    	</login-config> 
     
    	<security-constraint>
    		<display-name>authentification</display-name>
    		<web-resource-collection>
    			<web-resource-name>Ressource proteger</web-resource-name>
    			<url-pattern>/admin/*</url-pattern>
    			<http-method>GET</http-method>
    			<http-method>POST</http-method>
    			<http-method>PUT</http-method>
    			<http-method>DELETE</http-method>
    		</web-resource-collection>
    		<auth-constraint>
    			<role-name>admin</role-name>
    		</auth-constraint>
    	</security-constraint>
    Merci a tous pour votre aide

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

Discussions similaires

  1. [Tomcat - Datasource] Le Nom jdbc n'est pas lié à ce Contexte
    Par xfacq dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 31/10/2012, 17h47
  2. 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
  3. 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
  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