O ambiente de execução do Java é a pilha de software responsável por instalar o código e as dependências do aplicativo e executá-lo no ambiente flexível.
Versões do Java
O Java 21 usa buildpacks, que ajudam você a criar e configurar contêineres que podem ser implantados em Google Cloud.
Para ver a lista completa de versões do Java com suporte e a versão correspondente do Ubuntu, consulte a Programação de suporte ao ambiente de execução.
Para usar uma versão compatível do Java, é preciso:
Instalar a versão da CLI gcloud 420.0.0 ou posterior do Google Analytics. É possível atualizar as ferramentas da CLI executando o comando
gcloud components update. Para conferir a versão instalada, execute o comandogcloud version.Para implantar usando o Maven, adicione o plug-in do Maven para App Engine ao seu
pom.xml:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.8.1</version> </plugin>Outras opções de implantação incluem o
gcloud app deploycomando ou o plug-in Gradle do Google App Engine.Incluir as configurações
runtime_configeoperating_systemno arquivoapp.yamlpara especificar um sistema operacional.Como alternativa, é possível especificar uma versão de ambiente de execução incluindo a configuração
runtime_versionemapp.yaml. Por padrão, a versão mais recente do Java será usada se a configuraçãoruntime_versionnão for especificada.Exemplos
Para especificar o Java 21 no Ubuntu 22:
runtime: java env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "21"Para especificar a versão mais recente compatível do Java no Ubuntu 22:
runtime: java env: flex runtime_config: operating_system: "ubuntu22"
Versões anteriores do ambiente de execução
Para Java 8, especifique as configurações runtime_config e jdk no
arquivo app.yaml.
O Java 8 é compatível com:
O ambiente de execução Eclipse Jetty 9 executa o Jetty 9 usando o Servlet 3.1.
o próprio código de servidor que detecta na porta 8080 como parte do aplicativo. Esse recurso permite usar frameworks de microsserviço, como SparkJava e Spring-Boot.
Exemplos
Como especificar o Jetty versão 9 (padrão/opcional):
runtime_config: jdk: openjdk8 server: jetty9Como especificar o Java versão 8:
runtime_config: jdk: openjdk8Exemplo de
app.yamlpara Java 8:
Consulte pom.xml
para configurar o Maven e build.gradle
para configurar o Gradle.
Arquivos opcionais
Estes arquivos de configuração são opcionais:
Coloque esses arquivos no nível superior do MyDir. Se você usar algum desses arquivos, precisará implantá-los separadamente com o comando gcloud app deploy.
web.xml
é opcional e necessário apenas se você não estiver usando anotações do Servlet 3.x.
Você pode colocar conteúdo da Web estático, bem como suas páginas JavaServer, no diretório webapp/.
O Jetty 9, que é usado pelo ambiente flexível do App Engine como contêiner do Servlet, usa o
Apache Jasper como implementação padrão do JSP e inclui taglibs JSTL.
O arquivo Dockerfile é opcional e é usado para personalizar o tempo de execução do Java.
Como habilitar a compactação Gzip
O gerenciador gzip é incluído no Jetty, mas não é ativado por padrão. Para ativar esse módulo, defina a variável de ambiente JETTY_MODULES_ENABLE=gzip no arquivo app.yaml:
env_variables:
JETTY_MODULES_ENABLE: 'gzip'
Como usar o guia de início rápido
Como o Jetty verifica seu conteúdo previamente e gera os arquivos de configuração, ele pode acelerar o tempo de inicialização do aplicativo.
Se você estiver usando uma imagem estendida, poderá ativar o início rápido executando /scripts/jetty/quickstart.sh no Dockerfile, depois que o WAR do aplicativo for adicionado.
Variáveis de ambiente
Você pode definir as seguintes variáveis de ambiente opcionais específicas para o Java 8 / Jetty 9 Runtime. Também é possível definir as variáveis de ambiente do OpenJDK 8.
Para definir variáveis de ambiente, use a tecla env_variables no arquivo app.yaml.
| Variável de ambiente | Objeto do Maven | Valor/Comentário |
|---|---|---|
JETTY_PROPERTIES |
Lista separada por vírgulas de pares name=value anexados a $JETTY_ARGS |
|
JETTY_MODULES_ENABLE |
Lista separada por vírgulas de módulos para ativar anexando a $JETTY_ARGS |
|
JETTY_MODULES_DISABLE |
Lista separada por vírgula de módulos a serem desativados por remoção de $JETTY_BASE/start.d |
|
JETTY_ARGS |
Argumentos passados para start.jar do Jetty. Qualquer argumento usado para a configuração personalizada do Jetty deve ser transmitido para essa variável. |
|
JAVA_OPTS |
Argumentos de tempo de execução do JVM. |
Cloud Logging aprimorado (Beta)
Ao executar no ambiente flexível do App Engine, é possível configurar o Java Util Logging para enviar registros ao Cloud Logging definindo a variável de ambiente JETTY_ARGS. Exemplo:
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
É preciso fornecer um arquivo logging.properties que configure um LoggingHandler da seguinte maneira:
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
Suporte para outros ambientes de execução Java
Se você precisa usar uma versão do Java que não é compatível, crie um ambiente de execução personalizado e selecione uma imagem de base válida com a versão do Java necessária.
Para imagens de base fornecidas pelo Google ou imagens de base do Docker Java, consulte Como criar ambientes de execução personalizados.
Organizar os arquivos
Sua árvore de código-fonte deve ter a seguinte aparência:
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]Teste local
Ao testar no seu ambiente local, você pode usar serviços Google Cloudemulados, em vez de serviços Google Cloud remotos. Use os seguintes emuladores:
Use o comando gcloud para iniciá-los antes de executar o aplicativo:
gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start
Maven
Adicione estas linhas ao arquivo pom.xml do Maven para adicionar o
plug-in do Maven para Jetty 9:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.2.v20170220</version>
</plugin>
Para executar seu app localmente, use o seguinte comando do Maven:
mvn jetty:run-exploded
Gradle
Siga as instruções em Como criar um novo projeto do Gradle para adicionar o
plug-in Gretty Gradle ao seu build.gradle e use o comando:
gradle jettyRun
implantar o aplicativo
Para inicializar a Google Cloud CLI, execute:
gcloud init
Depois de concluir as configurações, você pode usar a Google Cloud CLI para implantar esse diretório contendo os arquivos app.yaml e WAR usando:
gcloud app deploy app.yaml
Se você estiver usando qualquer um dos arquivos de configuração opcionais (index.yaml, cron.yaml e dispatch.yaml), implante-os separadamente com o comando gcloud. Por exemplo:
gcloud app deploy cron.yaml
Maven
Use o Maven para implantar o aplicativo:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do seu projeto Google Cloud . Se
o arquivo pom.xml já
especificar o
ID do projeto, não será necessário incluir a propriedade -Dapp.deploy.projectId no
comando executado.
Gradle
Use o Gradle para implantar seu app:
gradle appengineDeploy