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

Entrée/Sortie Java Discussion :

[RMI] Garder une trace des clients


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 198
    Points : 97
    Points
    97
    Par défaut [RMI] Garder une trace des clients
    bonjour,

    Je souraite garder une trace des tout mes clients (RMI) pour pouvoir les notifiers avec certaines informations.

    J'ai donc essayé de faire ceci:

    Serveur:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public class Server extends UnicastRemoteObject implements LoginInterface, ModelInterface {
        private static Prog prog;
        private static ArrayList<Client> clientList;
        /**
         * Constructeur de la classe Server
         */
        public Server () throws RemoteException {
        }
     
        /**
         * méthode qui démarre le serveur
         */
     
        public static void main(String[] args) throws Exception {
            String serverName = "sServer";
            Server sServer = new Server();
            Server.clientList=new ArrayList();
            try{
                //le registre RMI est initialisé ici!
                java.rmi.registry.LocateRegistry.createRegistry(1099);
            } catch (Exception e) {
                System.out.println("Erreur: le programme n'a pas pu créer le registre");
            }
            //On lance le rebind avec le nom du serveur et l'objet serveur qu'on vient de créer
            Naming.rebind(serverName, sServer);
            //On affiche l'adresse IP du serveur
            System.out.println(serverName +" est en marche" + " l'adresse IP du serveur est: "+
                    InetAddress.getLocalHost().toString());
            //Une instance de la classe prog, qui gère le jeu, est lancée
            prog = new Prog();
     
     
     
        }
     
        /**
         * Envoie l'objet Prog
         */
         public Prog getProg() throws RemoteException {
             return this.prog;
     
         }
     
        public void login(Client newClient) throws RemoteException {
            Server.clientList.add(newClient);
        }
     
     
    }
    le client:
    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
    39
    40
    public class Client extends UnicastRemoteObject implements Serializable {
        private static LoginInterface loginServ;
        private static ModelInterface modelServ;
     
        /**
         * Constructeur de la classe
         */
        public Client () throws RemoteException{
        }
        /**
         * Méthode qui démarre le / les clients
         */
        public static void main(String[] args) throws RemoteException {
            //ici on introduit l'adresse IP du serveur
            String hostname = "//127.0.1.1/sServer";
            if (args.length > 0) {
                hostname = "//" + args[0] + "/sServer";
            } else {
                System.out.println("Pas de hostname saisi, le client est lancé" +
                        " sur cette machine");
            }
           try{
               /**Le client effectue un lookup sur les deux interfaces du jeu,
                * pourintéragir avec le serveur
                */
     
               modelServ = (ModelInterface) Naming.lookup(hostname);
               loginServ = (LoginInterface) Naming.lookup(hostname);
               System.out.println("La connexion au serveur a été établie!");
     
           }
           catch(Exception e){
               System.out.println("Le serveur n'a pas été trouvé!");
           }
           finally{
               new GUI.MainMenuGUI(modelServ).setVisible(true);
    // --- C EST ICI QUE CA PLANTE :-)
               loginServ.login(this);
           }
        }
    et mon LoginInterface:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface LoginInterface extends Remote {
        public void login(Client newClient) throws RemoteException;
    }
    Malheureusement j'ai une erreur dans le client qui me dis "non-static variable this cannot be referenced from a static context". Je comprend bien que mon client est un static mais je ne sais pas comment faire pour résoudre ce problème et avoir une liste de mes clients...

    Merci

  2. #2
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Elève le static de loginServ, modelServ, initialise proprement un Client (en passant le code commenté par "Le client effectue un lookup sur les deux interfaces du jeu, pourintéragir avec le serveur" dans le constructeur de Client), et au lieu de passer this, tu passes ton nouveau client.

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

Discussions similaires

  1. Garder une trace des modifications de données
    Par wachoo31 dans le forum Modélisation
    Réponses: 6
    Dernier message: 19/09/2009, 09h54
  2. garder une trace des exceptions
    Par pascal_T dans le forum PL/SQL
    Réponses: 2
    Dernier message: 07/09/2009, 17h19
  3. Réponses: 4
    Dernier message: 12/03/2009, 14h27
  4. Garder une trace écrite du stack
    Par Boubou Balrog dans le forum Prolog
    Réponses: 11
    Dernier message: 06/02/2007, 22h03
  5. Garder une trace des fichiers log
    Par Krispy dans le forum Administration système
    Réponses: 2
    Dernier message: 10/05/2006, 19h20

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