

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo della piattaforma Java SE di Elastic Beanstalk
<a name="java-se-platform"></a>

Questo argomento descrive come configurare, creare ed eseguire le applicazioni Java eseguite sulla piattaforma AWS Elastic Beanstalk Java SE.

La piattaforma Elastic Beanstalk Java SE è un [insieme di versioni della](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase) piattaforma per applicazioni Web Java che possono essere eseguite autonomamente da un file JAR compilato. Puoi compilare l'applicazione in locale o caricare il codice sorgente con uno script di compilazione per compilarlo nell'istanza. Le versioni della piattaforma Java SE sono raggruppate in rami della piattaforma, ognuno dei quali corrisponde a una versione principale di Java.

**Nota**  
Elastic Beanstalk non analizza il file JAR dell'applicazione. Mantieni i file necessari a Elastic Beanstalk all'esterno del file JAR. Ad esempio, è possibile includere il file `cron.yaml` di un [ambiente lavoratore](using-features-managing-env-tiers.md) nella radice del bundle di origine dell'applicazione, accanto al file JAR.

Sono disponibili opzioni di configurazione specifiche della piattaforma nella console Elastic Beanstalk per la [modifica della configurazione di un ambiente in esecuzione](environment-configuration-methods-after.md). Per conservare la configurazione dell'ambiente una volta terminata, puoi utilizzare [configurazioni salvate](environment-configuration-savedconfig.md) per salvare le impostazioni e applicarle successivamente a un altro ambiente.

Per salvare le impostazioni nel codice sorgente, puoi includere i [file di configurazione](ebextensions.md). Le impostazioni nei file di configurazione vengono applicate ogni volta che crei un ambiente o distribuisci l'applicazione. Puoi inoltre utilizzare i file di configurazione per installare pacchetti, eseguire script o altre operazioni di personalizzazione delle istanze durante le distribuzioni.

