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

Java Discussion :

Contenu de mon Objet ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut Contenu de mon Objet ?
    Bonjour,

    (Pour une appli de monitoring de bases de données)

    J'ai une classe answer.java, dont voici, en partie, le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public class answer 
    {
        protected String db_name;
        protected Date time;
        public List ma_liste;
        public Calendar cal;
     
        public static Hashtable status = new Hashtable();
     
        public String getStatus(String db_name)
        {
            return (String) status.get(db_name);
        }
     
        public List getStatusAll()
        {
            status.values();
            Set set= status.keySet(); 
            Iterator iter = set.iterator();
            ma_liste = new ArrayList();
     
            int i=1; 
            while (iter.hasNext())
            {  
                ma_liste.add(status.get(iter.next()));
                System.out.println (" "+i+") "+status.get(iter.next())) ; 
                i++; 
            }  
            Collections.sort(ma_liste);
            return ma_liste;
        }
     
        public String setStatus(String key, String val)
        {
            return (String)status.put(key,key+": "+val);
        }
    }
    Je me sert de cet objet pour stocker des statuts de bases de données ("up" ou "down" selon qu'elle fonctionne encore ou qu'elle est morte).

    Dans cette appli, il est possible de charger des threads qui vont envoyer des requêtes sur des bases de données. Juste pour voir si ces requêtes renvoient bien ce qu'elles doivent renvoyer et donc que la DB est en bonne santé.

    Ainsi on peut créer un thread qui va questionner une DB en particulier, ou tout une chier de thread (1 pour chacune de mes DB (500)).

    Créer c'est bien, mais consulter le status d'une DB, c'est mieux. Donc pour ça je me sers de answer.java

    Je stock dans mon objet answer le status de ces DB.

    Je me sert de deux commandes (ligne de commande donc...) pour cela:
    -status db_name
    où je remplace db_name par le nom de la db dont je veux obtenir le statut.

    -status
    qui est censé me renvoyer le status de tout ce qui se trouve dans mon objet answer. Seulement là ça coince... il semblerait que ce que je fais n'est pas bon, ou que la logique fonctionne pas.

    Voici comment j'ajoute des status à mon objet:
    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
     
    while (rs.next()) 
    		{
    		    	isUp=rs.getString(1);   // -->isUp devrait contenir soit "bonjour" soit "BONJOUR"
                            if(isUp.compareToIgnoreCase("bonjour")==0)
                            {
                                System.out.println(db_ok);
                                ans.setStatus(db_name,db_ok);
                                time=new Date();
                                sortie.println(time);                                  
                                ans.setTime(time);
                                isUp=db_ok;
                            }
                            else
                            {
                                System.out.println(db_nok);
                                sortie.println(db_nok);
                                ans.setStatus(db_name,db_nok);
                                isUp=db_nok;
                            }
                    }
    Ce code est dans un thread qui tourne en boucle pour chaque base de données.
    "sortie" est un flux de sortie vers l'application cliente.

    ans.setStatus: j'envoie avec db_name le nom de la db et avec db_nok ou db_ok une string représentant le status. J'espère donc ainsi envoyer clé+valeur vers mon objet.


    J'aimerais donc savoir si ce que je fais dans getStatusAll() peut se faire, et en option, si la logique est bonne.

    Quand je veux consulter cet objet, côté serveur, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my_list = ans.getStatusAll();
    sortie.println(my_list);
    Avec my_list étant un objet List;

    Côté client, pour la consultation toujours de ce qui est renvoyé avec getStatusAll():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    do 
    {
         reponseDuServeur = entreeDepuisServeur.readLine();
         System.out.println(reponseDuServeur);
    }
    while(reponseDuServeur.isEmpty()==false);
    Avec reponseDuServeur et entreeDepuisServeur qui sont des flux...

    J'espère que je vous donne assez d'éléments pour m'aider. (si pas je devrais vous envoyer les quelques milliers de ligne de mon programme et ça je peux que vous vous en passerez volontier )

    D'avance merci.

  2. #2
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Salut!

    C'est quoi qui coince, tu n'as pas d'affichage de tes statuts? L'affichage est incorrect? Tu obtient une exception?

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Oops, oui, désolé, j'ai oublié de le mentionner.

    J'ai une nullPointerException.

    Mais je vois mal d'où ça vient...

  4. #4
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    Quelle ligne ?
    Stack Trace ?

    PS : Une classe commence par une majuscule

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Mon erreur se trouvait ailleur.

    Dans ma méthode getStatusAll(). J'utilisais mal ma hashtable. Puis j'ai essaye une hashmap. Et là ça a marché du premier coup:

    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
     
    public List getStatusAll()
        {
            status.values();
            ma_liste = new ArrayList();
            Set cles = status.keySet();
            Iterator it = cles.iterator();
            while (it.hasNext())
            {
               Object cle = it.next();
               Object valeur = status.get(cle);
               System.out.println(valeur);
               ma_liste.add(valeur);
            }
            Collections.sort(ma_liste);
            return ma_liste;
    Donc maintenant je retrouve bien le status de chacune des DB monitorée .

    Merci quand même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès aux valeurs contenues dans un objet
    Par WalidNat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/05/2006, 17h26
  2. [SimpleXML] Le contenu de mon élément ne s'affiche pas
    Par alliance dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/05/2006, 20h27
  3. Perte du pointeur à mon objet
    Par Maxou22 dans le forum C++
    Réponses: 1
    Dernier message: 11/03/2006, 05h42
  4. Réponses: 11
    Dernier message: 08/01/2006, 22h06
  5. [C#]Quand mon objet axWebBrowser est-il supprimé ?
    Par Kcirtap dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/10/2005, 10h16

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