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 :

Fermeture de connexion en cas d'arrêt brutal


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 91
    Points : 66
    Points
    66
    Par défaut Fermeture de connexion en cas d'arrêt brutal
    Bonjour,

    j'ai un problème que j'ai déjà posté plusieurs fois mais je n'ai toujours pas réussi à le résoudre. Donc je me pose des questions. Pour résumé ma situation, j'ai une application J2EE qui tourne sous Tomcat 5.5, et il arrive que de temps en temps (en fonction de la fréquence d'utilisation de l'application), l'application ne soit plus accessible. Tomcat manager tourne toujours et je peux voir qu'il y a des servlets qui sont toujours dans les requests, et ce depuis plus de 2 jours parfois. J'ai l'impression que Tomcat ne "libère" pas ces Servlets et je me demande pourquoi. A partir d'une dizaine de Servlets "non fermées", l'application n'est plus accessible. Il est à noter que ce ne sont pas forcément les mêmes servlets qui semblent bloquer... et elles ne bloquent pas à chaque appel non plus. Mon problème est que cela se passe chez des utilisateurs et que par conséquent je ne sais pas ce qu'ils font.

    Il y a des traitements qui peuvent être assez long dans l'application, et je me suis demandé si les utilisateurs n'interrompaient pas ces traitements en cours de route (fermeture de fenêtre sauvage). Dans un tel cas comment cela se passe t il au niveau des connexions à la BD? Si mes appels à la fonction de fermeture de connexion sont dans un "Finally", seront elles fermées quelque soit les interruptions brutales? Si elles ne sont pas dans un "Finally" cela peut il provenir de là?

    Mon post est assez long et j'en suis désolé, mais je suis désespéré... Si quelqu'un a une idée j'en serais ravi. Qu'est ce qui peut faire que l'application n'est plus accessible? Pourquoi Tomcat n'arrête il pas ces satanées Servlets?

    Merci par avance pour votre aide
    Il faut être économe de son mépris en raison du grand nombre de nécessiteux (Chateaubriand)

  2. #2
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Pour répondre a tes questions.

    Sache que une fois une requete envoyée par l'utilisateur, même si ce dernier ferme son navigateur brutalement, l'execution coté serveur se fera totalement (qui plus est si tu utilises des finally).

    Je pense donc que ton problème vient d'ailleurs, es-tu sur que tu fermes toutes les connections?
    As-tu mis des traces dans tes logs pour voir d'ou peut provenir ton problème?

    As tu changer la configuration de tomcat sur les temps de session des utilisateurs ?
    Etre c'est etre relatif.

  3. #3
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Du plus je ne comprend pas ce que tu entends par des servlets qui tourne toujorus ?

    Une servlet est persistante sur le serveur d'app. elle n'est instantié qu'une seule fois, donc un peu plus d'explication de ce coté serait bienvenue.
    Etre c'est etre relatif.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 91
    Points : 66
    Points
    66
    Par défaut
    Tout d'abord merci d'essayer de m'aider.
    Quand je dis, "servlets qui tournent toujours" c'était un moyen d'illustrer le fait que quand je vais dans le manager Tomcat et que je demande "Etat du serveur", j'ai le tableau suivant :

    StageTimeB SentB RecvClientVHostRequest

    Dans Time, j'ai 60 000, et dans Request, j'ai l'adresse d'une servlet (qui n'est pas forcément toujours la même). Pour le reste j'ai "?".

    Concernant les traces, oui j'ai essayé, mais je n'ai rien obtenu de vraiment probant. Je n'ai pas changé la configuration de Tomcat au niveau du temps de connexion. Dois je le faire?
    Merci
    Il faut être économe de son mépris en raison du grand nombre de nécessiteux (Chateaubriand)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 91
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    j'ai toujours mon problème, et il semblerait qu'il apparaisse quand on lance plusieurs fois à la suite (rapidement) un grand nombre de servlet depuis le même poste. Par exemple, si je lance une servlet qui a à effectuer un traitement assez long (20sec) et qu'avant que la servlet renvoi les résultats, je clic ailleurs, puis ailleurs, puis je redemande la première, puis avant la fin je reclic ailleurs, etc....

    Dans "Etat du serveur" dans mon manager, je vais voir toutes les servlet appelées (autant de fois que le nombre de clics). Par defaut, il semblerait que l'on ait ceci

    connectionTimeout : La durée (en millisecondes) pendant laquelle ce connecteur peut attendre qu'une URL lui soit demandée, après avoir accepté une connexion entrante. Par défaut, il peut attendre jusqu'à 60000 ms (60 secondes).
    En temps normal, au bout des 60 sec, les requests n'existent plus dans le manager. Si je pratique le clic à outrance dans tous les sens, les requests sont toujours là, et mon appli n'est plus accessible. Et cela bien au delà de 60sec, puisqu'il me faut redémarrer le service Tomcat.

    Quelqu'un a t il une idée?
    Merci
    Il faut être économe de son mépris en raison du grand nombre de nécessiteux (Chateaubriand)

Discussions similaires

  1. Explication fermeture de connexion Mysql
    Par ideal dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/11/2006, 15h42
  2. Problème de fermeture de connexion
    Par maniolo dans le forum JDBC
    Réponses: 4
    Dernier message: 06/11/2006, 15h58
  3. Réponses: 1
    Dernier message: 28/08/2006, 14h11
  4. Réponses: 3
    Dernier message: 11/08/2006, 16h46
  5. Réponses: 6
    Dernier message: 04/05/2006, 11h44

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