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

JDBC Java Discussion :

[Datasource]Configuration avec SQL


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut [Datasource]Configuration avec SQL
    Bonjour,

    Comme expliqué dans la faq [http://java.developpez.com/faq/jdbc/?page=dataSources], j'ai essayé de configurer ma datasource avec ma base de données MySQL....mais la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //récupération de la DataSource à partir du contexte
    Context ctx = new InitialContext();
    DataSource source = (DataSource)ctx.lookup("jdbc/MaDataSource");
    Me genère une erreur ClassCastException.

    Exception in thread "main" java.lang.ClassCastException: javax.naming.Reference
    at Test.main(Test.java:43)


    Merci d'avance pour votre aide.
    @+
    debutant toujours!!

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    A quoi correspond la ligne 43 de ton code?
    Bien le bonjour chez vous
    Jowo

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Citation Envoyé par jowo
    A quoi correspond la ligne 43 de ton code?
    Il correspond à la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataSource source = (DataSource)ctx.lookup("jdbc/MaDataSource");
    debutant toujours!!

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Salut,

    No one !!
    debutant toujours!!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 59
    Points
    59
    Par défaut
    Tu récupères bien qqch via le nom JNDI, sinon tu n'aurais pas de ClassCastException avec du null!
    essaye ça pour savoir ce que tu obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object source = ctx.lookup("jdbc/MaDataSource");
    System.out.println("object : " + source);
    il devrait t'afficher le nom de la classe que tu obtiens!
    Peut etre que tu utilises une DataSource qui n'est pas une DataSource SQL!

    +++
    vandoor

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    on peut pas avoir de datasource non sql ?
    Il me semblait que si...
    PHP / J2EE

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 59
    Points
    59
    Par défaut
    c'est pas de ça qu'il s'agit, tu as un objet instancié et tu veux le caster dans quelque chose qu'il ne comprend pas!
    tu devrais d'abord te soucier de savoir ce que tu obtiens de ton lookup!
    +++
    vandoor

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Citation Envoyé par vandoor
    Tu récupères bien qqch via le nom JNDI, sinon tu n'aurais pas de ClassCastException avec du null!
    essaye ça pour savoir ce que tu obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object source = ctx.lookup("jdbc/MaDataSource");
    System.out.println("object : " + source);
    il devrait t'afficher le nom de la classe que tu obtiens!
    Peut etre que tu utilises une DataSource qui n'est pas une DataSource SQL!
    Oui, le nom de la classe que j'obtiens est : javax.naming.Reference...C'est bien normal, non ?

    @+
    debutant toujours!!

  9. #9
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    As-tu bien référencé ton DataSource?
    Bien le bonjour chez vous
    Jowo

  10. #10
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Est ce que tu pourrais nous montrer la declaration de : MaDatasource?
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par fabszn
    Hello,

    Est ce que tu pourrais nous montrer la declaration de : MaDatasource?
    C'est la même que celle du FAQ.

    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
     
    //initialisation du contexte
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
          "com.sun.jndi.fscontext.RefFSContextFactory");
    InitialContext ic = new InitialContext();
     
    // création d'une référence sur la DataSource
    Reference ref = new Reference("javax.sql.DataSource",
          "org.apache.commons.dbcp.BasicDataSourceFactory",
          null);
    ref.add(new StringRefAddr("driverClassName", "com.mysql.jdbc.Driver"));
    ref.add(new StringRefAddr("url", "jdbc:mysql://localhost/mabase"));
    ref.add(new StringRefAddr("username", "xxx"));
    ref.add(new StringRefAddr("password", "xxx"));
     
    //liaison de la DataSource au contexte
    ic.rebind("jdbc/MaDataSource", ref);
    Est-ce possible de faire un cast de la classe Reference à DataSource ?


    Merci.
    debutant toujours!!

  12. #12
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    C'est normale que tu recuperes un objet de Type reference, c'est ce que tu mets dans ton context JNDI!

    IL faudrait que tu downcast en javax.naming.Reference ce que tu recuperes de ton lookup..mais je pense que cela ne t'avancerais pas ...

    En fait il faut que tu créés d'abord une instance BasicDataSourceFactory
    et ensuite que tu obtiennes une Datasource via la methode createDataSource()

    et que tu places cette DataSource dans ton arbre JNDI....
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par fabszn
    Hello,

    C'est normale que tu recuperes un objet de Type reference, c'est ce que tu mets dans ton context JNDI!

    IL faudrait que tu downcast en javax.naming.Reference ce que tu recuperes de ton lookup..mais je pense que cela ne t'avancerais pas ...
    Et pourtant c'est ce qui est marqué sur le FAQ (Voir lien : http://java.developpez.com/faq/jdbc/?page=dataSources )
    Je me trompe ??

    Merci.
    debutant toujours!!

  14. #14
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Je n'avais pas vu l'exemple dans le FAQ.. mea culpa..

    En discutant avec un collegue, il m'a donné une idée!

    Est ce que la connection à la base s'effectue correctement?

    Il avait rencontré un probleme similaire ...

    verifie que la connection se fait bien avec les parametres que tu passes à ta Datasource. Si ca se trouve il n'arrive pas à créer la datasource et donc il renvoie ton objet reference.
    Pour tester tu peux faire une connection directe via JDBC..
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  15. #15
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Avec JDBC DriverManager, ça marche très bien...c'est seulement avec la DataSource que je n'arrive pas à le faire..
    Sinon une question (bête!), où est ce qu'il se trouve cet arbre JNDI ?? (je veux dire : est ce qu'on a besoin seulement de MySQL/Connecteur MySQL + JDK pour faire marcher l'exemple ou bien de quelque chose d'autre) ??

    Merci pour vos réponses.
    @++
    debutant toujours!!

  16. #16
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 87
    Points
    87
    Par défaut
    Hello a tous,

    concernant le tutoriel évoqué précédemment, je suis moi meme en train de l'utiliser et j'ai rencontré la même erreur à savoir un problème de cast d'un "javax.naming.Reference" en "DataSource", apres diverses recherches visiblement certains ont réglé le problème (voir http://saloon.javaranch.com/cgi-bin/...&f=46&t=002850 et http://forum.java.sun.com/thread.jsp...19429&tstart=0) en ajoutant à leur classpath certaines librairies comme :

    messagingClient.jar
    naming.jar
    namingClient.jar
    ecutils.jar

    ou encore

    j2cImpl.jar, namingclient.jar, webcontainer.jar

    après plusieurs recherches (je dois etre pas doué) je n'ai pas trouvé comment télécharger ces librairies donc si qqun passant par là pouvait m'indiquer comment faire merci d'avance...


    D'autre part je voudrais ajouter deux petites choses concernant le tutoriel au cas ou certains aient rencontrés les mêmes erreurs :

    la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
    ici Context fait référence à javax.naming et non pas org.omg.CORBA donc attention d'importer javax.naming et non org.omg.CORBA.

    de plus toujours sur cette ligne concernant "com.sun.jndi.fscontext.RefFSContextFactory", il faut savoir (en tout cas moi c'était mon cas") que de base la librairie "fscontext" n'était pas présente il a donc fallu la récupérer et la mettre dans le classpath (en cherchant jndi dans la javadoc on trouve cela).

    voili voilou

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/12/2014, 18h55
  2. Configurer NetBeans 6.5.1 avec Sql Server 2008
    Par naou18 dans le forum NetBeans
    Réponses: 8
    Dernier message: 02/08/2011, 14h41
  3. Probleme avec SQL Server Configuration Manager
    Par poupou63 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 08/06/2011, 15h33
  4. Réponses: 1
    Dernier message: 24/10/2008, 10h23
  5. php Eclipsce configuration avec My SQL
    Par ka123tn dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 20/05/2008, 21h19

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