Bonjour à tous, voila je suis en train de programmer une application client/serveur à l'aide de java RMI.
Mon serveur (qui est donc remote) possède un tableau d'objets X.
Ces objets X sont sérialisables.
Mon client récupère donc l'objet remote (
Serveur Y = (Serveur) Naming.lookup("rmi://localhost:1099/Serveur");
)
Ensuite une méthode de mon client récupère chaque objet X du tableau de X qui est sur le serveur :
1 2 3 4
| for (int i = 0; i < serveur.getXs().length; i++) {
temp = serveur.getXs()[i];
draw(serveur, temp, g2, i);
} |
et modifie ces attributs dans la méthode draw.
Je constate que les modifications ne se font que localement, que le tableau de X du serveur n'est pas modifié.
Je pense alors à faire un "serveur.setX(temp);" à la fin de la méthode draw, afin de mettre à jour le serveur.
Mais ceci provoque un plantage de mon application (sans msg d'erreur).
Je pense en connaitre la cause : sur le serveur, et en parallèle le serveur modifie le tableau de X, et les Xs qu'il contient.
Donc lorsque je fais "serveur.setX(temp);" du coté client, c'est trop barbare et ça doit provoquer des conflits.
Mais comment résoudre ce problème ? j'ai bien tenter de mettre les getters et setters en synchronized, mais en vain.
En vous remerciant d'avance dans l'espoir d'une idée, car la je regarde le problème dans tous les sens mais je ne vois vraiment plus quoi faire.
Partager