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

Servlets/JSP Java Discussion :

Tomcat + jdbc : Le Nom [mydb2] n'est pas lié à ce Contexte


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Tomcat + jdbc : Le Nom [mydb2] n'est pas lié à ce Contexte
    Bonjour,

    Meilleurs vœux tout d'abord !

    Voici ce qui m'amène : je souhaiterais créer une page jsp rudimentaire permettant de visualiser les données présentes dans une table d'une base postgresql via jdbc, le tout déployé sous Tomcat 8.

    Mon 1er test utilise les instructions suivantes pour la connexion (extrait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Class.forName("org.postgresql.Driver");
    Connection cn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres?user=postgres&password=admin");
    Ici pas de problème, le contenu de ma table est bien affiché.

    Mon 2nd test utilise cette fois la notion de contexte :

    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");
    DataSource ds = (DataSource)envContext.lookup("jdbc/mydb1");
    Connection cn = ds.getConnection();
    J'ai au préalable mis à jour les fichiers server.xml et context.xml (présents dans C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf) comme suit :

    server.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
    <Resource name="jdbc/mydb1"
    		  auth="Container"
    		  type="javax.sql.DataSource"
    		  driverClassName="org.postgresql.Driver"
    		  url="jdbc:postgresql://localhost:5432/postgres"
    		  username="postgres"
    		  password="admin"
    		  maxActive="20"
    		  initialSize="0"
    		  minIdle="0"
    		  maxIdle="8"
    		  maxWait="10000"
    		  timeBetweenEvictionRunsMillis="30000"
    		  minEvictableIdleTimeMillis="60000"
    		  testWhileIdle="true"
    		  validationQuery="SELECT 1"
    		  maxAge="600000"
    		  rollbackOnReturn="true"/>
    context.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Resource name="jdbc/mydb1" auth="Container" type="javax.sql.DataSource"
                   maxTotal="100" maxIdle="30" maxWaitMillis="10000"
                   username="postgres" password="admin" driverClassName="org.postgresql.Driver"
                   url="jdbc:postgresql://localhost:5432/postgres"/>
    La encore pas de problème, le contenu de ma table est bien affiché.

    A présent, 3ème et dernier test : je souhaiterais ne pas avoir à modifier les fichiers server.xml et context.xml comme précédemment, mais plutôt utiliser des fichiers context.xml et web.xml propres à mon appli web.

    Voici les fichiers impliqués :

    context.xml dans le sous-dossier META-INF de mon appli web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
      <Resource name="jdbc/mydb2" auth="Container" type="javax.sql.DataSource"
                   maxTotal="100" maxIdle="30" maxWaitMillis="10000"
                   username="postgres" password="admin" driverClassName="org.postgresql.Driver"
                   url="jdbc:postgresql://localhost:5432/postgres"/>
    </Context>
    web.xml dans le sous-dossier WEB-INF de mon appli web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
      version="3.1">
      <description>postgres</description>
      <resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/mydb2</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref> 
    </web-app>
    Et enfin la partie connexion dans ma page :

    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");
    DataSource ds = (DataSource)envContext.lookup("jdbc/mydb2");
    Connection cn = ds.getConnection();
    Cette fois quand j'affiche ma page, j'ai la belle erreur suivante :

    javax.servlet.ServletException: javax.naming.NameNotFoundException: Le Nom [mydb2] n'est pas lié à ce Contexte

    J'ai du louper un épisode ou bien mon implémentation n'est tout simplement pas possible ...

    Merci d'avance pour votre aide !

  2. #2
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Enfin !
    Suite et fin, près de 3 mois plus tard.

    Le répertoire de l'application dans lequel je mettais mes fichiers était trop bas par rapport à l'arborescence du serveur, ce qui empêchait l'interprétation des fichiers de config

    Avant : C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\ROOT\postgres
    Après : C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\postgres

+ 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. 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