Quote:
Si on n'utilise pas l'interface graphique, cette fonction est appelée directement et prend 8s (pour envoyer et attendre la réponse pour un graphe de 2000 transitions).
si on utilise l'interface, elle est appelée via : (cela prend 81 s pour le mm graphe !)
Mais non, ça n'a pas de sens. le WS est ce qu'il est et quand tu l'appelles, il fait ce qu'il a à faire, toujours de manière identique.
AMHA le problème N'EST PAS dans le WS ! Mais, encore une fois, dans la manière de l'appeler ou de récupérer et afficher les résultats de son travail.
Le pb est, il me semble, dans le deuxième bout de code que tu donnes (et éventuellement dans des bouts semblables que tu ne montres pas). D'abord je voudrais savoir de quelle classe ThreadWorker il s'agit. Il y en a des floppées de ThreadWorker dans le monde de Java.
Le pb potentie se situe, je pense, dans ces apparemment imnocentes petites lignes.
Quote:
exportButton.setEnabled(true);
Si tu es dans un thread, tu ne peux normalement pas faire ça, c'est à dire APS appeler une méthode Swing qui change l'état d'un composant graphique. Swing ne fontionne correctement, (si jamais il fonctionne correctement.... mais c'est un autre débat :) ) QUE si ses méthodes sont invokées dans son propre thread, c'est à dire dans le thread principal de l'application. Sinon, dans un thread séparé, tu dois invoquer les méthodes telles que setEnabled par le biais de java.awt.EventQueue.invokeLater.
Ensuite une remarque. Tu as dis dans ton premier post que thread ou pas ça ne changeait rien. En apparence, car vu le me..... généré par Eclipse, je subodore (conforté en cela par la présence de invoke (qui n'a rien à voir avec invokeLoater)) que l'appel au WS est toujours dans un thread automatiquement lancé par la moulinette générée par Eclipse, donc tu as toujours le pb. Sauf bien sûr sans interface graphique du tout, pusique ce sont les appels aux méthodes de Swing qui créent le dysfonctionnement.
Quote:
Je voulais préciser que les classes CADP_WSService, CADP_WSServiceLocator et CADP_WS ont été générées par Eclipse lorsque j'ai demandé de générer un client, je les ai explorées (c'est compliqué d'ailleurs) et c'est elles qui font appel à _call.invoke.
Encore une atrocité comme seul le monde de Java sait en produire :( :cry:
Quote:
Si la génération du client par Eclipse n'est pas la bonne méthode à utiliser, je veux bien un peu d'aide pour appeler un web service, sans passer par cette création de classes compliquées d'Eclipse (serviceLocator...).
Si tu as ton Programmez! 74 sous la main, il y a un d'article d'initiation aux Web Service avec Java.
J'ai déjà rencontré le genre de problème que tu décris et qui est assez courant d'ailleurs :(
En principe je t'ai donné, sinon la solution, la bonne piste :)
Enfin je l'espère.
Mais non, ça n'a pas de sens. le WS est ce qu'il est et quand tu l'appelles, il fait ce qu'il a à faire, toujours de manière identique.
AMHA le problème N'EST PAS dans le WS ! Mais, encore une fois, dans la manière de l'appeler ou de récupérer et afficher les résultats de son travail.
Le pb est, il me semble, dans le deuxième bout de code que tu donnes (et éventuellement dans des bouts semblables que tu ne montres pas). D'abord je voudrais savoir de quelle classe ThreadWorker il s'agit. Il y en a des floppées de ThreadWorker dans le monde de Java.
Le pb potentie se situe, je pense, dans ces apparemment imnocentes petites lignes.
Si tu es dans un thread, tu ne peux normalement pas faire ça, c'est à dire APS appeler une méthode Swing qui change l'état d'un composant graphique. Swing ne fontionne correctement, (si jamais il fonctionne correctement.... mais c'est un autre débat :) ) QUE si ses méthodes sont invokées dans son propre thread, c'est à dire dans le thread principal de l'application. Sinon, dans un thread séparé, tu dois invoquer les méthodes telles que setEnabled par le biais de java.awt.EventQueue.invokeLater.
Ensuite une remarque. Tu as dis dans ton premier post que thread ou pas ça ne changeait rien. En apparence, car vu le me..... généré par Eclipse, je subodore (conforté en cela par la présence de invoke (qui n'a rien à voir avec invokeLoater)) que l'appel au WS est toujours dans un thread automatiquement lancé par la moulinette générée par Eclipse, donc tu as toujours le pb. Sauf bien sûr sans interface graphique du tout, pusique ce sont les appels aux méthodes de Swing qui créent le dysfonctionnement.
Encore une atrocité comme seul le monde de Java sait en produire :( :cry:
Si tu as ton Programmez! 74 sous la main, il y a un d'article d'initiation aux Web Service avec Java.
J'ai déjà rencontré le genre de problème que tu décris et qui est assez courant d'ailleurs :(
En principe je t'ai donné, sinon la solution, la bonne piste :)
Enfin je l'espère.