Google App Engine |
Le Google Cloud SDK (lib) est déjà téléchargé et disponible. Vous pouvez
l'utiliser en ligne de commande (gcloud...)
Téléchargez le SDK jersey ici
Ajouter le pluggin Google pour Eclipse via le Market place. Voir ici
Ajouter le serveur Jetty via
le Market place.
Authentifiez vous à GAE dans
Eclipse avec login:iut.info63@gmail.com, pass:info63000
J'ai crée 13 applications
info63appXX (0 à 12), voir dans la console.
Choisissez en une (non choisie par quelqu'un d'autre...)
A
Utilisez l'IDE Eclipse, je vous conseille d'utiliser un nouveau Workspace et de supprimer le répertoire.eclipse dans votre compte.
Créez
un projet Google Standard
Java project. Dans les options de la création de
projet, cochez l'utilisation de Maven et ajoutez la librairie
app engine.
Le choix de l'id de l'application pour le deploiement sur GAE, l peut se faire maintenant ou au moment du déploiement. L'id est: info63appXX
Notez qu'il y a une version par application qui peut être changée
Créez un service Web avec la librairie Jersey de type HelloWorld qui retour une simple chaine. (Il faut faire New Java/Class).
Modifez le pom.xml pour :
Ajouter les dépendances de Jersey:
<!-- Jersey 2.19 -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency><groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.19</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.19</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.19</version>
</dependency>
Ajouter
la dépendance de persistence :
<!-- persistence -->
<dependency>
<groupId>org.eclipse.persistence</groupId><artifactId>javax.persistence</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
Ajouter
la dépendance JaxB pour la sérialisation:
<!-- JAXB -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
C
Modifiez
manuellement le fichier web.xml pour prendre le
conteneur Jersey et modifier l'URL d'accès (voir
cours)
Testez
localement (click droit sur le projet, RunAs Jetty).
Notez pour chez vous que je n'ai pas réussi à faire
fonctionner le serveur Appengine avec Java 13. Mais
avec Java 8 (11?) le serveur devrait fonctionner.
Jetty n'est donc pas nécessaire dans ce cas.
Appelez directement votre ressource et non pas juste http://localhost:8080
D
Déployez
sur GAE et testez votre service via un navigateur.
Vous
pouvez affichier les logs en console. faites:
gcloud
config set project id_projet
gcloud app logs tail -s default
Si vous avez une erreur décrivant un pb d'authentification, allez sur une
console et faites gcloud auth application-default login
A
Faites un service Web qui permet
La solution qui semble la plus adéuate est d'utiliser la librairie Objectify.
Voir ici
Vérifiez bien votre code et deployez sur GAE pour tester. Vérifiez également que le datastore est modifié via la console d'admin de GAE (https://console.cloud.google.com/).
Pour les plus fous, optionnel: vous pouvez tenter de tester en local (un datastore local conecté avec objectify. voir la page d'installation)
B
Implémentez le même service en utilisant la librairie bas niveau du Datastore. (Reprenez le code qui se trouve dans le cours permettant le stockage et la recherche de données dans le Datastore par Entity).
Pour utiliser le Datastore, il nous faut une lib supplémentaire. Simplifions nous la vie (a voir) en créant un nouveau projet se basant sur Maven (gestionnaire de projet et de dépendances). Regardez bien à la création du projet :)Ajoutez google-cloud-datastore
et jersey-client (comme
dessous)
ou bien modifiez le pom.xml directement . Le numéro de version se trouve
ici : maven
datastore
Pensez à la gestion des erreurs.
Le SDK propose une Exception DatastoreException.
Testez votre service localement, (notez qu'il utilisera le vrai Datastore de GAE) en utilisant un navigateur. Vérifiez également que le datastore est modifié via la console d'admin de GAE (https://console.cloud.google.com/).
C
Déployez sur GAE et testez.Utilisons le blobstore pour stoker des images.
A
Créez un projet GAE, puis une JSP index.jsp contenant le formulaire d'upload. Ce formulaire doit rediriger vers un upload handler qui sera votre service Web (URL du type /rest/exo/upload).
B