[Java] Problème de synchronisation sur des servlets.

Problème de synchronisation sur des servlets. [Java] - Programmation

Marsh Posté le 25-05-2001 à 10:08:52    

Hello,
 
j'ai ecrit une servlet qui sert à se connecter sur un routeur, et qui sauvegarde sa config sur un serveur TFTP.
en paramètres (POST) je lui passe l'IP du routeur et le nom du fichier pour la sauvegarde comme suit
 
"http://15.129.22.198:8080/servlet/SaveServlet?ip=15.129.22.201&file=" + _file + "/r1-confg"
 
le problème est que j'appelle cette servlet 8 fois en parallèle, car j'ai 8 routeurs identiques et pour un gain de temps. Donc je passe en paramètre 8 IP différentes et 8 noms de fichiers différents.
 
ex :
 
IP 15.129.22.201 --> fichier r1-confg
   15.129.22.202 --> fichier r2-confg
   ...
   15.129.22.208 --> fichier r8-confg
 
Je suis confronté à un problème de "croisement" de données. En effet, par exemple, j'ai la config du routeur 2 sauvegardé dans le fichier r3-confg au lieu de r2-confg !
 
Que faudrait-il que je fasse ?
 
Sachant que ce sont des threads qui appellent la servlet, j'ai mis une fonction dans ma classe servlet qui est synchronized.
 
Merci de votre aide, c'est hyper urgent.


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Marsh Posté le 25-05-2001 à 10:08:52   

Reply

Marsh Posté le 25-05-2001 à 11:11:38    

Normalement, une instance de ton servlet est crée par sollicitation.
Peut être ton problême provient il d'un partage intempestif d'infos entre tes servlet, c'est à dire d'un 'static' malheureux?

Reply

Marsh Posté le 25-05-2001 à 11:16:43    

Il n'y a en effet des attributs statiques mais déclarés FINAL.
Ils ne sont pas du tout à l'origine des dysfonctionnements...
 
Que faire ? aaarrrrgggg


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Marsh Posté le 25-05-2001 à 11:24:57    

Tu pourrais peut être tracer tes appels à l'ecriture dans le fichier pour voir quel servlet ecrit dans quel fichier.

Reply

Marsh Posté le 25-05-2001 à 11:29:30    

C'est pas évident ca, car les fichiers écrits sont la copie des configurations des routeurs. je n'écris absolument rien d'autre dessus sinon au rechargement il y aurait des erreurs.


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Marsh Posté le 25-05-2001 à 11:38:41    

Si tu veux être sûr que ce n'est pas une erreur de traitement dans ton doPost, 'synchronize' le ...
 
public void doPost(...){
 
synchronized(lockObject){
//une trace ici
...
//une trace là
}
 
...
 
static Object lockObject = new Object();
 
}
 
Normalement du devrais avoir:
 
//une trace ici 1
...
//une trace là 1
 
...
 
//une trace ici 2
...
//une trace là 2
 
...
 
 
si tu as ça, c'est que ce n'est pas un problême du au multithreading.

Reply

Marsh Posté le 25-05-2001 à 12:23:41    

Ok je vais essayer ca.
 
Pour info je fais du doGet.


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Marsh Posté le 25-05-2001 à 15:20:45    

up!


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Marsh Posté le 28-05-2001 à 09:39:41    

up!
 
à l'aide :)


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Marsh Posté le 28-05-2001 à 10:40:49    

Je reformule ma question, faut il faire quelque chose de spécial avec l'objet HttpServletRequest pour éviter des problèmes de synchro ou des enlacements de données passées en parametre GET ?


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed