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 :

Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'


Sujet :

JDBC Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'
    bonjour à tous,

    Je n'arrive pas à créer un pool de connexion dans mon appli. Dans mon context.xml j'ai le code suivant :

    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
     
     
    <Context path="/ds3">
     
    	<Resource 
    		name="corp.test.ds3" 
    		auth="Container" 
    		type="javax.sql.DataSource" 
    		maxActive="10" 
    		maxIdle="3" 
    		maxWait="10000" 
    		username="ds3"
    		password="0123456789"
    		driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    		url="jdbc:microsoft:sqlserver://10.12.4.79:1433;DatabaseName=ds3;"
     
    />
    Le log me renvoi l'erreur suivante :

    Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'

    Le serveur fonctionne avec le login/mdp ci dessus.

    J'ai essayé d'une autre facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Connection cnx = null;
    PreparedStatement cSmt = null;
    ResultSet rs = null;
     
    String connectionUrl = "jdbc:sqlserver://10.12.4.79:1433;" +
    				 "databaseName=dbspare;user=ds3;password=0123456789";
    cnx = DriverManager.getConnection(connectionUrl);
     
    String sql = "SELECT ....";
    cSmt = cnx.prepareStatement(sql);
    rs = cSmt.executeQuery();
    Et la ca fonctionne. Le jar sqljdbc4 est donc WEB-INF/lib, et a été ajouté dans le build path (eclipse).

    Je sèche ... merci de votre aide

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal que les URL de connections soient différentes ? Ainsi que le nom de la base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jdbc:microsoft:sqlserver://10.12.4.79:1433;DatabaseName=ds3;
    jdbc:sqlserver://10.12.4.79:1433;databaseName=dbspare;user=ds3password=0123456789
    a++

    PS :

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Dans le dernier code il manque pas une ligne? le chargement du driver , regarde la chaine qui est passée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("chaine_driver");

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    Merci de vos réponses rapides

    En fait les URL de connexion sont différentes parce que j'ai changé les noms de base/ip/et nom des packages ..etc par sécurité.

    J'ai fait des essais avec "jdbc:microsoft:sqlserver" et "jdbc:sqlserver" ca me renvoi la même erreur.

    Pour le Class.forname, d'après MSDN :

    Dans l'API JDBC 4.0, la méthode DriverManager.getConnection est améliorée pour charger automatiquement les pilotes JDBC. Par conséquent, les applications n'ont pas besoin d'appeler la méthode Class.forName pour inscrire ou charger le pilote lors de l'utilisation de la bibliothèque de classes sqljdbc4.jar.
    J'ai fait des tests en le mettant quand même ca ne marche pas. J'ai oublié de préciser, j'utilise sql server 2008 express

    Merci

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tac13 Voir le message
    En fait les URL de connexion sont différentes parce que j'ai changé les noms de base/ip/et nom des packages ..etc par sécurité.
    OK c'est juste que c'est ce qui m'a sauté aux yeux en lisant ton message



    En relisant je viens de voir ceci :
    Citation Envoyé par tac13 Voir le message
    Le jar sqljdbc4 est donc WEB-INF/lib,
    Ça peut expliquer ton problème.

    Les jar dans WEB-INF/lib sont accessibles uniquement par ton application, ce qui expliquerait que les connexions directes via DriverManager fonctionne normalement.

    Par contre les pools de connexion sont gérés par le serveur d'application, qui utilise son propre classpath avant même de charger ton application.



    Je pense que cette librairie devrait plutôt se situer dans le répertoire de ton serveur d'application.
    Je ne sais pas quel serveur tu utilises, mais avec Tomcat c'est sous le répertoire <tomcat>/common/lib...


    a++

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Je pense que cette librairie devrait plutôt se situer dans le répertoire de ton serveur d'application.
    Je ne sais pas quel serveur tu utilises, mais avec Tomcat c'est sous le répertoire <tomcat>/common/lib...
    +1

    c'est ce que je me suis dit

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    bravo je n'avais pas fait gaffe a cette subtilité ca marche.

    Merci de vos réponses rapides . Au niveau des performances, y a t'il une différence entre utiliser un pool ou le DriverManager ?

    Bon appétit

  8. #8
    Expert éminent
    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
    Par défaut
    le pool va permettre de limiter la charge sur ton serveur (nombre max de connections du pool) et réutiliser les connexions. Ce dernier point évitera la perte de temps que sont les opérations de connexion HTTP, de négociation du mot de passe et d'ouverture de session.

    Pour information, je bosse sur un serveur oracle, et le design fait que
    -> les requte sont rapides à exécuté
    -> l'ouverture d'une session peut mettre jusqu'à 1 seconde.
    si à chaque affichage de page, je devais attendre 1 seconde, on serait un peut dans la merde coté perfs, vive le pool

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    ok

    Je passe le sujet en [résolu]

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/01/2013, 12h47
  2. Réponses: 4
    Dernier message: 01/04/2011, 12h14
  3. Réponses: 1
    Dernier message: 13/07/2010, 14h46
  4. Réponses: 3
    Dernier message: 19/03/2006, 09h10

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