Ajouter un commentaire

footballwoman

Bonjour, voici qq compléments d'infos :

Quote:
D'abord, de quel axis parlons nous ? org.apache.axis ?

oui, oui

Quote:
Si le résultat de l'appel au Web Service doit apparaître dans l'interface utilisateur, faut bien qu'il y ait interaction. Et il faut que celle-ci soit bien codée.
Tu dis que le Web Service devient lent. Mais es tu sûre d'abord. Est-ce bien qu'il est lent ou que les résultats tardent à être affiché dans l'interface ? C'est que ce n'est pas la même chose.

non, non, c'est bien l'appel au web service qui est lent, pas de probleme pour l'affichage des résultats

Quote:
Cela dit, je trouve bizarre la présence de invoke ici. Passer par la réfléxion de Java pour appeler un Web Service... Est-ce bien certain que c'est le moyen le plus simple et le plus rationnel ?
Du coup voir un peu de code en amont de cet appel pourrait bien être intéressant aussi. Et il faudrait que tu détailles ce que tu appelles "interaction".

Voici un bout de code plus complet qui je l'espere nous aidera :

voila en quoi consiste l'utilisation du service web :

public TransitionGraph callWS(){
		CADP_WSService service = new CADP_WSServiceLocator(); //localisation du service web
		CADP_WS port;	
		try {
			port = service.getCADP_WS(); //connexion au service web
			String AUTFile= port.step1(); //premiere etape
			port.initializeAUTFile(AUTFile, numberOfTransitions, numberOfStates);//deuxieme etape
			GraphElement[] tab = new GraphElement[GraphElement.size()];
			for (int k=0;k<listGraphElement.size();k++){
				tab[k]=listGraphElement.get(k);
			}
			port.buildAUTFile(tab, AUTFile);//sending of the GraphElement table to the web service : construction of the .aut file on the server-side

			response=port.callCADP(AUTFile); //récuperation de la réponse du service web
			tabRetour = port.getGraph(AUTFile);//recuperation du graphe renvoyé par le service web
			//construit le graph partiel à retourner :
			ArrayList<QState> selectedStates = new ArrayList<QState>();
			for (int k=1;k<tabRetour.length;k++){			
				QState etatAAjouter = this.getState(tabRetour[k]);
				selectedStates.add(etatAAjouter);
			}
			PartialTransitionGraph partialGraph = new PartialTransitionGraph(this,selectedStates);
			graphRetour=partialGraph;
		} catch (IOException e) {
			e.printStackTrace();
		}
		catch (ServiceException e1) {
			e1.printStackTrace();  
		}
return graphRetour
}

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 !)

public void appelleWS{
worker = new ThreadWorker() { //nouveau thread
			public Object construct() {
					resultingGraph = transitionGraph.exportToCADP();//appel et execution du service web
				return "";//pour la methode construct
			}
			public void finished() {
				exportButton.setEnabled(true);
				abortButton.setEnabled(false);
				if ( txtStatus.getText().equals(RUNNING) ) {
					txtStatus.setText(FINISHED);
					setResultsPanel();
				}
			}
		};
		worker.start();

	}

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.

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...).

Ai-je tout dit ou manque-t-il des choses?
Merci !

[/]

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 W     W  ZZZZZ  FFFF   SSS   K  K 
W W Z F S K K
W W W Z FFF SSS KK
W W W Z F S K K
W W ZZZZZ F SSSS K K