Bonjour,
J'ai une application utilisant RMI ; donc cot� serveur une logique m�tier, et client client de simples appels.
Voici mon code :
Serveur :
SecurityServiceImpl �tend UnicastRemoteObject
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); } }
SecurityService impl�mente Remote
User impl�mente Remote
UserImpl �tend UnicastRemoteObject
Voici le code client :
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.
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);
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
Partager