Environnement d'exécution Java 8/Jetty 9

L'environnement d'exécution Eclipse Jetty 9 utilise OpenJDK 8 et Jetty 9, et est compatible avec la spécification du servlet Java 3.1.

Conditions préalables

  • Téléchargez la dernière version du SDK Google Cloud, ou mettez à jour votre SDK Cloud avec la version actuelle à l'aide de la commande suivante :

    gcloud components update
    
  • Pour déployer à l'aide de Maven, vous devez ajouter le plug-in App Engine Maven à votre fichier pom.xml :

    <plugin>
       <groupId>com.google.cloud.tools</groupId>
       <artifactId>appengine-maven-plugin</artifactId>
       <version>2.0.0</version>
    </plugin>

    D'autres options de déploiement incluent l'utilisation de la commande gcloud app deploy ou du plug-in App Engine Gradle.

Organiser vos fichiers

Votre arborescence source devrait se présenter comme suit :

MyDir/
  [pom.xml]
  [build.gradle]
  [index.yaml]
  [cron.yaml]
  [dispatch.yaml]
  src/main/
    appengine/
      app.yaml
    docker/
      [Dockerfile]
    java/
      com.example.mycode/
        MyCode.java
    webapp/
      [index.html]
      [jsp.jsp]
      WEB-INF/
        [web.xml]

app.yaml

La présence d'un fichier app.yaml est obligatoire. Définissez un fichier qui ressemble aux lignes suivantes :

runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored

L'image gcr.io/google-appengine/jetty de l'environnement d'exécution est automatiquement sélectionnée lorsque vous déployez un fichier WAR (fichier *.war).

Si vous souhaitez utiliser cette image comme base d'un environnement d'exécution personnalisé, vous pouvez spécifier l'élément runtime: custom dans votre fichier app.yaml, puis écrire le fichier Dockerfile comme suit :

FROM gcr.io/google-appengine/jetty
ADD your-application.war $APP_DESTINATION

Ces lignes ajoutent le fichier WAR au bon endroit dans le conteneur Docker.

Les autres paramètres app.yaml sont décrits sur la page Configurer votre application à l'aide du fichier app.yaml.

Le fichier pom.xml sert à configurer Maven et le fichier build.gradle, à configurer Gradle.

Fichiers facultatifs

Les fichiers de configuration suivants sont facultatifs :

Placez ces fichiers au premier niveau de MyDir. Si vous utilisez l'un de ces fichiers, vous devez le déployer séparément à l'aide de la commande gcloud app deploy.

Le fichier web.xml est facultatif et nécessaire uniquement si vous n'utilisez pas les annotations de servlet 3.x.

Dans votre répertoire webapp/, vous pouvez placer du contenu Web statique, ainsi que vos pages JavaServer. Jetty 9, que l'environnement flexible App Engine utilise comme conteneur de servlet, utilise Apache Jasper comme mise en œuvre JSP par défaut et inclut les taglibs JSTL.

Le fichier Dockerfile est facultatif et permet de personnaliser l'environnement d'exécution Java.

Activer la compression gzip

Le gestionnaire gzip inclut Jetty, mais n'est pas activé par défaut. Pour activer ce module, définissez la variable d'environnement JETTY_MODULES_ENABLE=gzip dans le fichier app.yaml, comme suit :

env_variables:
  JETTY_MODULES_ENABLE: 'gzip'

Utiliser le démarrage rapide

Jetty peut accélérer le démarrage de votre application en analysant au préalable son contenu et en générant des fichiers de configuration. Si vous utilisez une image étendue, vous pouvez activer le démarrage rapide en exécutant /scripts/jetty/quickstart.sh dans votre fichier Dockerfile, une fois le fichier WAR de l'application ajouté.

FROM launcher.gcr.io/google/jetty
ADD your-application.war $JETTY_BASE/webapps/root.war

# generate quickstart-web.xml
RUN /scripts/jetty/quickstart.sh

Variables d'environnement

Vous pouvez définir les variables d'environnement facultatives suivantes, spécifiques à l'environnement d'exécution Java 8/Jetty 9. Vous pouvez également définir des variables d'environnement OpenJDK 8.

