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 :

charger une pilote une seule fois


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 161
    Points : 118
    Points
    118
    Par défaut charger une pilote une seule fois
    Bonjour,

    je veux que le driver sql server est chargé une seule fois pour toute.quelle est à votre avis le code adéquat,parmi les deux codes suivants, pour éxecuter le code ci-dessous une seule fois durant l'exécution de la'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    code1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package chargem_pilote;
    public class Driver {
     static {
    try {
    			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    }
    catch (Exception e) {
     System.err.println("Connexion à la base de données impossible");
     System.exit( -1);
    }
    }
    public static final String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433"+";databaseName="+"base";
    }
    puis j'utilse cette méthode dans une servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private boolean etablirConnexion(String username, String password) {
    boolean statusConnexion = false;
    try {
    Connection cnx = DriverManager.getConnection(Driver.url,username,password);
    statusConnexion = true;
    } catch ( Exception e ) {
    	statusConnexion = false;
    	System.out.println(e);
    }
    return statusConnexion;
    }
    }
    ou bien (selon vos expérience) il est mieux d'utiliser:la méthode init du servlet:
    code2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void init() throws ServletException {
    super.init();
    try {
    			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    }
    catch (Exception e) {
     System.err.println("Connexion à la base de données impossible");
     System.exit( -1);
    }
    }
    si vous avez d'autres suggestions, n'hésitez pas
    merci d'avance.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Dans la méthode init de ta servlet cela me semble pas trop mal ...
    ( j ai réflechi à une connection factory mais il faudrait quand même paramétré ton driver donc ...)

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Tu as une autre solution qui consiste à mieux utiliser ton serveur JEE.
    Tu définis un DataSource, à configurer selon la doc de ton serveur, et ce sera le seul endroit où tu configureras le driver.
    Ensuite, tu utilises ce DataSource depuis un EJB ou une servlet après l'avoir trouvé grâce à une appel JNDI.

    L'avantage, en plus de centraliser la configuration du serveur (un changement de driver revient alors à une modification de paramétrage uniquement), c'est que tu peux bénéficier de services offerts par ton serveur, comme un pool de connexion par exemple.
    Pas besoin de réinventer la roue

    Depuis une jsp, le plus simple est d'écrire un javabean (pas un EJB !!) qui retrouve ce Datasource, toujours par JNDI, et que tu appelles depuis ta page jsp.
    Ainsi si le développeur des jsp est plutôt un webdesigner, il n'aura pas à développer l'appel JNDI lui même, mais simplement à utiliser un javabean tout prêt.

    En espérant que ça t'aide.

    Leo

  4. #4
    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
    Citation Envoyé par leonel

    Depuis une jsp, le plus simple est d'écrire un javabean (pas un EJB !!) qui retrouve ce Datasource, toujours par JNDI, et que tu appelles depuis ta page jsp.
    Ce n'est pas génail un appel JNDI depuis la JSP... théoriquement la jsp ne doit être utilisée uniquement pour afficher et presenter... surtout pas d'accès au données directement.
    On laisse ce travail à la couche métier (modèle).

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Ce n'est pas génail un appel JNDI depuis la JSP... théoriquement la jsp ne doit être utilisée uniquement pour afficher et presenter... surtout pas d'accès au données directement.
    Justement, c'est bien le java bean qui recherche, par JNDI, le DataSource. Pas la jsp.
    En appelant le javabean, la jsp récupère le DataSouce pour établir ensuite sa connection, mais ce n'est pas elle qui s'en charge.
    Celui qui développe la jsp n'a qu'à inclure son appel de l'ejb en début de page, et ne s'occupe de rien d'autre. Il ne sait même pas quel SGBD est derrière.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. exécuter une macro 1 seule fois par semaine ?
    Par deby23 dans le forum VBA Access
    Réponses: 9
    Dernier message: 20/12/2012, 11h22
  3. [PHP 5.3] je cherche à faire appel à une fonction 1 seul fois
    Par geforce dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2010, 14h16
  4. Réponses: 4
    Dernier message: 04/12/2009, 12h18
  5. [MySQL] Utilisation des valeur choix multiple pour executer une requete une valeur a la fois
    Par guigui69 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/12/2007, 16h43

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