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

API standards et tierces Java Discussion :

RMI : equals et hashcode


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 23
    Par défaut RMI : equals et hashcode
    Bonjour,

    J'ai une application utilisant RMI ; donc coté serveur une logique métier, et client client de simples appels.

    Voici mon code :

    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
     
    public class SecurityServiceImpl extends ServiceImpl implements SecurityService {
     
            private List<User> connectedUser;
     
    	public User connect(String userName, String password) throws AlreadyLoggedException, LoginFailedException, RemoteException {
     
    		for(User user : connectedUser ) {
    			if ( user.getUserName().equals(userName) ) {
    				throw new AlreadyLoggedException();
    			}
    		}
     
     
    		User user = new UserImpl();
    		user.setUserName(userName);
    		user.setPassword(password);
     
    		...
     
    		connectedUser.add(user);
     
    		return user;
    	}
     
           @Override
    	public void disconnect(User user) throws NotConnectedException, RemoteException {
    		if ( !isConnected(user) ) {
    			throw new NotConnectedException();
    		}
     
    		connectedUser.remove(user);
    	}
    }
    SecurityServiceImpl étend UnicastRemoteObject
    SecurityService implémente Remote
    User implémente Remote
    UserImpl étend UnicastRemoteObject
    Voici le code client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SecurityService rmiService = (RMIService) Naming.lookup(urlService);
     
    User myUser  = securityService.connect("test","test");
    securityService.disconnect(myUser);
    Problème : la fonction connectedUsers.remove() ne fonctionne pas. J'ai remarqué qu'elle utilisait la méthode equals() pour trouver l'élement à supprimer, hors c'est la méthode equals() du stub de l'objet User qui est appelée, et non la méthode UserImpl.equals(). Donc c'est tout à fait normal qu'il n'arrive pas à trouver l'objet dans la liste.
    Initialement connectedUsers était un Set<User>, qui utilise la méthode hashCode(), et j'ai eu le même problème (c'est la méthode hashCode du Proxy qui est appelé, et non celle de l'objet sur le serveur)...

    Comment je dois faire pour utiliser des objets qui font des allés retour via rmi entre le client et le serveur ?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Pourquoi ne pas coder "hashCode" et "equals" dans User plutôt que UserImpl ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Equaliz 0.2 : Des methodes equals et hashcode orienté métier
    Par benjamalin dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 16/08/2010, 14h49
  2. Redéfinir equals et hashcode
    Par maxired dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2009, 18h53
  3. Réponses: 0
    Dernier message: 26/11/2007, 15h47
  4. Modifier le template de equals et hashCode
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/04/2007, 15h26
  5. [Optim Code]equals and hashCode are not paired
    Par anitshka dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 15/09/2006, 23h25

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