Problème de synchronisation sur des servlets. [Java] - Programmation
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?
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
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.
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.
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.
Marsh Posté le 25-05-2001 à 12:23:41
Ok je vais essayer ca.
Pour info je fais du doGet.
Marsh Posté le 25-05-2001 à 15:20:45
up!
Marsh Posté le 28-05-2001 à 09:39:41
up!
à l'aide
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 ?
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..."