

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar a plataforma Java SE do Elastic Beanstalk
<a name="java-se-platform"></a>

Este tópico descreve como configurar, criar e executar seus aplicativos Java que são executados na plataforma AWS Elastic Beanstalk Java SE.

A plataforma Java SE do Elastic Beanstalk é um conjunto de [versões de plataforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase) para aplicações Web Java que podem ser executadas por conta própria a partir de um arquivo JAR compilado. Você pode compilar seu aplicativo localmente ou fazer o upload do código-fonte com um script de compilação para compilá-lo na instância. As versões da plataforma Java SE são agrupadas em ramificações de plataforma, cada uma das quais corresponde a uma versão principal do Java.

**nota**  
O Elastic Beanstalk não analisa o arquivo JAR da sua aplicação. Mantenha os arquivos de que o Elastic Beanstalk precisa fora do arquivo JAR. Por exemplo, inclua o arquivo `cron.yaml` de um [ambiente de trabalho](using-features-managing-env-tiers.md) na raiz do pacote de origem do seu aplicativo, ao lado do arquivo JAR.

As opções de configuração estão disponíveis no console do Elastic Beanstalk para [modificar a configuração de um ambiente em execução](environment-configuration-methods-after.md). Para evitar a perda da configuração do ambiente quando você terminá-la, você pode usar [configurações salvas](environment-configuration-savedconfig.md) para salvar as configurações e depois aplicá-las a outro ambiente.

Para salvar as configurações no código-fonte, você pode incluir [arquivos de configuração](ebextensions.md). As definições em arquivos de configuração são aplicadas sempre que você cria um ambiente ou implementa a aplicação. Você também pode usar arquivos de configuração para instalar pacotes, executar scripts e realizar outras operações de personalização da instância em implantações.

