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 :

Rendre dispo un objet pendant la tt la session


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut Rendre dispo un objet pendant la tt la session
    Bonjour a tous,

    Voila comme vous avez surement put le lire dans un autre thread j'essai de me former la main sur J2EE. Et la je bloque sur un pb de conception, j'espere que vous allez pouvoir m'aider.

    Voila je voudrai avoir un objet connection disponible pendant toute la session et qu'il soit initialiser au lancement de l'application, donc pour ca j'ai crée un servlet qui se charge au démarage de tomcat. C'est dans cette partie que je doit initialiser et rendre disponible ma connection a la database.

    Au départ je pensais mettre cette objet dans la context Servlet, mais ca me parrait pas tres bon, car des que je voudrais utiliser la connection , dans ma couche "Business" par exemple (Connection c = getConnection() ), il faudrait toujours que je passe le context en parametre pour qu'il puisse la trouver !!!

    Je pense qu'il doit y avoir une meilleur méthode, pourriez vous m'aider merci beaucoups par avance

    B.


    Config :


    Eclipse 2.1.3
    Tomcat 5.0.28

  2. #2
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    A ta place, je mettrais en place un singleton.
    De cette façon, tu n'est meme pas obligé de la chargé au départ de ton appli.
    Quand tu as besoin de ta connexion, tu utilises ton singleton qui te renvoie la connexion. Au premier appel de ton singleton, il crée ta connexion, sinon, il la renvoie juste.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    oui je peux faire ca aussi, c'est vrai et c'est surement plus propre mais ma question est la suivante comment le faire persister............ c'est la que je bloque ??

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Salut,

    A mon avis le problème de conception n'est pas là:

    Pourquoi conserver ton objet Connection tout au long de la session ?

    Cela me semnle être une pratique dangereuse : imagine que tu ne libère pas correctement cet objet connection (plantage serveur ou autre), et bien au bout de quelques temps et avec plusieurs utilisateurs simultanés, ta base va rapidement crier car elle n'aura plus de connections disponilbes...

    Garder un objet connexion implique une programmation très propres pour libérer cet objet dans tous les cas de figure...

    A mon avis tu pourrais et tu ferais mieux d'utiliser un pool de connection...

    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    oui tu as surement raison, mais bon imagine que les parametres ma connection soient dans un XML. Je ne vais pas aller parser le fichier a chaque fois que je demande un connection ?

    Je pense que tu seras d'accord avec ca, et c'est pourquoi je me demande comment faire persister cet objet qui contiendrait tout mes parametres de connection ?

  6. #6
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Dans ce cas utilises tu as deux solutions:

    - utiliser un pool de connections,
    - lire les paramètres de connection une fois pour toutes au démarrage de ton appli (et les conserver car c'est moins dangereux de ne pas libérer quelques String ).

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut


    Yes thibault mais justement c'est la que je bloc, dans quoi je les conserves ???

  8. #8
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Dans un objet en session et tu utilises un SessionListener... Tu stockes tes données de connection à la base (hors user et mot de passe) dans un objet propre a chaque utilisateur...

    Au fait c'est thibaut et pas thibault (maise c'est pas grave) .

  9. #9
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Dans un singleton ... En fait tu utilises le mieux du meilleur du plus bien des 2 méthodes. Enfin, je ferais comme ça ...

  10. #10
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Le problème du singleton est qu'il est propre a un serveur et non à unse session: il est intialisé une fois le serveur ouvert et supprimé quand le serveur est fermé... pas quand la session utilisateur est fermée ...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Y a quand meme un truc qui m'echappe , ok je peux faire un singleton, mais l'instance de l'objet qu'il me renvoit il faut bien qu'il aille la chercher.

    Et il faut surtout que cette instance est été vivante durant toute la session de l'application ou de l'utilisateur. Donc le getInstance, il va aller la chercher ou l'instance ???

  12. #12
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Un singleton conserve l'instance de l'objet en mémoire dans une varibale de classe (static)...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Merci Thibault,vienna et nuke , je vais essayer ca ce soir !!!!!

  14. #14
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    je suis d'accord avec toi thibaut, sur le fait que le singleton a la durée de l'instance du serveur et pas de la session, mais pour un objet qui concerne la base de données, n'est-ce pas ce qu'il recherche en fait ? Parce que des paramètres de connection à la base de données qui ne vivent que le temps d'une session ...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    J'ai pas compris ton intervention nuke ??

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 105
    Points : 107
    Points
    107
    Par défaut
    Pour ma part, j'ai rencontré le meme souci, et j'ai mis en place la solution proposée par Thibaut à savoir, stocker dans la session a l'aide de la classe SessionListener et ca marche nickel...
    c'est propre, c'est clair...et t'es sur de tout libérer apres
    Voila pour mon avis...

  17. #17
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Citation Envoyé par thibaut
    Le problème du singleton est qu'il est propre a un serveur et non à unse session: il est intialisé une fois le serveur ouvert et supprimé quand le serveur est fermé... pas quand la session utilisateur est fermée ...
    Et je pense que c'est bien ce dont tu as besoin, que ton objet contenant les paramètres de connexion à ta BDD ait la même durée de vie que ton serveur et non pas seulement la durée de vie des sessions.

    Exemples :

    Durée de vie du serveur :
    Tu lances ton serveur, ton singleton va récupérer les paramètres et chaque fois qu'un utilisateur se connecte et que la BDD est solicitée, ton appli crée une connexion à la BDD grâce aux paramètres de ton singleton, récupère les données et ferme la connexion puis libère la mémoire des objets de la connexion.

    Durée de vie d'une session utilisateur :
    Tu lances ton serveur et c'est tout. chaque fois qu'un utilisateur se connecte et que la BDD est solicitée, ton appli va récupérer les paramètres (accés au disque du serveur, etc.) et crée une connexion à la BDD grâce aux paramètres, récupère les données et ferme la connexion puis libère la mémoire des objets de la connexion ET des paramètres. Ce qui donne une sur-activité disque et mémoire s'il y a beaucoup d'utilisateurs.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par LoulouFifi
    Pour ma part, j'ai rencontré le meme souci, et j'ai mis en place la solution proposée par Thibaut à savoir, stocker dans la session a l'aide de la classe SessionListener et ca marche nickel...
    c'est propre, c'est clair...et t'es sur de tout libérer apres
    Voila pour mon avis...
    oui mais ca implique qu'il faut je me trinballe tout le tps le "context"dans la classe qui doit me retourner un objet Connection

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par nuke_y

    Et je pense que c'est bien ce dont tu as besoin, que ton objet contenant les paramètres de connexion à ta BDD ait la même durée de vie que ton serveur et non pas seulement la durée de vie des sessions.

    Exemples :

    Durée de vie du serveur :
    Tu lances ton serveur, ton singleton va récupérer les paramètres et chaque fois qu'un utilisateur se connecte et que la BDD est solicitée, ton appli crée une connexion à la BDD grâce aux paramètres de ton singleton, récupère les données et ferme la connexion puis libère la mémoire des objets de la connexion.

    Durée de vie d'une session utilisateur :
    Tu lances ton serveur et c'est tout. chaque fois qu'un utilisateur se connecte et que la BDD est solicitée, ton appli va récupérer les paramètres (accés au disque du serveur, etc.) et crée une connexion à la BDD grâce aux paramètres, récupère les données et ferme la connexion puis libère la mémoire des objets de la connexion ET des paramètres. Ce qui donne une sur-activité disque et mémoire s'il y a beaucoup d'utilisateurs.
    effectivement 100% d'accord

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Merci a tous de votre aide, je n'ai plus place pour marqué [résolu] dans le titre ............ mais c'est ok !!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Rendre une interface inactive pendant l'exécution d'un programme
    Par ploukinet dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 21/05/2007, 16h25
  2. Réponses: 21
    Dernier message: 25/06/2006, 02h31
  3. [POO] Détruire un objet pendant sa construction
    Par raoulchatigre dans le forum Langage
    Réponses: 4
    Dernier message: 23/05/2006, 11h00
  4. Réponses: 8
    Dernier message: 12/12/2005, 15h43
  5. [POO] Rendre invisible un objet Flash en Javascript
    Par tafkap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/10/2004, 19h39

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