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:
  1. mvn clean package jetty:run
  2. 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)
  1. création d'un repo git local sur projet (git init)
  2. création d'une appli sur Heroku (heroku create -> demande login/mdp)
  3. création package git local (git add et git commit)
  4. envoi du dépot sur Heroku (git push: git push heroku master -> envoi et compilation sur heroku)
  5. à 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:
  1. ajouter les imports dans le code
  2. 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>

  1. ajouter les dépendances: mvn clean install

Pour déployer, il faut aussi refaire:
  1. git add puis git commit (ou git -a commit, c'est pareil)
  2. 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)