La piattaforma Java SE di Elastic Beanstalk include un server [nginx](https://www.nginx.com/) che funge da proxy inverso che fornisce i contenuti statici memorizzati nella cache e trasmette le richieste all'applicazione. La piattaforma offre opzioni di configurazione per configurare il server proxy per fornire asset statici da una cartella nel codice sorgente, in modo da ridurre il carico sull'applicazione. Per gli scenari avanzati, puoi [includere file .conf personalizzati](java-se-nginx.md) nel bundle di origine per estendere la configurazione proxy di Elastic Beanstalk o sovrascriverla completamente. 

Se fornisci solo un singolo file JAR per l'origine dell'applicazione (da solo, non all'interno di un bundle di origine), Elastic Beanstalk rinomina il tuo file JAR in `application.jar` e quindi lo esegue utilizzando `java -jar application.jar`. Per configurare i processi in esecuzione nelle istanze del server nell'ambiente, includi un oggetto [Procfile](java-se-procfile.md) opzionale nel bundle di origine. Un oggetto `Procfile` è obbligatorio se è presente più di un file JAR nella radice del bundle di origine o se desideri personalizzare il comando Java per l'impostazione delle opzioni JVM.

Si consiglia di fornire sempre un `Procfile` nel bundle di origine insieme all'applicazione. In questo modo si controlla con precisione quali processi vengono eseguiti da Elastic Beanstalk per l'applicazione e quali argomenti ricevono questi processi.

Per compilare le classi Java ed eseguire altri comandi di compilazione sulle EC2 istanze del tuo ambiente al momento della distribuzione, includi un [Buildfile](java-se-buildfile.md) nel bundle dei sorgenti dell'applicazione. A `Buildfile` consente di distribuire il codice sorgente così com'è e di compilarlo sul server anziché compilarlo localmente. JARs La piattaforma Java SE include strumenti di compilazione comuni per consentire la compilazione direttamente nel server.

Per informazioni dettagliate sui vari modi in cui è possibile estendere una piattaforma Elastic Beanstalk basata su Linux, consulta [Estensione delle piattaforme Elastic Beanstalk Linux](platforms-linux-extend.md).

## Configurazione dell'ambiente Java SE
<a name="java-se-options"></a>

Le impostazioni della piattaforma Java SE ti consentono di ottimizzare il comportamento delle tue istanze Amazon EC2 . Puoi modificare la configurazione dell'istanza Amazon dell'ambiente Elastic Beanstalk utilizzando EC2 la console Elastic Beanstalk.

Utilizza la console Elastic Beanstalk per attivare la rotazione dei log in Amazon S3 e configurare variabili che l'applicazione è in grado di leggere dall'ambiente.

**Per configurare l'ambiente Java SE nella console Elastic Beanstalk**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. Nella categoria di configurazione **Updates, monitoring, and logging** (Aggiornamenti, monitoraggio e registrazione), scegli **Edit** (Modifica).

### Opzioni di log
<a name="java-se-options-logs"></a>

La sezione Log Options (Opzioni di log) ha due impostazioni:
+ **Instance profile** (Profilo dell'istanza): specifica il profilo dell'istanza che dispone dell'autorizzazione ad accedere al bucket Amazon S3 associato all'applicazione.
+ **Abilita la rotazione dei file di registro su Amazon S3**: specifica se i file di log per le EC2 istanze Amazon dell'applicazione vengono copiati nel bucket Amazon S3 associato all'applicazione.

### File statici
<a name="java-se-options-staticfiles"></a>

Per migliorare le prestazioni, la sezione **Static files** (File statici) consente di configurare il server proxy affinché fornisca file statici (ad esempio, HTML o immagini) da un set di directory all'interno dell'applicazione Web. Per ogni directory, è possibile impostare il percorso virtuale per la mappatura delle directory. Quando il server proxy riceve una richiesta da un file nel percorso specificato, questo serve il file direttamente anziché instradare la richiesta all'applicazione.

Per informazioni dettagliate sulla configurazione di file statici utilizzando file di configurazione o la console Elastic Beanstalk, consulta [Fornire i file statici](environment-cfg-staticfiles.md).

### Proprietà dell'ambiente
<a name="java-se-options-properties"></a>

La sezione **Environment Properties** consente di specificare le impostazioni di configurazione dell'ambiente sulle EC2 istanze Amazon su cui è in esecuzione l'applicazione. Le proprietà di ambiente sono passate come coppie chiave-valore all'applicazione.

All'interno dell'ambiente Java SE in esecuzione in Elastic Beanstalk, le variabili di ambiente sono accessibili tramite `System.getenv()`. Ad esempio, è possibile leggere una proprietà denominata `API_ENDPOINT` su una variabile con il codice seguente:

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

Per ulteriori informazioni, consulta [Variabili di ambiente e altre impostazioni software](environments-cfg-softwaresettings.md).

## Spazio dei nomi per la configurazione di Java SE
<a name="java-se-namespaces"></a>

Puoi utilizzare un [file di configurazione](ebextensions.md) per impostare le opzioni di configurazione ed eseguire alte attività di configurazione delle istanze durante le distribuzioni. Le opzioni di configurazione possono essere [specifiche della piattaforma](command-options-specific.md) o essere applicate a [tutte le piattaforme](command-options-general.md) del servizio Elastic Beanstalk nel suo complesso. *Le opzioni di configurazione sono organizzate in namespace.*

La piattaforma Java SE non definisce spazi dei nomi specifici della piattaforma. È possibile configurare il proxy per servire file statici utilizzando lo spazio dei nomi `aws:elasticbeanstalk:environment:proxy:staticfiles`. Per informazioni dettagliate e un esempio, consulta [Fornire i file statici](environment-cfg-staticfiles.md).

In Elastic Beanstalk sono disponibili varie opzioni di configurazione per la personalizzazione dell'ambiente. Oltre ai file di configurazione, puoi impostare le opzioni di configurazione tramite la console, le configurazioni salvate, la CLI EB o AWS CLI. Per ulteriori informazioni, consulta [Opzioni di configurazione](command-options.md).

## La piattaforma Java SE di AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="java-se.alami"></a>

Se il tuo ambiente Java SE di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente Amazon Linux 2), leggi le informazioni aggiuntive presenti in questa sezione.

**Note**  
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2I rami della AL2 piattaforma 023/ non sono compatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e *richiedono impostazioni di configurazione diverse*.
 [Il 18 luglio 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI AL1 () come ritirato.** Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Namespace di configurazione Java SE — Amazon Linux AMI () AL1
<a name="java-se.alami.namespaces"></a>

È possibile utilizzare un [file di configurazione](ebextensions.md) per impostare le opzioni di configurazione ed eseguire alte attività di configurazione delle istanze durante le distribuzioni. Le opzioni di configurazione possono essere [specifiche della piattaforma](command-options-specific.md) o essere applicate a [tutte le piattaforme](command-options-general.md) del servizio Elastic Beanstalk nel suo complesso. *Le opzioni di configurazione sono organizzate in namespace.*

La piattaforma Java SE supporta uno spazio dei nomi di configurazione specifico della piattaforma, in aggiunta agli [spazi dei nomi supportati da tutte le piattaforme](command-options-general.md). Lo spazio dei nomi `aws:elasticbeanstalk:container:java:staticfiles` consente di definire le opzioni che mappano i percorsi nell'applicazione Web alle cartelle del bundle di origine dell'applicazione con contenuti statici.

Il frammento di codice [option\$1settings](ebextensions-optionsettings.md) definisce ad esempio due opzioni nello spazio dei nomi dei file statici. La prima mappa il percorso `/public` a una cartella denominata `public` e la seconda mappa il percorso `/images` a una cartella denominata `img`:

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

Le cartelle mappate usando questo spazio dei nomi devono essere cartelle reali nella radice del bundle di origine. Non è possibile mappare un percorso a una cartella in un file JAR.

In Elastic Beanstalk sono disponibili varie opzioni di configurazione per la personalizzazione dell'ambiente. Oltre ai file di configurazione, puoi impostare le opzioni di configurazione tramite la console, le configurazioni salvate, la CLI EB o AWS CLI. Per ulteriori informazioni, consulta [Opzioni di configurazione](command-options.md).

# Creazione JARs su server con un Buildfile
<a name="java-se-buildfile"></a>

Puoi creare i file di classe e i file JAR dell'applicazione sulle EC2 istanze del tuo ambiente richiamando un comando build da un `Buildfile` file nel tuo bundle sorgente.

I comandi in un file `Buildfile` vengono eseguiti solo una volta e devono terminare al completamento, mentre i comandi in un [Procfile](java-se-procfile.md) vengono eseguiti per l'intera durata dell'applicazione e verranno riavviati se terminati. Per eseguirlo JARs nella tua applicazione, usa un. `Procfile`

Per informazioni dettagliate sul posizionamento e sulla sintassi di a`Buildfile`, vedere[Buildfile e Procfile](platforms-linux-extend.build-proc.md).

Nell'esempio `Buildfile` seguente viene eseguito Apache Maven per creare un'applicazione Web dal codice di origine. Consulta gli [esempi dell'applicazione Web Java](java-getstarted.md#java-getstarted-samples) per un'applicazione di esempio che utilizza questa funzionalità.

**Example Buildfile**  

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

La piattaforma Java SE include i seguenti strumenti di build, che puoi chiamare dal tuo script di build:
+ `javac` - Java compiler
+ `ant` - Apache Ant
+ `mvn` - Apache Maven
+ `gradle` - Gradle

# Configurazione del processo dell'applicazione con un Procfile
<a name="java-se-procfile"></a>

Se disponi di più file JAR nella cartella principale del bundle di origine dell'applicazione, è necessario includere un file `Procfile` che indichi a Elastic Beanstalk quale/i JAR eseguire. È anche possibile includere un file `Procfile` per una singola applicazione JAR per configurare la macchina virtuale Java (JVM) che esegue la tua applicazione.

Si consiglia di fornire sempre un `Procfile` nel bundle di origine insieme all'applicazione. In questo modo si controlla con precisione quali processi vengono eseguiti da Elastic Beanstalk per l'applicazione e quali argomenti ricevono questi processi.

Per dettagli sulla scrittura e l'uso di un file, `Procfile` vedere[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
```

Il comando che esegue lo JAR principale nella tua applicazione deve essere chiamato `web` e deve essere il primo comando elencato nel `Procfile`. Il server nginx inoltra tutte le richieste HTTP che riceve dal load balancer del tuo ambiente a questa applicazione.

Elastic Beanstalk presuppone che tutte le voci in Procfile siano eseguite in qualsiasi momento e riavvia automaticamente qualsiasi applicazione definita nel Procfile che viene terminato. Per eseguire comandi che termineranno e non devono essere riavviati, utilizza un [`Buildfile`](java-se-buildfile.md).

## Utilizzo di un Procfile su AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="java-se-procfile.alami"></a>

Se il tuo ambiente Java SE di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente Amazon Linux 2), leggi le informazioni aggiuntive presenti in questa sezione.

**Note**  
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2I rami della AL2 piattaforma 023/ non sono compatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e *richiedono impostazioni di configurazione diverse*.
 [Il 18 luglio 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI AL1 () come ritirato.** Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Passaggio delle porte — Amazon Linux AMI (AL1)
<a name="java-se-procfile.alami.ports"></a>

Per impostazione predefinita, Elastic Beanstalk configura il proxy nginx per inoltrare le richieste alla tua applicazione sulla porta 5000. È possibile sostituire la porta predefinita impostando la [proprietà dell'ambiente](java-se-platform.md#java-se-options) `PORT` sulla porta di ascolto dell'applicazione principale.

Se utilizzi un `Procfile` per eseguire più applicazioni, Elastic Beanstalk sulle versioni della piattaforma AMI Amazon Linux si aspetta che ogni applicazione aggiuntiva ascolti su una porta superiore di 100 rispetto alla precedente. Elastic Beanstalk imposta la variabile PORT accessibile all'interno di ogni applicazione per la porta su cui si aspetta venga eseguita l'applicazione. È possibile accedere a questa variabile all'interno dell'applicazione chiamando `System.getenv("PORT")`.

Nell'esempio precedente `Procfile`, l'applicazione `web` è in ascolto sulla porta 5000, `cache` è in ascolto sulla porta 5100 e `web_foo` sulla porta 5200. `web` configura la propria porta di ascolto leggendo la variabile `PORT` e aggiungendo 100 al numero di porta per determinare su quale porta è in ascolto `cache`, in modo che sia possibile inviarvi delle richieste.

# Configurazione del server proxy
<a name="java-se-nginx"></a>

Elastic Beanstalk usa [nginx](https://www.nginx.com/) come proxy inverso per mappare l'applicazione al load balancer Elastic Load Balancing sulla porta 80. Elastic Beanstalk fornisce una configurazione nginx predefinita che puoi estendere o ignorare completamente a favore di quella personalizzata.

Per impostazione predefinita, Elastic Beanstalk configura il proxy nginx per inoltrare le richieste alla tua applicazione sulla porta 5000. È possibile sostituire la porta predefinita impostando la [proprietà dell'ambiente](java-se-platform.md#java-se-options) `PORT` sulla porta di ascolto dell'applicazione principale.

**Nota**  
La porta di ascolto della tua applicazione non influisce sulla porta che il server nginx ascolta per ricevere richieste dal load balancer.

**Configurazione del server proxy sulla versione della piattaforma**  
Tutte le AL2 piattaforme AL2 023/ supportano una funzionalità di configurazione proxy uniforme. Per ulteriori informazioni sulla configurazione del server proxy sulle versioni della piattaforma che eseguono AL2 AL2 023/, consulta. [Configurazione del proxy inverso](platforms-linux-extend.proxy.md) 

## Configurazione del proxy su AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="java-se-nginx.alami"></a>

Se il tuo ambiente Java SE di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente Amazon Linux 2), leggi le informazioni aggiuntive presenti in questa sezione.

**Note**  
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2I rami della AL2 piattaforma 023/ non sono compatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e *richiedono impostazioni di configurazione diverse*.
 [Il 18 luglio 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI AL1 () come ritirato.** Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Estensione e sovrascrittura della configurazione proxy predefinita — Amazon Linux AMI () AL1
<a name="java-se-nginx.alami.extending"></a>

Per estendere la configurazione nginx predefinita di Elastic Beanstalk, aggiungi file di configurazione `.conf` in una cartella denominata `.ebextensions/nginx/conf.d/` nel bundle di origine dell'applicazione. La configurazione nginx di Elastic Beanstalk include automaticamente i file `.conf` in questa cartella.

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

Per sostituire completamente la configurazione nginx predefinita di Elastic Beanstalk, includi una configurazione nel bundle di origine in `.ebextensions/nginx/nginx.conf`:

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

Se ignori la configurazione nginx predefinita di Elastic Beanstalk, aggiungi al file `nginx.conf` la riga seguente per inserire le configurazioni di Elastic Beanstalk per [Reportistica e monitoraggio dello stato di salute migliorati in Elastic Beanstalk](health-enhanced.md), le mappature automatiche delle applicazioni e i file statici.

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

La seguente configurazione di esempio dall'[applicazione di esempio Scorekeep](https://github.com/aws-samples/eb-java-scorekeep/) sostituisce la configurazione predefinita di Elastic Beanstalk per utilizzare un'applicazione Web statica dalla sottodirectory `public` di `/var/app/current`, in cui la piattaforma Java SE copia il codice sorgente dell'applicazione. La posizione `/api` inoltra il traffico verso i percorsi di `/api/` dell'applicazione Spring sulla porta 5000. Il traffico restante viene distribuito dall'applicazione Web al percorso root.

**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;
  }
}
```