A plataforma Java SE do Elastic Beanstalk inclui um servidor [nginx](https://www.nginx.com/) que atua como um proxy reverso, suprindo conteúdo estático em cache e enviando solicitações à aplicação. A plataforma também oferece opções de configuração para definir o servidor de proxy para suprir os ativos estáticos de uma pasta em seu código-fonte para reduzir a carga em seu aplicativo. Em cenários avançados, você pode [incluir seus próprios arquivos .conf](java-se-nginx.md) em seu pacote de origem para estender a configuração de proxy do Elastic Beanstalk; ou substituí-la completamente. 

Se você fornecer somente um único arquivo JAR para a origem da aplicação (por conta própria, não dentro de um pacote de origem), o Elastic Beanstalk altera o nome do arquivo JAR para `application.jar` e o executa usando `java -jar application.jar`. Para configurar os processos que são executados em instâncias do servidor em seu ambiente, inclua um [Procfile](java-se-procfile.md) opcional em seu pacote de origem. Um `Procfile` será necessário se você tiver mais de um JAR na raiz do pacote de origem, ou se desejar personalizar o comando Java para definir opções de JVM.

Recomendamos sempre fornecer um `Procfile` no pacote de origem juntamente com o aplicativo. Dessa forma, você controla com precisão quais processos são executados pelo Elastic Beanstalk para o aplicativo e quais argumentos são recebidos por esses processos.

Para compilar classes Java e executar outros comandos de compilação nas EC2 instâncias do seu ambiente no momento da implantação, inclua um [Buildfile](java-se-buildfile.md) no pacote de origem do aplicativo. A `Buildfile` permite que você implante seu código-fonte no estado em que se encontra e construa no servidor em vez de compilar localmente JARs . A plataforma Java SE inclui ferramentas de build comuns para permitir que você crie no servidor.

Para obter detalhes sobre as várias maneiras de estender uma plataforma do Elastic Beanstalk baseada em Linux, consulte [Estender as plataformas Linux do Elastic Beanstalk](platforms-linux-extend.md).

## Configurar o ambiente Java SE
<a name="java-se-options"></a>

As configurações da plataforma Java SE permitem que você ajuste o comportamento de suas instâncias da Amazon EC2 . Você pode editar a configuração da instância Amazon do ambiente do Elastic Beanstalk usando o console EC2 do Elastic Beanstalk.

Você pode usar o console do Elastic Beanstalk para habilitar a alternância de logs para o Amazon S3 e configurar variáveis que sua aplicação pode ler no ambiente.

**Como configurar seu ambiente Java SE no console do Elastic Beanstalk**

1. Abra o console do [Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk e, **na** lista Regiões, selecione sua. Região da AWS

1. No painel de navegação, selecione **Ambientes** e selecione o nome do ambiente na lista.

1. No painel de navegação, escolha **Configuration (Configuração)**.

1. Na categoria de configuração **Updates, monitoring, and logging (Atualizações, monitoramento e logs)**, escolha **Edit (Editar)**.

### Opções de log
<a name="java-se-options-logs"></a>

A seção Log Options tem duas configurações:
+ **Instance profile (Perfil da instância)**: especifica o perfil da instância que tem permissão para acessar o bucket do Amazon S3 associado à sua aplicação.
+ **Habilitar a rotação de arquivos de log para o Amazon S3** — Especifica se os arquivos de log das EC2 instâncias da Amazon do seu aplicativo são copiados para o bucket do Amazon S3 associado ao seu aplicativo.

### Arquivos estáticos
<a name="java-se-options-staticfiles"></a>

Para melhorar a performance, você pode usar a seção **Static files** (Arquivos estáticos) para configurar o servidor proxy para servir arquivos estáticos (por exemplo, HTML ou imagens) de um conjunto de diretórios dentro da aplicação Web. Defina, para cada diretório, o caminho virtual para mapeamento de diretórios. Quando o servidor de proxy recebe uma solicitação para um arquivo no caminho especificado, ele atende o arquivo diretamente em vez de rotear solicitação para seu aplicativo.

Para ver detalhes sobre como configurar arquivos estáticos usando arquivos de configuração ou o console do Elastic Beanstalk, consulte [Fornecer arquivos estáticos](environment-cfg-staticfiles.md).

### Propriedades de ambiente
<a name="java-se-options-properties"></a>

A seção **Propriedades do ambiente** permite que você especifique as configurações do ambiente nas EC2 instâncias da Amazon que estão executando seu aplicativo. As propriedades de ambiente são passadas para o aplicativo como pares de chave-valor.

No ambiente Java SE executado no Elastic Beanstalk, as variáveis de ambiente podem ser acessadas usando `System.getenv()`. Por exemplo, você pode ler uma propriedade denominada `API_ENDPOINT` em uma variável com o seguinte código:

```
String endpoint = System.getenv("API_ENDPOINT");
```

Consulte [Variáveis de ambiente e outras configurações de software](environments-cfg-softwaresettings.md) para obter mais informações.

## Namespace de configuração do Java SE
<a name="java-se-namespaces"></a>

Você pode usar um [arquivo de configuração](ebextensions.md) para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. Opções de configuração podem ser [específicas da plataforma](command-options-specific.md) ou aplicáveis a [todas as plataformas](command-options-general.md) no serviço Elastic Beanstalk como um todo. As opções de configuração são organizadas em *namespaces*.

A plataforma Java SE não define nenhum namespace específico da plataforma. É possível configurar o proxy para servir arquivos estáticos usando o namespace `aws:elasticbeanstalk:environment:proxy:staticfiles`. Para obter detalhes e um exemplo, consulte [Fornecer arquivos estáticos](environment-cfg-staticfiles.md).

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte [Opções de configuração](command-options.md) para obter mais informações.

## A plataforma Java SE da AMI do Amazon Linux (anterior ao Amazon Linux 2)
<a name="java-se.alami"></a>

Se o seu ambiente Java SE do Elastic Beanstalk usa uma versão da plataforma da AMI do Amazon Linux (anterior ao Amazon Linux 2), leia as informações adicionais nesta seção.

**Observações**  
As informações neste tópico se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.
 [Em 18 de julho de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **o Elastic Beanstalk definiu o status de todas as ramificações da plataforma baseadas no Amazon Linux AMI AL1 () como descontinuadas.** Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte [Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Namespaces de configuração Java SE — Amazon Linux AMI () AL1
<a name="java-se.alami.namespaces"></a>

Você pode usar um [arquivo de configuração](ebextensions.md) para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. Opções de configuração podem ser [específicas da plataforma](command-options-specific.md) ou aplicáveis a [todas as plataformas](command-options-general.md) no serviço Elastic Beanstalk como um todo. As opções de configuração são organizadas em *namespaces*.

A Plataforma Java SE oferece suporte a um namespace de configuração específico da Plataforma, além dos [namespaces compatíveis com todas as Plataformas](command-options-general.md). O namespace `aws:elasticbeanstalk:container:java:staticfiles` permite que você defina opções que mapeiam os caminhos em seu aplicativo Web para as pastas em seu pacote de origem do aplicativo que incluem o conteúdo estático.

Por exemplo, este trecho de [option\$1settings](ebextensions-optionsettings.md) define duas opções no namespace de arquivos estáticos. A primeira mapeia o caminho `/public` para uma pasta denominada `public`, e a segunda mapeia o caminho `/images` para uma pasta denominada `img`:

```
option_settings:
  aws:elasticbeanstalk:container:java:staticfiles:
    /html: statichtml
    /images: staticimages
```

As pastas que você mapeia usando esse namespace devem ser pastas reais na raiz do seu pacote de origem. Você não pode mapear um caminho para uma pasta em um arquivo JAR.

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte [Opções de configuração](command-options.md) para obter mais informações.

# Construindo JARs no servidor com um arquivo de construção
<a name="java-se-buildfile"></a>

Você pode criar os arquivos de classe e os JAR (s) do seu aplicativo nas EC2 instâncias do seu ambiente invocando um comando build de um `Buildfile` arquivo no seu pacote de origem.

Comandos no arquivo `Buildfile` são executados apenas uma vez e devem ser encerrados no momento da conclusão, enquanto os comandos no arquivo [Procfile](java-se-procfile.md) devem ser executados por toda a vida útil do aplicativo e serão reiniciados se forem encerrados. Para executar o JARs em seu aplicativo, use um`Procfile`.

Para obter detalhes sobre o posicionamento e a sintaxe de um `Buildfile`, consulte [Buildfile e Procfile](platforms-linux-extend.build-proc.md).

O exemplo acima de `Buildfile` executa o Apache Maven para criar um aplicativo web do código-fonte. Para ver um aplicativo de exemplo que usa esse recurso, consulte [Exemplos de aplicativos web Java](java-getstarted.md#java-getstarted-samples).

**Example Buildfile**  

```
build: mvn assembly:assembly -DdescriptorId=jar-with-dependencies
```

A plataforma Java SE inclui as seguintes ferramentas de build, que você pode invocar do script de build:
+ `javac`: compilador Java
+ `ant`: Apache Ant
+ `mvn`: Apache Maven
+ `gradle`: Gradle

# Configurar o processo do aplicativo com um Procfile
<a name="java-se-procfile"></a>

Se você tem mais de um arquivo JAR na raiz do seu pacote de origem da aplicação, deve incluir um arquivo `Procfile` que informa o Elastic Beanstalk quais JARs devem ser executados. Você também pode incluir um arquivo `Procfile` para um único aplicativo JAR para configurar a Java virtual machine (JVM – máquina virtual Java) que executa seu aplicativo.

Recomendamos sempre fornecer um `Procfile` no pacote de origem juntamente com o aplicativo. Dessa forma, você controla com precisão quais processos são executados pelo Elastic Beanstalk para o aplicativo e quais argumentos são recebidos por esses processos.

Para obter detalhes sobre como gravar e usar um `Procfile`, consulte [Buildfile e Procfile](platforms-linux-extend.build-proc.md).

**Example Procfile**  

```
web: java -Xms256m -jar server.jar 
cache: java -jar mycache.jar
web_foo: java -jar other.jar
```

O comando que executa o JAR principal em seu aplicativo deve ser denominado `web` e deve ser o primeiro comando listado no `Procfile`. O servidor nginx encaminha todas as solicitações HTTP que ele recebe do balanceador de carga do seu ambiente para essa aplicação.

O Elastic Beanstalk pressupõe que todas as entradas no Procfile devam ser sempre executadas e reinicia automaticamente qualquer aplicação encerrada definida no Procfile. Para executar comandos que serão encerrados e não deverão ser reiniciados, use um [`Buildfile`](java-se-buildfile.md).

## Usar um Procfile na AMI do Amazon Linux (anterior ao Amazon Linux 2)
<a name="java-se-procfile.alami"></a>

Se o seu ambiente Java SE do Elastic Beanstalk usa uma versão da plataforma da AMI do Amazon Linux (anterior ao Amazon Linux 2), leia as informações adicionais nesta seção.

**Observações**  
As informações neste tópico se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.
 [Em 18 de julho de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **o Elastic Beanstalk definiu o status de todas as ramificações da plataforma baseadas no Amazon Linux AMI AL1 () como descontinuadas.** Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte [Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Passagem de portas — Amazon Linux AMI (AL1)
<a name="java-se-procfile.alami.ports"></a>

Por padrão, o Elastic Beanstalk configura o proxy nginx para encaminhar solicitações à sua aplicação na porta 5000. Você pode substituir a porta padrão definindo a [propriedade do ambiente](java-se-platform.md#java-se-options) `PORT` para a porta de escuta do seu aplicativo principal.

Se você usar o `Procfile` para executar várias aplicações, as versões da plataforma da AMI do Amazon Linux do Elastic Beanstalk esperam que cada aplicação adicional escute em uma porta 100 maior que a anterior. O Elastic Beanstalk define a variável PORT acessível de cada aplicação como a porta na qual ele espera que a aplicação seja executada. Você pode acessar essa variável no código do seu aplicativo chamando `System.getenv("PORT")`.

No exemplo acima de `Procfile`, o aplicativo `web` escuta na porta 5.000, `cache` escuta na porta 5.100 e `web_foo` escuta na porta 5.200. `web` configura a porta de escuta lendo a variável `PORT` e acrescenta 100 a esse número para determinar em qual porta `cache` está escutando para que ele possa enviar solicitações a ela.

# Configurar o servidor de proxy
<a name="java-se-nginx"></a>

O Elastic Beanstalk usa o [nginx](https://www.nginx.com/) como proxy reverso para mapear sua aplicação para o balanceador de carga do Elastic Load Balancing na porta 80. O Elastic Beanstalk oferece uma configuração nginx padrão que você pode estender ou substituir completamente por sua própria configuração.

Por padrão, o Elastic Beanstalk configura o proxy nginx para encaminhar solicitações à sua aplicação na porta 5000. Você pode substituir a porta padrão definindo a [propriedade do ambiente](java-se-platform.md#java-se-options) `PORT` para a porta de escuta do seu aplicativo principal.

**nota**  
A porta que seu aplicativo escuta não afeta a porta na qual o servidor nginx escuta para receber solicitações do balanceador de carga.

**Configurar o servidor proxy na sua versão da plataforma**  
Todas as AL2 plataformas AL2 023/ suportam um recurso de configuração de proxy uniforme. Para obter mais informações sobre como configurar o servidor proxy nas versões da sua plataforma executando AL2 023/AL2, consulte. [Configuração de proxy reverso](platforms-linux-extend.proxy.md) 

## Configurar o proxy da AMI do Amazon Linux (anterior ao Amazon Linux 2)
<a name="java-se-nginx.alami"></a>

Se o seu ambiente Java SE do Elastic Beanstalk usa uma versão da plataforma da AMI do Amazon Linux (anterior ao Amazon Linux 2), leia as informações adicionais nesta seção.

**Observações**  
As informações neste tópico se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.
 [Em 18 de julho de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **o Elastic Beanstalk definiu o status de todas as ramificações da plataforma baseadas no Amazon Linux AMI AL1 () como descontinuadas.** Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte [Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Estendendo e substituindo a configuração padrão do proxy — Amazon Linux AMI () AL1
<a name="java-se-nginx.alami.extending"></a>

Para estender a configuração padrão do nginx do Elastic Beanstalk, adicione arquivos de configuração `.conf` a uma pasta denominada `.ebextensions/nginx/conf.d/` no pacote de origem da sua aplicação. A configuração nginx do Elastic Beanstalk inclui os arquivos `.conf` nessa pasta automaticamente.

```
~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- web.jar
```

Para substituir completamente a configuração nginx padrão do Elastic Beanstalk, inclua uma configuração em seu pacote de origem em `.ebextensions/nginx/nginx.conf`:

```
~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- nginx.conf
`-- web.jar
```

Se você substituir a configuração nginx do Elastic Beanstalk, adicione a linha a seguir ao arquivo `nginx.conf` para extrair as configurações do Elastic Beanstalk para [Relatórios e monitoramento de integridade aprimorados no Elastic Beanstalk](health-enhanced.md), mapeamentos automáticos de aplicações e arquivos estáticos.

```
 include conf.d/elasticbeanstalk/*.conf;
```

A configuração demonstrativa a seguir da [aplicação de exemplo Scorekeep](https://github.com/aws-samples/eb-java-scorekeep/) substitui a configuração padrão do Elastic Beanstalk para atender a uma aplicação Web estática do subdiretório `public` de `/var/app/current`, em que a plataforma Java SE copia o código-fonte da aplicação. O local `/api` encaminha o tráfego para rotas sob `/api/` para o aplicativo Spring que escuta na porta 5000. O restante do tráfego é atendido pelo aplicativo web no caminho raiz.

**Example**  

```
user                    nginx;
error_log               /var/log/nginx/error.log warn;
pid                     /var/run/nginx.pid;
worker_processes        auto;
worker_rlimit_nofile    33282;

events {
    worker_connections  1024;
}

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

  include       conf.d/*.conf;

  map $http_upgrade $connection_upgrade {
      default     "upgrade";
  }

  server {
      listen        80 default_server;
      root /var/app/current/public;

      location / {
      }git pull
      

      location /api {
          proxy_pass          http://127.0.0.1:5000;
          proxy_http_version  1.1;

          proxy_set_header    Connection          $connection_upgrade;
          proxy_set_header    Upgrade             $http_upgrade;
          proxy_set_header    Host                $host;
          proxy_set_header    X-Real-IP           $remote_addr;
          proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
      }

      access_log    /var/log/nginx/access.log main;

      client_header_timeout 60;
      client_body_timeout   60;
      keepalive_timeout     60;
      gzip                  off;
      gzip_comp_level       4;

      # Include the Elastic Beanstalk generated locations
      include conf.d/elasticbeanstalk/01_static.conf;
      include conf.d/elasticbeanstalk/healthd.conf;
  }
}
```