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 25 (anteprima) 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 per il deployment includono il comando
gcloud app deployo il plug-in Gradle di App Engine.Includi le impostazioni
runtime_configeoperating_systemnel fileapp.yamlper specificare un sistema operativo.Se vuoi, puoi specificare una versione del runtime includendo l'impostazione
runtime_versionnel fileapp.yaml. Per impostazione predefinita, viene utilizzata l'ultima versione di Java se l'impostazioneruntime_versionnon è specificata.Esempi
Per specificare Java 25 (anteprima) su Ubuntu 24:
runtime: java env: flex runtime_config: operating_system: "ubuntu24" runtime_version: "25"Per specificare l'ultima versione di Java supportata su Ubuntu 24:
runtime: java env: flex runtime_config: operating_system: "ubuntu24"
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: jetty9Specifica della versione 8 di Java:
runtime_config: jdk: openjdk8app.yamlcampione 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
il tempo di 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 impostare anche 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 pom.xml di Maven 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
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 della tua 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