TP Web Service
S. Salva
Heroku, services Web
Jersey
|
1. Outils
Installer le toolset Heroku (fait normalement), sous linux: wget -qO-
https://toolbelt.heroku.com/install-ubuntu.sh | sh
Maven et Git (fait normalement)
un compte gratuit Heroku !!!!
Je vous donne une archive d'un petit exemple complet avec utilisation de
BD ici
2. Création d'un SW et déploiement sur Heroku
La doc: le cours, doc
java
Heroku, doc
Jersey
A
Préparez un projet avec Maven
mvn archetype:generate -DarchetypeArtifactId=jersey-heroku-webapp \
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
-DgroupId=**a changer** -DartifactId=**a changer** -Dpackage=**a changer** \
-DarchetypeVersion=2.32
Vous trouverez le code source dans src/main/java
et les tests dans src/test/java
De base, vous trouverez une classe Myressource
contenant un service et un test pour ce service
B
Créez un service Web simple qui prend un parametre
via URL et qui retourne un affiche HTML
C
Modifiez votre test pour qu'il soit adapté à votre service (sinon le package
ne se fera pas)
En gros, vos tests se font comme suit:
final String responseMsg =
target().path("wsrest/appel").request().get(String.class);
assertEquals("Hello, Heroku!", responseMsg);
target() donne un objet Webtarget qui peut être appelé avec une méthode HTTP
Un Webtarget possède aussi une méthode queryParam(String
name, Object... values)
voir ici: doc
jersey, doc
classe
JerseyTest, doc
WebTarget
3.
Vérification en local
Créez un package de votre application.
Testez votre application en local avec Jetty (serveur Web légé pour
applications Web servlet, WS, etc.) en faisant:
- mvn clean package jetty:run
- ou java -jar jetty-runner.jar application.war
Appelez votre service via un navigateur http://localhost:8080/
4.
Déploiement sur Heroku
A
Les
étapes sont les suivantes (voir doc)
- création d'un repo git local sur projet (git init)
- création d'une appli sur Heroku (heroku create -> demande
login/mdp)
- création package git local (git add et git commit)
- envoi du dépot sur Heroku (git push: git push heroku master ->
envoi et compilation sur heroku)
- à la fin du push, Vous trouverez un lien
https://**nom appli**.herokuapp.com/
Déployez votre application et appelez la sur Héroku.
B
Vérifiez que vous avez un dyno fonctionnel (et un seul) avec les commandes heroku
ps et heroku ps:scale web=1
Vérifiez ce qui a été fait en regardant vos logs (si vous
avez des erreurs aussi !) avec heroku
logs --tail
C
Regardez votre interface Web d'administration (retrouvez l'appli et
ses statistiques, vous etes toujours en mode gratuit ?)
5.
Utilisation d'une base de donnée
Documentation
A
Vérifiez que PostgreSQL est installé en tant que module (il est gratuit,
attention les autres souvent non)
Vous pouvez trouver des détails sur votre Bd dans votre console d'admin
(contenu, suppresion) et avec la commande heroku
pg
B
Reprenez le code donné en exemple dans la documentation ci dessus.
Créez une méthode de service qui ajoute des éléments dans une table (ticks
en exemple)
Puis créez une seconde méthode pour lister le contenu de la table.
Pour que votre code soit déployable, il faut suivre ces étapes:
- ajouter les imports dans le code
- modifier pom.xml section dependencies et ajouter la dépendance liée à
Postgresql
<dependency>
<groupId>org.postgresql/groupId>
<artifactId>postgresql</artifactId>
<version>42.2.8 ** A VERIFIER**</version>
</dependency>
- ajouter les dépendances: mvn clean install
Pour déployer, il faut aussi refaire:
- git add puis git commit (ou git -a commit, c'est pareil)
- git push
C
Pour vérifier le contenu de votre base distante, vous pouvez utiliser votre
console d'administration ou faire la commande heroku
pg:psql (\q pour quitter)