Bonjour à tous,
J'utilise dans mon programme Java un web service (pour lequel j'ai déjà posté plusieurs fois car il m'a bien pris la tête ...).
Ce web service me renvoi une réponse de manière asynchrone, c'est pourquoi j'ai défini un listener comme il faut (j'utilise axis2).
Dans mon programme, si je simplifie les choses, je réalise plusieurs appels à ce web service (une boucle).
Puis j'ai besoin de recevoir toutes les réponses avant de poursuivre mon exécution.
Le problème c'est qu'à la sortie de ma boucle, même si tous les appels ont été effectués, je n'ai pas encore reçu de réponse et pourtant mon programme se termine. C'est tout à fait logique puisque mon programme ne peux pas deviner seul que des réponses vont lui être envoyées !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static void main(String[] args){ while(maCondition) { // Appel au webservice } // Code à exécuter quand toutes les réponses ont été reçues }
J'ai imaginé plusieurs solutions, mais soit elles ne sont pas bonnes soit je ne sais pas comment les mettre en place :
- Faire une attente active => abandonné car trop gourmand ?
- Faire attendre le thread principal une durée suffisamment importante pour que toutes les réponses soient renvoyées => Inenvisageable !
- Utiliser des threads comme listeners et attendre que chaque thread soit terminé pour continuer l'exécution => Possible ?
J'ai l'impression qu'aucune des manières que j'envisage n'est la bonne, c'est pourquoi je vous sollicite !
Comment dois-je procéder ?
J'espère avoir été clair, mais n'hésitez pas à me demander des précisions si cela vous aiderait à résoudre mon problème !
Merci,
Cordialement
Borozhim
Partager