Bonjour.
J'ai besoin sur mon site d'utiliser la fonction exec de java qui permet de lancer une commande extérieur (dans mon cas un programme C).
J'utilise cette fonction dans une servlet.
En testant je me suis rendu compte que je n'arrivais à lancer qu'un seul programme C à la fois (lancement séquentiel).
Voila ma méthodologie de test :
-prog C avec param à 1 : aucun sleep
-prog C avec param à 3 : sleep de 10 sec
2 pc pointant sur mon site avec la servlet d'essai.
1er pc lance le prog C avec param à 3 (résultat attendu 10 secondes plus tard)
2eme pc lance le prog C avec param à 1 juste après (1 seconde de délai en gros, résultat immédiat normalement)
Les exec sont bien lancé dans des threads séparés de la servlet mais ca ne marche toujours pas.
J'ai le résultat du 3 AVANT le résultat du 1.
Je pense avoir réussi cerner le problème : en fait l'utilisation d'exec a l'air de bloquer l'instance de ma servlet (pour etre exact c'est plutot l'utilisation de l'inputreader d'ailleurs, exec seul je n'ai pas de problème).
Si je lance ces programmes dans deux servlets différentes ca marche.
J'ai donc redéfini ma servlet d'essai avec SingleThreadModel.
Et la ca marche comme je le voudrais.
Mais d'après tout ce que j'ai lu l'utilisation de cette méthode est TRES déconseillée...
Est ce que quelqu'un aurait une piste pour résoudre mon problème ?
Merci d'avance
Partager