III. L'exemple à suivre pour le projet Android▲
Le document [ref2] : Android pour les développeurs J2EE : un modèle asynchrone pour les clients web disponible à l'URL [http://tahe.developpez.com/android/avat] est le document de référence pour ce TP, en particulier l'exemple 2. Vous devez lire ce document jusqu'à l'exemple 2 qui décrit l'application suivante :
- l'application lance N [1] tâches asynchrones qui génèrent chacune un nombre aléatoire dans un intervalle [a,b] [2]. Avec une probabilité d'1/3, la tâche peut générer une exception.
- le bouton [4] lance une action unique qui va à son tour lancer les N tâches asynchrones ;
- afin de pouvoir annuler les N tâches lancées, on leur impose un délai d'attente avant de rendre leur réponse, exprimé en millisecondes [3]. Sur l'exemple, le délai de 5 secondes fait que les N tâches sont lancées et toutes attendent 5 secondes avant de faire le travail qui leur est demandé ;
- en [5] remontent les informations produites par les tâches, nombre ou exception ;
- la ligne [6] récapitule ce qui a été reçu. Il faut vérifier qu'on a bien reçu les N réponses des N tâches asynchrones et accessoirement on pourra vérifier la somme des nombres reçus.
Dès que les N tâches ont été lancées, un bouton [Annuler] [6] remplace le bouton [Exécuter]. Il permet d'annuler les tâches lancées :
Cette application a l'architecture client / serveur suivante :
C'est le serveur qui génère les nombres aléatoires affichés par la tablette Android :
La couche [métier] a une méthode de génération de nombres aléatoires exposée au monde web via un service REST.
Pour tester cette application, on importera sous Eclipse les projets Maven des dossiers [android-avat] et [android-avat-exemple2] des exemples de [ref2] :
Note : ceux qui veulent installer une version d'Eclipse pour Android trouveront dans les annexes de [ref2] la façon de le faire.
En [1] : les projets à importer :
- [android-avat] : le projet de base pour le client Android ;
- [android-dao] : la couche [DAO] du client Android ;
- [android-metier] : la couche [métier] du client Android ;
- [server-metier] : la couche [métier] du serveur ;
- [server-rest] : le service REST du serveur ;
En [2], on exécute le projet web [server-rest] sur le serveur Tomcat [3] :
On peut tester le service REST en tapant dans un navigateur l'URL suivante :
Deux fois sur 3 en moyenne on aura un nombre aléatoire entre 100 et 200 et une fois sur trois en moyenne on aura une exception :
Ensuite on crée une configuration d'exécution pour le projet Android [android-ui2] :
- en [1], sélectionnez l'icône [Run as...] ;
- en [2], sélectionnez l'option [Run Configurations...] ;
- en [3], sélectionnez le type [Android Application] puis l'icône [New launch configuration] ;
- en [4], indiquez le projet qui sera exécuté par cette configuration ;
- en [5], donnez un nom à cette configuration. Peut être quelconque ;
- dans l'onglet [Target] [6], sélectionnez l'option [7]. Elle permet de choisir le mode d'exécution : en mode émulation avec une tablette logicielle ou en mode réel avec une tablette Android ;
- en [8], validez cette configuration ;
- en [9], exécutez-la ;
- en [8], sélectionnez l'émulateur de tablette et en [9] exécutez l'application ;
L'émulateur logiciel est alors lancé et affiche la vue suivante :
Pour mettre la bonne URL en [0], on peut procéder ainsi :
- taper la commande [ipconfig] dans une fenêtre [DOS] :
- prendre l'adresse IP [2] de la carte Wifi [1] ;
- déployer le serveur REST sous Eclipse et demander l'URL du service REST avec un navigateur. Utiliser l'adresse IP précédente ;
- l'URL du service REST à taper sur la tablette est alors [192.168.0.14:8080/server-rest]. Il faudra peut-être désactiver le pare-feu du PC voire inhiber un éventuel logiciel antivirus qui pourrait bloquer les connexions entrantes. C'est par exemple le cas de Mcafee.
Branchez maintenant une tablette Android sur un port USB du PC serveur et exécutez l'application sur celle-ci :
- en [1] et [2], sélectionnez la tablette Android ;
Cet exemple sera le modèle à suivre pour le TP à suivre. Etudiez-le et reproduisez-le.