Nous avons vu dans la partie consacrée au Web service toute la complexité qu’il a fallu affronter et tout l’arsenal qu’il a fallu mettre en œuvre pour le déployer. Pour un service offrant 8 opérations, rien moins que 24 classes ont été générée automatiquement par le Stub Generator du Sun Wireless Toolkit pour implémenter l’interface coté client J2ME de ce web service. En contrepartie, le travail à effectuer « à la main » pour accéder à ce service est ridiculement simple. Prenons l’exemple du téléchargement des cours. Deux méthodes sont impliquées :
public void telechargeCours(String code, String date1, String date2)
throws RemoteException{
ATWS_Stub service = this.initialiseService();
String[] donnees = null;
donnees = service.getCours(code, date1, date2);
int nbreVal = donnees.length;
double[] cours = new double[nbreVal];
for(int i = 0; i < nbreVal; i++){
cours[i] = Double.parseDouble(donnees[i]);;
}
this.telechargement.setCours(cours);
}
protected ATWS_Stub initialiseService(){
String serviceURL = "http://localhost:8080/axis/services/atws";
ATWS_Stub service = new ATWS_Stub();
service._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, serviceURL);
service._setProperty(Stub.SESSION_MAINTAIN_PROPERTY, new Boolean(false));
return service;
}
Le lien avec le web service est en fait assuré via une instance du stub, de la classe ATWS_Stub que nous retourne la méthode initialiseService() . C’est dans cette méthode notamment qu’est précisé l’adresse (endpoint) du WS.
Il « suffit » ensuite d’appeler directement une des méthodes de ce stub, qui prolongent en fait coté client les méthodes identiques du WS. C’est ce que fait la méthodes telechargeCours() en appelant la méthodes getCours() du service, avant de la traiter aux fins d’affichage.
Le processus sera identique chaque fois qu’il sera nécessaire d’obtenir une information du WS.