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 :

Probleme JSP / ORACLE


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut Probleme JSP / ORACLE
    Bonjour à tous ,

    j'ai le probleme suivant quand je me connecte à une base oracle distante avec sql plus et que je requete ma base c'est tres rapide.
    Par contre quand je passe par ma jsp avec jdbc c'est d'une lenteur effroyable quelqu'un aurai une idée de ou ca peut venir?
    voici mon code :
    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
     
     
    Class.forName("oracle.jdbc.OracleDriver").newInstance();
    //DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
    Connection con =(OracleConnection) DriverManager.getConnection("jdbc:oracle:thin:@xxxxxxx:1521:xxxx", "xx", "xxxxx");
     
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("select DIF from DIF where USER_ID='toto'");
     
    while (rs.next()) {
            valeur = rs.getInt("DIF");
    }
     
    con.close();
    out.println(valeur);
    Quand je requete une personne via sql plus ca prend moins d'une seconde mais en passant par ma jsp la reponse se fait attendre quasiment 10 à 15 secondes.

    Je precise que ma base contient que deux champs et 3 entrées .

    Si quelqu'un a une idée je suis vraiment preneur.

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Bonjour,

    Selon ce que je vois, tu recrées une connection à chaque requête, et c'est cela qui est lent, pas la requête en elle-même.

    Il faudrait que tu crées la connection une seule fois, que tu la mettes en "cache", et que tu t'en serves pour faire tes requêtes successives sans en créer une nouvelle à chaque fois.

    En plus ton code ne ferme pas la connection, il faut faire un close() pour bien faire.

    Normalement, dans les applications d'entreprise, il existe des pools de connection, qui font une dizaine ou une vingtaine de connexions, et qui les mettent dans un pool ( une sorte de collection ) ainsi, dès qu'il y a un besoin d'accéder à la base, une de ces connexions déjà ouverte est piochée et utilisée, puis libérée pour les requêtes consécutives.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Je suis tout à faire d'accord avec toi pour le pool. Mais dans le même temp ce qui est incomprehensible c'est que lorsque je passe par un programme java basic sans jsp et que je requete ca met a peine 1 seconde pour m'afficher la reponse alors que dans ma JSP ca met 15 secondes pourtant j'utilise le même driver de connexion et je garde quasiement le meme code que dans ma JSP je comprend pas ou se trouve l'astuce.

    tu aurais une idée?


    Citation Envoyé par KiLVaiDeN Voir le message
    Bonjour,

    Selon ce que je vois, tu recrées une connection à chaque requête, et c'est cela qui est lent, pas la requête en elle-même.

    Il faudrait que tu crées la connection une seule fois, que tu la mettes en "cache", et que tu t'en serves pour faire tes requêtes successives sans en créer une nouvelle à chaque fois.

    En plus ton code ne ferme pas la connection, il faut faire un close() pour bien faire.

    Normalement, dans les applications d'entreprise, il existe des pools de connection, qui font une dizaine ou une vingtaine de connexions, et qui les mettent dans un pool ( une sorte de collection ) ainsi, dès qu'il y a un besoin d'accéder à la base, une de ces connexions déjà ouverte est piochée et utilisée, puis libérée pour les requêtes consécutives.

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    A part la compilation de la JSP ( si tu as mit le code DANS la JSP ) je ne vois pas ce que ça change au niveau performance, étant donné que la JSP devient une Servlet.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Citation Envoyé par KiLVaiDeN Voir le message
    A part la compilation de la JSP ( si tu as mit le code DANS la JSP ) je ne vois pas ce que ça change au niveau performance, étant donné que la JSP devient une Servlet.
    Je pense que le probleme peut venir du fait que ma jsp utilise le driver de base et pas le ojdbc14 que j'ai pourtant mis dans le classpath. Car quand je lance le programme en java pur sous eclipse par exemple et que je lui defini bien que le driver est ojdbc14 la il va super vite.

    Donc a mon avis ca peut venir du driver de connexion qui est utilisé par ma jsp mais à vrai dire je sais pas trop comment savoir si il utilise bien ojdbc14 ou bien un autre.

    Tu sais comment je pourrai faire?

    Parce que je suis completement d'accord avec toi que ca devrai pas jouer sur les performances . vu que ca reste du java

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("oracle.jdbc.OracleDriver").newInstance();
    Cette ligne me fait croire que tu utilises bien ojdbc14.jar, car sinon il ferait un ClassNotFoundException.

    Je pense que le problème est lié à la compilation de la JSP, est-ce qu'une fois que tu as démarré ton serveur, et que tu as fait une requête, la requête suivante est lente également ? ( en faisant actualiser sur la page par exemple )

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Citation Envoyé par KiLVaiDeN Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("oracle.jdbc.OracleDriver").newInstance();
    Cette ligne me fait croire que tu utilises bien ojdbc14.jar, car sinon il ferait un ClassNotFoundException.

    Je pense que le problème est lié à la compilation de la JSP, est-ce qu'une fois que tu as démarré ton serveur, et que tu as fait une requête, la requête suivante est lente également ? ( en faisant actualiser sur la page par exemple )
    Oui c'est egalement lent. Par contre je sais pas si il utilise bien ojdbc14 car je sais pas comment le verifier.
    Il se peut qu'il y est un autre driver sur le serveur sans le savoir. C'est possible de savoir quel jar il lance?

  8. #8
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Tout dépend de comment tu lances ton application, si c'est via Eclipse, tu vas dans les propriétés de lancement de ton serveur et tu regardes les librairies qu'il utilise. Si tu as ajouté par exemple un tomcat, tu peux aussi aller voir dans le repertoire commons/lib de l'installation de tomcat.

Discussions similaires

  1. probleme charset oracle php
    Par mickjack dans le forum Oracle
    Réponses: 7
    Dernier message: 19/10/2011, 17h03
  2. JSP & Oracle
    Par soumou dans le forum Oracle
    Réponses: 1
    Dernier message: 03/07/2006, 16h03
  3. [probleme] installation oracle sous red hat9
    Par itinerisme dans le forum Oracle
    Réponses: 4
    Dernier message: 16/01/2006, 14h53
  4. probleme install oracle 10g
    Par Leila75 dans le forum Installation
    Réponses: 5
    Dernier message: 12/10/2005, 08h28
  5. [JSP/Oracle] de 7 vers 8i
    Par Ekros dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 13/04/2004, 15h41

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