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 :

Objet application / persistant


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut Objet application / persistant
    Bonjour,

    Je travaille sur une application qui a pour objectif de représenter sur une interface graphique un ensemble de données stockées dans un fichier.

    L'objectif étant que lors du démarrage de l'application une sevlet ou autre s'exécute et charge le contenu des fichiers en mémoire.

    Ces objets sont sensés être unique (Singleton) et être partager par tous les sessions utilisateurs autrement dit des objets application.

    Toutes les JSP utilisateurs vont devoir accéder en lecture sur les mêmes objets instanciés au démarrage de l'application.

    Qlq'un aurais une idée comment mettre en œuvre cette solution techniquement?


    NB : Un Thread (démon) se réveil tous les (x temps) pour lire les fichiers et MAJ c’est objets mémoire.

    Merci pour vos réponses.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Tu peux initialiser le chargement de tes fichiers dans un listener de servlet, puis placer les objets dans la portée application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().getServletContext().setAttribute("collection", taCollection)
    Attention de prévoir aussi la synchronisation sur la collection d'objets puisqu'ils sont rechargés régulièrement.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par ohanny Voir le message
    Tu peux initialiser le chargement de tes fichiers dans un listener de servlet, puis placer les objets dans la portée application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().getServletContext().setAttribute("collection", taCollection)
    Attention de prévoir aussi la synchronisation sur la collection d'objets puisqu'ils sont rechargés régulièrement.
    Merci pour ta réponse je vais essayer cette solution.

    Pour la synchronisation, je pense l'appliquer à tous les setters de mes bean, même si les threads utilisateurs ne vont faire que executer que des méthodes des Get d'affichage.

    La MAJ des objets se fera par un thread unique (listner de servlet) lancer au chargement de l'application.

    Merci encore et je te tiendrais au courant.

  4. #4
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Context applicatif dans la servlet d'initialisation

    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
     
    public class ServletListenerWebmail implements ServletContextListener
    {
    	public void contextInitialized(ServletContextEvent event)
    	{
     
    		//Chargement du contexte
    		Context ctx = new InitialContext();
     
    		MonObjet monObjet = new monObjet();
     
    		//On place monObjet dans le ctx
    		ctx.rebind("monContextApplicatif", monObjet);
    	}
    }

    monContextApplicatif sera accessible pour toute personne se connectant à l'application

  5. #5
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    Merci pour ta réponse, bon j'ai utilisé la class servletContext pour charger mon objet partagé, Maintenant je veux le mettre à jour tous les X temps. Pour celà j'ai utilisé la classe Timer:
    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
    18
    19
    20
    21
    22
    23
    24
    
    public class MyServletContextListener implements ServletContextListener{
         public void contextInitialized(ServletContextEvent event)
         {
                ServletContext sc = event.getServletContext();
                Object obj = new Object();
                sc.setAttribute("sauvegarde", obj);
    
             //Timer Task pour MAJ l'objet obj
             Timer timer = new Timer (  ) ;
              timer.schedule ( new RemindTask (obj) , seconds*1000 , 2000) ; 
          }
        
         class RemindTask extends TimerTask  { 
                 Object ob;
                 public RemindTask (){
                       this.obj=obj;
                 }
                 public void run (  )   { 
                   obj.MAJ();         
                 } 
         }  
    }
    Ma question est la suivante ==> ce que la MAJ de mon objet stockés dans le context applicatif par un thread de type java.util.timer est propre techniquement? sinon auriez vous des idées?

    Merci pour vos réponses.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/11/2007, 22h08
  2. Existe-t-il un objet Application en VB6?
    Par Virtualité dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 03/11/2007, 19h16
  3. [1.1] Objet Application non instancié
    Par frechy dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/02/2007, 09h38
  4. [Objet] application OOP et openGL
    Par deeal dans le forum OpenGL
    Réponses: 4
    Dernier message: 18/04/2006, 17h58
  5. Réponses: 2
    Dernier message: 17/03/2004, 13h58

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