Il runtime Java è lo stack software responsabile dell'installazione del codice e delle dipendenze dell'applicazione e della sua esecuzione nell'ambiente flessibile.
Versioni di Java
Java 21 utilizza buildpack. I buildpack ti aiutano a creare e configurare container che puoi eseguire il deployment su Google Cloud.
Per l'elenco completo delle versioni di Java supportate e della versione di Ubuntu corrispondente, consulta la pianificazione del supporto del runtime.
Per utilizzare una versione di Java supportata, devi:
Installa gcloud CLI versione 420.0.0 o successive. Puoi aggiornare gli strumenti CLI eseguendo il comando
gcloud components update
. Per visualizzare la versione installata, puoi eseguire il comandogcloud version
.Per eseguire il deployment utilizzando Maven, devi aggiungere il plug-in Maven per App Engine al tuo
pom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.8.1</version> </plugin>
Altre opzioni di deployment includono il comando
gcloud app deploy
o il plug-in Gradle di App Engine.Includi le impostazioni
runtime_config
eoperating_system
nel fileapp.yaml
per specificare un sistema operativo.Se vuoi, puoi specificare una versione del runtime includendo l'impostazione
runtime_version
nel fileapp.yaml
. Per impostazione predefinita, viene utilizzata l'ultima versione di Java se l'impostazioneruntime_version
non è specificata.Esempi
Per specificare Java 21 su Ubuntu 22:
runtime: java env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "21"
Per specificare l'ultima versione di Java supportata su Ubuntu 22:
runtime: java env: flex runtime_config: operating_system: "ubuntu22"
Versioni precedenti dell'ambiente di runtime
Per Java 8, specifica le impostazioni runtime_config
e jdk
nel file
app.yaml
.
Java 8 supporta:
Il runtime Eclipse Jetty 9 ed esegue Jetty 9 utilizzando Servlet 3.1.
Il codice del tuo server che rimane in ascolto sulla porta 8080 come parte della tua applicazione. Questa funzionalità ti consente di utilizzare framework di microservizi come SparkJava e Spring-Boot.
Esempi
Specifica della versione 9 di Jetty (predefinita / facoltativa):
runtime_config: jdk: openjdk8 server: jetty9
Specifica della versione 8 di Java:
runtime_config: jdk: openjdk8
Esempio
app.yaml
per Java 8:
Consulta pom.xml
per configurare Maven e build.gradle
per configurare Gradle.
File opzionali
Questi file di configurazione sono facoltativi:
Posiziona questi file al primo livello di MyDir. Se utilizzi uno di questi file, devi
eseguirne il deployment separatamente con il comando gcloud app deploy
.
web.xml
è facoltativo e necessario solo se non utilizzi le annotazioni Servlet 3.x.
Puoi inserire contenuti web statici, nonché le pagine JavaServer, nella directory
webapp/
.
Jetty 9, che l'ambiente flessibile App Engine utilizza come contenitore Servlet, utilizza
Apache Jasper come implementazione JSP predefinita e include le librerie di tag JSTL.
Il file Dockerfile è facoltativo e viene utilizzato per personalizzare il runtime Java.
Abilitazione della compressione gzip
Il gestore gzip
è incluso in Jetty, ma non è attivato per impostazione predefinita. Per
attivare questo modulo, imposta la variabile di ambiente JETTY_MODULES_ENABLE=gzip
nel file app.yaml
:
env_variables:
JETTY_MODULES_ENABLE: 'gzip'
Utilizzo di Avvio rapido
Jetty
può velocizzare
l'avvio dell'applicazione eseguendo la pre-scansione dei contenuti e generando
i file di configurazione.
Se utilizzi un'immagine estesa, puoi attivare l'avvio rapido eseguendo /scripts/jetty/quickstart.sh
nel Dockerfile, dopo aver aggiunto il file WAR dell'applicazione.
Variabili di ambiente
Puoi impostare le seguenti variabili di ambiente facoltative specifiche per l'ambiente di runtime Java 8/Jetty 9. Puoi anche impostare le variabili di ambiente OpenJDK 8.
Per impostare le variabili di ambiente, utilizza la chiave env_variables
nel file app.yaml
.
Env Var | Maven Prop | Valore/Commento |
---|---|---|
JETTY_PROPERTIES |
Elenco separato da virgole di coppie name=value aggiunte a $JETTY_ARGS |
|
JETTY_MODULES_ENABLE |
Elenco separato da virgole di moduli da attivare aggiungendoli a $JETTY_ARGS |
|
JETTY_MODULES_DISABLE |
Elenco separato da virgole dei moduli da disattivare rimuovendoli da $JETTY_BASE/start.d |
|
JETTY_ARGS |
Argomenti passati a start.jar di Jetty. Qui devono essere passati tutti gli argomenti utilizzati per la configurazione jetty personalizzata. |
|
JAVA_OPTS |
Argomenti di runtime JVM |
Cloud Logging avanzato (beta)
Quando viene eseguito nell'ambiente flessibile App Engine, puoi configurare Java Util
Logging per inviare i log a Cloud Logging impostando la variabile di ambiente
JETTY_ARGS
. Ad esempio:
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
Devi fornire un file logging.properties che configuri un LoggingHandler nel seguente modo:
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
Supporto di altri runtime Java
Se devi utilizzare una versione di Java non supportata, puoi creare un runtime personalizzato e selezionare un'immagine di base valida con la versione di Java che ti serve.
Per le immagini di base fornite da Google o le immagini di base Docker Java, consulta Creazione di runtime personalizzati.
Organizzare i file
L'albero delle origini dovrebbe avere il seguente aspetto:
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]
Test locale
Quando esegui i test nel tuo ambiente locale, puoi utilizzare servizi Google Cloudemulati anziché servizi Google Cloud remoti. Puoi utilizzare i seguenti emulatori:
Utilizza il comando gcloud
per avviarli prima di eseguire l'app:
gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start
Maven
Aggiungi queste righe al file maven pom.xml
per aggiungere il
plug-in Maven Jetty 9:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.2.v20170220</version>
</plugin>
Per eseguire l'app in locale, utilizza il comando Maven:
mvn jetty:run-exploded
Gradle
Segui le istruzioni riportate in
Creazione di un nuovo progetto Gradle
per aggiungere il
plug-in Gretty Gradle
al tuo build.gradle
e utilizza il comando:
gradle jettyRun
esegui il deployment dell'app
Per inizializzare Google Cloud CLI, esegui:
gcloud init
Dopo aver completato le configurazioni, puoi utilizzare Google Cloud CLI per eseguire il deployment
di questa directory contenente i file app.yaml
e WAR utilizzando:
gcloud app deploy app.yaml
Se utilizzi uno dei file di configurazione facoltativi (index.yaml
,
cron.yaml
e dispatch.yaml
), eseguine il deployment separatamente con il comando gcloud
. Ad esempio:
gcloud app deploy cron.yaml
Maven
Utilizza Maven per eseguire il deployment dell'app:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud . Se il
tuo file pom.xml
specifica già
l'ID progetto, non devi includere la proprietà -Dapp.deploy.projectId
nel
comando che esegui.
Gradle
Utilizza Gradle per eseguire il deployment della tua app:
gradle appengineDeploy