L'environnement d'exécution Java est la pile logicielle chargée d'installer le code et les dépendances de votre application, puis d'exécuter cette application dans l'environnement flexible.
Les versions
11
et ultérieures sont créées à l'aide de packs de création, ce qui nécessite de choisir un système d'exploitation dans votre fichierapp.yaml
. Par exemple, pour utiliser Java 21, vous devez spécifier Ubuntu 22 comme système d'exploitation.L'environnement d'exécution Java 8/Jetty 9 fournit OpenJDK 8 et Eclipse Jetty 9, et est compatible avec la spécification du servlet Java 3.1. L'image Jetty hérite de l'image OpenJDK.
Pour obtenir la liste complète des versions de Java compatibles, ainsi que la version d'Ubuntu correspondante, consultez la page Programmation de la compatibilité avec l'environnement d'exécution.
Prérequis
Pour utiliser l'environnement d'exécution Java :
Vous devez installer gcloud CLI version 420.0.0 ou ultérieure. Vous pouvez mettre à jour les outils de la CLI en exécutant la commande
gcloud components update
. Pour afficher la version installée, vous pouvez exécuter la commandegcloud version
.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.7.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]
Choisir une version de Java
Nouvelles versions de l'environnement d'exécution
Pour l'environnement d'exécution Java version 11 et ultérieure, vous devez inclure les paramètres runtime_config
et operating_system
de votre app.yaml
pour spécifier un système d'exploitation.
Facultatif : vous pouvez spécifier une version d'exécution en incluant le paramètre runtime_version
dans votre fichier app.yaml
. Par défaut, la dernière version de Java est utilisée si le paramètre runtime_version
n'est pas spécifié.
Exemples
Pour spécifier Java 21 sur Ubuntu 22, procédez comme suit :
runtime: java env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "21"
Pour spécifier la dernière version compatible de Java sur Ubuntu 22, procédez comme suit :
runtime: java env: flex runtime_config: operating_system: "ubuntu22"
Versions précédentes de l'environnement d'exécution
Pour Java 8, spécifiez les paramètres runtime_config
et jdk
dans votre fichier app.yaml
.
Java 8 est compatible avec :
- L'environnement d'exécution Eclipse Jetty 9, exécuté à l'aide du servlet 3.1.
- Votre propre code de serveur qui écoute sur le port 8080 dans le cadre de votre application. Cette fonctionnalité vous permet d'utiliser des frameworks de microservices tels que SparkJava et Spring-Boot.
Exemples
Spécifier la version 9 de Jetty (par défaut/facultatif) :
runtime_config: jdk: openjdk8 server: jetty9
Spécifier la version 8 de Java :
runtime_config: jdk: openjdk8
Exemple de
app.yaml
pour Java 8 :
Consultez les sections pom.xml
pour configurer Maven et build.gradle
pour 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
.
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, qui est utilisé par l'environnement flexible App Engine 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é.
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
.
Var. env. | 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 |
Cloud Logging amélioré (version bêta)
Lors de l'exécution sur l'environnement flexible App Engine, vous pouvez configurer Java Util Logging pour envoyer des journaux à Cloud 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
Test 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
Maven pour inclure 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 exécutez la commande suivante :
gradle jettyRun
Déployer l'application
Pour initialiser Google Cloud CLI, exécutez la commande suivante :
gcloud init
Une fois les configurations terminées, vous pouvez utiliser Google Cloud CLI 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 package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. Si votre ID de projet est déjà inclus dans le fichier pom.xml
, vous n'avez pas besoin d'inclure la propriété -Dapp.deploy.projectId
dans la commande que vous exécutez.
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. 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.
Dans ce cas, your-application.war
est le nom du fichier WAR, créé dans votre répertoire target/
(maven) ou build/staged-app/
(gradle).