Pour définir les variables d'environnement, utilisez la clé env_variables dans le fichier app.yaml.

Variable d'environnement Proposition Maven Valeur/Commentaire
JETTY_PROPERTIES Liste de paires name=value ajoutées à $JETTY_ARGS, séparées par des virgules
JETTY_MODULES_ENABLE Liste de modules séparés par des virgules à activer en les ajoutant à $JETTY_ARGS
JETTY_MODULES_DISABLE Liste de modules séparés par des virgules à désactiver en les supprimant de $JETTY_BASE/start.d
JETTY_ARGS Arguments transmis au fichier Jetty start.jar. Tous les arguments utilisés pour la configuration personnalisée de Jetty doivent être transmis par cette variable.
JAVA_OPTS Arguments JVM d'environnement d'exécution

Stackdriver Logging avancé (bêta)

Lors de l'exécution sur l'environnement flexible App Engine, vous pouvez configurer Java Util Logging pour envoyer des journaux à Google Stackdriver Logging. Pour ce faire, définissez la variable d'environnement JETTY_ARGS. Exemple :

 env_variables:
   JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties

Vous devez fournir un fichier logging.properties qui configure un LoggingHandler comme suit :

handlers=com.google.cloud.logging.LoggingHandler

# Optional configuration
.level=INFO
com.google.cloud.logging.LoggingHandler.level=FINE
com.google.cloud.logging.LoggingHandler.log=gae_app.log
com.google.cloud.logging.LoggingHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%3$s: %5$s%6$s

Tester en local

Lorsque vous testez une application dans votre environnement local, vous pouvez utiliser les services cloud émulés de Google, plutôt que ses services cloud distants. Vous pouvez utiliser les émulateurs suivants :

Utilisez la commande gcloud pour les démarrer avant de lancer votre application :

gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start

Maven

Ajoutez les lignes suivantes à votre fichier pom.xml pour ajouter le plug-in Jetty 9 Maven :

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.4.2.v20170220</version>
</plugin>

Pour exécuter votre application en local, utilisez la commande Maven comme suit :

mvn jetty:run-exploded

Gradle

Suivez les instructions de la section Créer un projet Gradle pour ajouter le plug-in Gretty Gradle à votre fichier build.gradle, puis utilisez la commande suivante :

gradle jettyRun

Déployer votre application

Pour initialiser le SDK Google Cloud, exécutez la commande suivante :

gcloud init

Une fois les configurations terminées, vous pouvez utiliser le SDK Google Cloud pour déployer ce répertoire contenant les fichiers app.yaml et WAR à l'aide de la commande suivante :

gcloud app deploy app.yaml

Si vous utilisez l'un des fichiers de configuration facultatifs (index.yaml, cron.yaml et dispatch.yaml), veillez à les déployer séparément à l'aide de la commande gcloud. Exemple :

gcloud app deploy cron.yaml

Maven

Utilisez Maven pour déployer votre application, à l'aide de la commande suivante :

mvn appengine:deploy

Gradle

Utilisez Gradle pour déployer votre application, à l'aide de la commande suivante :

gradle appengineDeploy

Personnaliser l'environnement d'exécution Java 8/Jetty 9

Vous n'avez pas besoin d'avoir un fichier Dockerfile pour déployer votre application dans l'environnement d'exécution Java 8/Jetty 9. Si votre application nécessite une configuration supplémentaire, vous pouvez explicitement fournir un fichier Dockerfile pour personnaliser l'environnement d'exécution Java. Ce fichier doit inclure l'image de base gcr.io/google-appengine/jetty. Vous pouvez ajouter des instructions supplémentaires au fichier Dockerfile pour personnaliser l'environnement d’exécution Java. Pour en savoir plus, consultez la page Créer des environnements d'exécution personnalisés.

Votre fichier Dockerfile devrait commencer par les lignes suivantes :

FROM gcr.io/google-appengine/jetty
ADD your-application.war $APP_DESTINATION
# YOUR DOCKER COMMANDS

Dans ce cas, your-application.war est le nom du fichier WAR, créé dans votre répertoire target/ (maven) ou build/staged-app/ (gradle).

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

App Engine flexible environment for Java docs