

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 Tomcat di Elastic Beanstalk
<a name="java-tomcat-platform"></a>

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

La piattaforma AWS Elastic Beanstalk Tomcat è un insieme di [versioni della piattaforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.java) per applicazioni Web Java che possono essere eseguite in un contenitore Web Tomcat. Tomcat viene eseguito dietro un server proxy nginx. Ogni ramo della piattaforma corrisponde a una versione principale di Tomcat.

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 Tomcat di Elastic Beanstalk include un proxy inverso che inoltra le richieste alla tua applicazione. È possibile utilizzare le [opzioni di configurazione](#java-tomcat-namespaces) per configurare il server proxy in modo che possa servire asset statici da una cartella nel codice sorgente, per ridurre il carico sull'applicazione. Per gli scenari avanzati, puoi [includere file `.conf` personalizzati](java-tomcat-proxy.md) nel bundle di origine per estendere la configurazione proxy di Elastic Beanstalk o sovrascriverla completamente.

**Nota**  
Elastic Beanstalk supporta [nginx](https://www.nginx.com/) (impostazione predefinita) e [Apache HTTP Server](https://httpd.apache.org/) come server proxy sulla piattaforma Tomcat. Se il tuo ambiente Tomcat di Elastic Beanstalk utilizza un ramo della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2), hai anche la possibilità di utilizzare [Apache HTTP Server versione 2.2](https://httpd.apache.org/docs/2.2/). Apache (versione più recente) è l'impostazione predefinita su questi rami della piattaforma più vecchi.   
 [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).

Devi creare un pacchetto di applicazioni Java in un file WAR con una struttura specifica. Per informazioni sulla struttura necessaria e sulla relazione con la struttura della tua directory di progetto, consulta [Strutturazione della cartella di progetto](java-tomcat-platform-directorystructure.md).

Per eseguire più applicazioni sullo stesso server Web, puoi [raggruppare più file WAR](java-tomcat-multiple-war-files.md) in un singolo bundle di origine. Ogni applicazione in un bundle di origine con più file WAR viene eseguita nel percorso root (`ROOT.war` eseguito in `myapp.elasticbeanstalk.com/`) o in un percorso immediatamente sottostante (`app2.war` eseguito in `myapp.elasticbeanstalk.com/app2/`), come indicato dal nome del file WAR. In un bundle di origine con un solo file WAR, l'applicazione viene eseguita sempre nel percorso root.

Le impostazioni applicate nella console Elastic Beanstalk sostituiscono le stesse impostazioni nei file di configurazione, se esistenti. Ciò ti consente di disporre di impostazioni predefinite nei file di configurazione, sostituibili con impostazioni specifiche per l'ambiente nella console. Per ulteriori informazioni sulla precedenza e altri metodi di modifica delle impostazioni, consulta [Opzioni di configurazione](command-options.md).

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).

**Topics**
+ [

## Configurazione dell'ambiente Tomcat
](#java-tomcat-options)
+ [

## Spazio dei nomi della configurazione Tomcat
](#java-tomcat-namespaces)
+ [

# Raggruppamento di più file WAR per ambienti Tomcat
](java-tomcat-multiple-war-files.md)
+ [

# Strutturazione della cartella di progetto
](java-tomcat-platform-directorystructure.md)
+ [

# Configurazione del server proxy
](java-tomcat-proxy.md)

## Configurazione dell'ambiente Tomcat
<a name="java-tomcat-options"></a>

La piattaforma Tomcat di Elastic Beanstalk offre alcune opzioni specifiche della piattaforma in aggiunta alle opzioni standard disponibili in tutte le piattaforme. Queste opzioni permettono di configurare Java Virtual Machine (JVM), in esecuzione nei server Web dell'ambiente, e di definire proprietà di sistema che forniscono le stringhe di configurazione delle informazioni all'applicazione.

Puoi utilizzare 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 Tomcat 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 del contenitore
<a name="java-tomcat-options-container"></a>

È possibile specificare le seguenti opzioni specifiche della piattaforma:
+ **Proxy server (Server proxy)**: il server proxy da utilizzare nelle istanze dell'ambiente. Per impostazione predefinita, viene utilizzato nginx.

### Opzioni del container JVM
<a name="java-tomcat-options-jvm"></a>

La dimensione heap nella Java Virtual Machine (JVM) determina il numero di oggetti che la tua applicazione può creare in memoria prima della *[garbage collection](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/introduction.html)*. Puoi modificare le opzioni **Dimensione heap iniziale di JVM** (`-Xms option`) e **Dimensione heap JVM massima** (`-Xmx`). Una dimensione heap iniziale più grande consente la creazione di un maggior numero di oggetti prima della garbage collection, ma il garbage collector impiegherà più tempo per compattare l'heap. La dimensione heap massima specifica la quantità massima di memoria che JVM può allocare durante l'espansione dell'heap nel quadro di un'attività intensa.

**Nota**  
La memoria disponibile dipende dal tipo di istanza Amazon EC2. Per ulteriori informazioni sui tipi di istanza EC2 disponibili per l'ambiente Elastic Beanstalk, consulta [Tipi di istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) nella *Guida per l'utente di Amazon Elastic Compute Cloud per istanze Linux*.

La *generazione permanente* è una sezione dell'heap JVM che memorizza le definizioni di classi e i metadati associati. Per modificare la dimensione della generazione permanente, digita la nuova dimensione nell'opzione **Maximum JVM PermGen Size** (`-XX:MaxPermSize`). Questa impostazione è valida solo per Java 7 e versioni precedenti. **Questa opzione era obsoleta in JDK 8 e sostituita dall'opzione Size (). MaxMetaspace** `-XX:MaxMetaspaceSize`

**Importante**  
JDK 17 ha rimosso il supporto dell'opzione Java `-XX:MaxPermSize`. L'utilizzo di questa opzione con un ambiente in esecuzione su una ramificazione della piattaforma Elastic Beanstalk con Corretto 17 genererà un errore. Elastic Beanstalk ha rilasciato la prima ramificazione della piattaforma che esegue Tomcat con Corretto 17 il [13 luglio 2023](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-07-13-al2023.html).  
Per ulteriori informazioni, consulta le risorse seguenti.  
Sito Web della documentazione di Oracle Java: [Removed Java Options](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#removed-java-options) 
Sito Web della documentazione di Oracle Java: sezione *Class Metadata* in [Other Considerations](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html)

Per ulteriori informazioni sulle piattaforme Elastic Beanstalk e sui relativi componenti, consulta la pagina [Piattaforme supportate](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html) nella *Guida alle piattaforme AWS Elastic Beanstalk *.

### Opzioni di log
<a name="java-tomcat-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.
+ **Enable log file rotation to Amazon S3** (Abilita rotazione file di log in Amazon S3): specifica se i file di log per le istanze Amazon EC2 dell'applicazione debbano essere copiati nel bucket Amazon S3 associato all'applicazione.

### File statici
<a name="java-tomcat-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-tomcat-options-properties"></a>

Nella sezione **Environment Properties (Proprietà ambiente)** puoi specificare le impostazioni di configurazione dell'ambiente nelle istanze Amazon EC2 che eseguono l'applicazione. Le proprietà di ambiente sono passate come coppie chiave-valore all'applicazione. 

La piattaforma Tomcat definisce una proprietà segnaposto denominata `JDBC_CONNECTION_STRING` per gli ambienti Tomcat, utilizzata per passare una stringa di connessione a un database esterno.

**Nota**  
Se colleghi un'istanza database RDS all'ambiente, crea dinamicamente la stringa di connessione JDBC dalle proprietà dell'ambiente Amazon Relational Database Service (Amazon RDS) fornite da Elastic Beanstalk. Utilizza JDBC\$1CONNECTION\$1STRING solo per le istanze database il cui provisioning non viene effettuato mediante Elastic Beanstalk.  
Per ulteriori informazioni sull'uso di Amazon RDS con l'applicazione Java, consulta [Aggiungere un'istanza Amazon RDS DB all'ambiente Java Elastic Beanstalk](java-rds.md).

Per le versioni della piattaforma Tomcat rilasciate prima del [26 marzo 2025,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) le variabili di ambiente sono accessibili tramite. `System.getProperty()` Ad esempio, è possibile leggere una proprietà denominata `API_ENDPOINT` da una variabile con il codice seguente.

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

Le versioni della piattaforma Tomcat rilasciate a partire [dal 26 marzo 2025](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) possono essere utilizzate anche `System.getenv` per accedere a variabili di ambiente in testo non crittografato. È possibile continuare a utilizzare per accedere alle variabili di ambiente in testo `System.getProperty` non crittografato. Tuttavia, [le variabili di ambiente memorizzate come segrete](AWSHowTo.secrets.env-vars.md) sono disponibili solo utilizzando. `System.getenv` Ad esempio, è possibile leggere una variabile di ambiente denominata `API_KEY` con il codice seguente.

```
String apiKey = System.getenv("API_KEY");
```

**Importante**  
L'aggiunta dell'`System.getenv()`accesso per le variabili di ambiente nelle versioni della piattaforma Tomcat rilasciate il o dopo il [26 marzo 2025](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) può causare comportamenti imprevisti nelle applicazioni che attribuiscono alle variabili di ambiente la precedenza sulle proprietà del sistema Java o quando si passa esplicitamente da a. `System.getProperty()` `System.getenv()`  
Poiché le proprietà di sistema (passate tramite riga di comando) richiedono l'escape della shell per i caratteri speciali mentre le variabili di ambiente no, i valori possono essere risolti in modo diverso quando si utilizzano le variabili di ambiente anziché le proprietà di sistema Java.  
Se la tua applicazione è interessata, considera:  
Rimozione dei caratteri di escape dai valori delle proprietà dell'ambiente durante l'utilizzo `System.getenv()`
Configurazione dell'applicazione per l'uso esplicito `System.getProperty()`
Verifica a fondo l'applicazione durante l'aggiornamento per garantire un comportamento coerente

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

## Spazio dei nomi della configurazione Tomcat
<a name="java-tomcat-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.*

Oltre alle [opzioni supportate per tutti gli ambienti Elastic Beanstalk](command-options-general.md), la piattaforma Tomcat supporta quelle incluse negli spazi dei nomi seguenti:
+ `aws:elasticbeanstalk:container:tomcat:jvmoptions`: modifica le impostazioni JVM. Le opzioni in questo spazio dei nomi corrispondono a quelle nella console di gestione, in questo modo:
  + `Xms` – **JVM command line options (Opzioni della riga di comando JVM**
  + `JVM Options` – **JVM command line options (Opzioni della riga di comando JVM**
+ `aws:elasticbeanstalk:environment:proxy`: scegli il server proxy dell'ambiente.

L'esempio di file di configurazione seguente mostra l'utilizzo delle opzioni di configurazione specifiche di Tomcat.

**Example .ebextensions/tomcat-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:tomcat:jvmoptions:
    Xms: 512m
    JVM Options: '-Xmn128m'
  aws:elasticbeanstalk:application:environment:
    API_ENDPOINT: mywebapi.zkpexsjtmd.us-west-2.elasticbeanstalk.com
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
```

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 Tomcat di AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="tomcat.alami"></a>

Se il tuo ambiente Tomcat 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). AL2023I rami AL2 della piattaforma/sono incompatibili 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 Tomcat — Amazon Linux AMI () AL1
<a name="tomcat.alami.namespaces"></a>

La piattaforma Tomcat di AMI Amazon Linux supporta opzioni aggiuntive nei seguenti spazi dei nomi:
+ `aws:elasticbeanstalk:container:tomcat:jvmoptions`: oltre alle opzioni menzionate in precedenza in questa pagina per questo spazio dei nomi, le versioni precedenti della piattaforma AMI Amazon Linux supportano anche:
  + `XX:MaxPermSize` – **Maximum JVM permanent generation size (Dimensione massima di generazione permanente JVM**
+ `aws:elasticbeanstalk:environment:proxy`: oltre a scegliere il server proxy, configura anche la compressione delle risposte.

L'esempio di file di configurazione seguente mostra l'utilizzo delle opzioni di configurazione dello spazio dei nomi proxy.

**Example .ebextensions/tomcat-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    GzipCompression: 'true'
    ProxyServer: nginx
```

### Includi i file di configurazione di Elastic Beanstalk — Amazon Linux AMI () AL1
<a name="java-tomcat-ebextensions"></a>

Per distribuire i file di configurazione `.ebextensions`, occorre includerli nella sorgente dell'applicazione. Per una singola applicazione, aggiungi `.ebextensions` a un file WAR compresso eseguendo il seguente comando:

**Example**  

```
zip -ur your_application.war .ebextensions
```

Per un'applicazione che richiede più file WAR, consulta [Raggruppamento di più file WAR per ambienti Tomcat](java-tomcat-multiple-war-files.md) per ulteriori informazioni.

# Raggruppamento di più file WAR per ambienti Tomcat
<a name="java-tomcat-multiple-war-files"></a>

Se la tua app Web comprende più componenti dell'applicazione Web, è possibile semplificare le distribuzioni e ridurre i costi operativi tramite l'esecuzione di componenti in un singolo ambiente, invece di eseguire un ambiente separato per ogni componente. Questa strategia è efficace per applicazioni leggere che non necessitano di una notevole quantità di risorse e per ambienti di sviluppo e test.

Per distribuire più applicazioni Web nell'ambiente, combina i file WAR (Web Application Archive) di ogni componente in un singolo [bundle di origine](applications-sourcebundle.md).

Per creare un bundle di origine dell'applicazione che contenga più file WAR, organizza i file WAR utilizzando la seguente struttura.

```
MyApplication.zip
├── .ebextensions
├── .platform
├── foo.war
├── bar.war
└── ROOT.war
```

Quando si distribuisce un pacchetto sorgente contenente più file WAR in un AWS Elastic Beanstalk ambiente, ogni applicazione è accessibile da un percorso diverso dal nome di dominio principale. L'esempio precedente include tre applicazioni: `foo`, `bar` e `ROOT`. `ROOT.war` è uno speciale nome di file che indica a Elastic Beanstalk di eseguire l'applicazione nel dominio radice, in modo che le tre applicazioni siano disponibili in `http://MyApplication.elasticbeanstalk.com/foo`, `http://MyApplication.elasticbeanstalk.com/bar` e `http://MyApplication.elasticbeanstalk.com`.

Il bundle di origine può includere file WAR, una cartella opzionale `.ebextensions` e una cartella opzionale `.platform`. Per informazioni dettagliate su queste cartelle di configurazione facoltative, consulta [Estensione delle piattaforme Elastic Beanstalk Linux](platforms-linux-extend.md).

**Per avviare un ambiente (console)**

1. [Apri la console Elastic Beanstalk con questo link preconfigurato: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Per **Platform (Piattaforma)**, selezionare la piattaforma e il ramo della piattaforma corrispondenti al linguaggio utilizzato dall'applicazione o la piattaforma Docker per le applicazioni basate su container.

1. Per **Application code (Codice applicazione)**, scegliere **Carica il tuo codice**.

1. Selezionare **Local file (File locale)**, quindi **Browse (Sfoglia)** e aprire il bundle di origine.

1. Selezionare **Review and launch (Controlla e avvia)**.

1. Controlla le impostazioni disponibili, quindi seleziona **Create app (Crea applicazione)**.

Per ulteriori informazioni su come creare bundle di origine, consulta [Crea un bundle di sorgenti dell'applicazione Elastic Beanstalk](applications-sourcebundle.md).

# Strutturazione della cartella di progetto
<a name="java-tomcat-platform-directorystructure"></a>

Per poter funzionare quando vengono distribuiti in un server Tomcat, gli archivi dell'applicazione Web (file WAR) Java Platform Enterprise Edition (*Java EE*) compilati devono essere strutturati in base a determinate [linee guida](https://docs.oracle.com/javaee/7/tutorial/packaging003.htm). La directory di progetto non deve necessariamente soddisfare gli stessi standard, ma è una buona idea strutturarla allo stesso modo per semplificare la compilazione e la creazione di pacchetti. La strutturazione della cartella di progetto come contenuto di file WAR, inoltre, aiuta a comprendere la relazione tra i file e il relativo comportamento su un server Web.

Nella seguente gerarchia consigliata il codice sorgente per l'applicazione Web viene posizionato in una directory `src`, in modo da isolarlo dallo script di creazione e dal file WAR che genera.

```
~/workspace/my-app/
|-- build.sh            - Build script that compiles classes and creates a WAR
|-- README.MD           - Readme file with information about your project, notes
|-- ROOT.war            - Source bundle artifact created by build.sh
`-- src                 - Source code folder
    |-- WEB-INF         - Folder for private supporting files
    |   |-- classes     - Compiled classes
    |   |-- lib         - JAR libraries
    |   |-- tags        - Tag files
    |   |-- tlds        - Tag Library Descriptor files
    |   `-- web.xml     - Deployment Descriptor
    |-- com             - Uncompiled classes
    |-- css             - Style sheets
    |-- images          - Image files
    |-- js              - JavaScript files
    `-- default.jsp     - JSP (JavaServer Pages) webpage
```

Il contenuto della cartella `src` corrisponde a ciò che verrà inserito in pacchetti e distribuito al server, ad eccezione della cartella `com`. La cartella `com` contiene le classi non compilate (file `.java`). Queste devono essere compilate e inserite nella directory `WEB-INF/classes` per essere accessibili dal codice dell'applicazione.

La directory `WEB-INF` contiene il codice e le configurazioni che non vengono gestiti pubblicamente nel server Web. Le altre cartelle nella root della directory di origine (`css`, `images` e `js`) sono disponibili pubblicamente nel percorso corrispondente nel server Web.

L'esempio seguente è identico alla directory di progetto precedente, ma contiene ulteriori file e sottodirectory. Questo progetto di esempio include tag semplici, classi di supporto e modello e un file Java Server Page (JSP) per una risorsa `record`. Include anche un foglio di stile e JavaScript per [Bootstrap](http://getbootstrap.com/), un file JSP predefinito e una pagina di errore per gli errori 404.

`WEB-INF/lib` include un file Java Archive (JAR) che contiene il driver Java Database Connectivity (JDBC) per PostgreSQL. `WEB-INF/classes` è vuoto perché i file di classe non sono ancora state compilate.

```
~/workspace/my-app/
|-- build.sh
|-- README.MD
|-- ROOT.war
`-- src
    |-- WEB-INF
    |   |-- classes
    |   |-- lib
    |   |   `-- postgresql-9.4-1201.jdbc4.jar
    |   |-- tags
    |   |   `-- header.tag
    |   |-- tlds
    |   |   `-- records.tld
    |   `-- web.xml
    |-- com
    |   `-- myapp
    |       |-- model
    |       |   `-- Record.java
    |       `-- web
    |           `-- ListRecords.java
    |-- css
    |   |-- bootstrap.min.css
    |   `-- myapp.css
    |-- images
    |   `-- myapp.png
    |-- js
    |   `-- bootstrap.min.js
    |-- 404.jsp
    |-- default.jsp
    `-- records.jsp
```

## Creazione di un file WAR con uno script di shell
<a name="java-tomcat-platform-directorystructure-building"></a>

`build.sh` è uno script di shell molto semplice che compila classi Java, crea un file WAR e lo copia nella directory `webapps` di Tomcat per test locali.

```
cd src
javac -d WEB-INF/classes com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/ListRecords.java

jar -cvf ROOT.war *.jsp images css js WEB-INF
cp ROOT.war /Library/Tomcat/webapps
mv ROOT.war ../
```

All'interno del file WAR troverai la stessa struttura esistente nella directory `src` dell'esempio precedente, esclusa la cartella `src/com`. Il comando `jar` crea automaticamente il file `META-INF/MANIFEST.MF`.

```
~/workspace/my-app/ROOT.war
|-- META-INF
|   `-- MANIFEST.MF
|-- WEB-INF
|   |-- classes
|   |   `-- com
|   |       `-- myapp
|   |           |-- model
|   |           |   `-- Records.class
|   |           `-- web
|   |               `-- ListRecords.class
|   |-- lib
|   |   `-- postgresql-9.4-1201.jdbc4.jar
|   |-- tags
|   |   `-- header.tag
|   |-- tlds
|   |   `-- records.tld
|   `-- web.xml
|-- css
|   |-- bootstrap.min.css
|   `-- myapp.css
|-- images
|   `-- myapp.png
|-- js
|   `-- bootstrap.min.js
|-- 404.jsp
|-- default.jsp
`-- records.jsp
```

## Utilizzo `.gitignore`
<a name="java-tomcat-platform-gitignore"></a>

Per evitare il commit dei file di classe e dei file WAR compilati nel repository Git o la visualizzazione di messaggi relativi a questi file quando esegui comandi Git, aggiungi i tipi di file rilevanti a un file denominato `.gitignore` nella cartella di progetto.

**\$1/workspace/myapp/.gitignore**

```
*.zip
*.class
```

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

La piattaforma Tomcat utilizza [nginx](https://www.nginx.com/) (impostazione predefinita) o [Apache HTTP Server](https://httpd.apache.org/) come proxy inverso per inoltrare le richieste dalla porta 80 dell'istanza al container Web Tomcat in ascolto sulla porta 8080. Elastic Beanstalk fornisce una configurazione proxy predefinita che puoi estendere o sostituire completamente a favore di quella personalizzata.

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

## Configurazione del proxy sulla piattaforma Tomcat di AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="java-tomcat-proxy.alami"></a>

Se il tuo ambiente Tomcat 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). AL2023I rami AL2 della piattaforma/sono incompatibili 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).

### Scelta di un server proxy per il tuo ambiente Tomcat — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy.alami"></a>

Le versioni della piattaforma Tomcat basate su AMI Amazon Linux (precedente ad Amazon Linux 2) utilizzano per impostazione predefinita [Apache 2.4](https://httpd.apache.org/docs/2.4/) per il proxy. Puoi scegliere di usare [Apache 2.2](https://httpd.apache.org/docs/2.2/) o [nginx](https://www.nginx.com/) includendo un [file di configurazione](ebextensions.md) nel codice sorgente. L'esempio seguente configura Elastic Beanstalk per l'uso di nginx.

**Example .ebextensions/nginx-proxy.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: nginx
```

### Migrazione da Apache 2.2 ad Apache 2.4 — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy-apache-migrate"></a>

Se l'applicazione è stata sviluppata per [Apache 2.2](https://httpd.apache.org/docs/2.2/), leggi questa sezione per informazioni sulla migrazione ad [Apache 2.4](https://httpd.apache.org/docs/2.4/).

A partire dalle configurazioni della piattaforma Tomcat versione 3.0.0, rese disponibili con [l'aggiornamento della piattaforma Java con Tomcat del 24 maggio 2018](https://aws.amazon.com/releasenotes/release-aws-elastic-beanstalk-platform-update-for-the-java-with-tomcat-platform-on-may-24-2018/), Apache 2.4 è il proxy predefinito della piattaforma Tomcat. I file `.conf` di Apache 2.4 sono in gran parte, ma non interamente, compatibili con quelli della versione Apache 2.2 precedente. Elastic Beanstalk include file `.conf` predefiniti che funzionano correttamente con ogni versione di Apache. Se la tua applicazione non personalizza la configurazione di Apache, come descritto in [Estensione e sovrascrittura della configurazione predefinita di Apache — Amazon Linux AMI () AL1](#java-tomcat-proxy-apache), dovrebbe supportare la migrazione ad Apache 2.4 senza problemi.

Se l'applicazione estende o sostituisce la configurazione di Apache, potrebbe essere necessario effettuare alcune modifiche per migrare ad Apache 2.4. Per ulteriori informazioni, consulta la pagina relativa all'[aggiornamento alla versione 2.4 dalla 2.2](https://httpd.apache.org/docs/current/upgrading.html) sul sito *Apache Software Foundation*. Finché non esegui la migrazione ad Apache 2.4, come misura temporanea puoi scegliere di usare Apache 2.2 con l'applicazione includendo il [file di configurazione](ebextensions.md) seguente nel codice sorgente.

**Example apache-legacy-proxy.ebextensions/ .config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache/2.2
```

Per una soluzione rapida, puoi anche selezionare il server proxy nella console Elastic Beanstalk.

**Per selezionare il proxy nell'ambiente Tomcat 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).

1. In **Proxy server (Server proxy)** scegli `Apache 2.2 (deprecated)`.

1. Per salvare le modifiche scegli **Apply** (Applica) nella parte inferiore della pagina.

![\[Selezione del proxy per un ambiente Tomcat nella categoria di configurazione software della console Elastic Beanstalk\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/java-tomcat-proxy-selection.png)


### Estensione e sovrascrittura della configurazione predefinita di Apache — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy-apache"></a>

Puoi estendere la configurazione Apache predefinita di Elastic Beanstalk con file di configurazione personalizzati aggiuntivi. In alternativa, puoi sostituire completamente la configurazione Apache predefinita di Elastic Beanstalk.

**Nota**  
Tutte le piattaforme Amazon Linux 2 supportano una caratteristica di configurazione proxy uniforme. Per informazioni dettagliate sulla configurazione del server proxy sulle versioni della piattaforma Tomcat che eseguono Amazon Linux 2, consulta. [Configurazione del proxy inverso](platforms-linux-extend.proxy.md)
Se stai eseguendo la migrazione dell'applicazione Elastic Beanstalk a una piattaforma Amazon Linux 2, leggi anche le informazioni in [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

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

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd
|      -- conf.d
|         -- myconf.conf
|         -- ssl.conf
-- index.jsp
```

Ad esempio, la configurazione Apache 2.4 seguente aggiunge un listener sulla porta 5000.

**Example . ebextensions/httpd/conf.d/port5000. conf**  

```
listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
```

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

```
~/workspace/my-app/
|-- .ebextensions
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp
```

Se vuoi sostituire completamente la configurazione Apache di Elastic Beanstalk, aggiungi le righe seguenti a `httpd.conf` per ottenere le configurazioni di Elastic Beanstalk per [Reportistica e monitoraggio dello stato di salute migliorati in Elastic Beanstalk](health-enhanced.md), la compressione delle risposte e i file statici.

```
IncludeOptional conf.d/*.conf
IncludeOptional conf.d/elasticbeanstalk/*.conf
```

Se l'ambiente usa Apache 2.2 come proxy, sostituisci le direttive `IncludeOptional` con `Include`. [Per dettagli sul comportamento di queste due direttive nelle due versioni di Apache, consultate [Include in Apache 2.4, in Apache 2.4](https://httpd.apache.org/docs/2.4/mod/core.html#include) e Include [IncludeOptional in Apache 2.2](https://httpd.apache.org/docs/2.4/mod/core.html#includeoptional).](https://httpd.apache.org/docs/2.2/mod/core.html#include)

**Nota**  
Per sostituire il listener predefinito sulla porta 80, includi un file denominato `00_application.conf` in `.ebextensions/httpd/conf.d/elasticbeanstalk/` per sovrascrivere la configurazione di Elastic Beanstalk.

Per un esempio di utilizzo, osserva il file di configurazione predefinito di Elastic Beanstalk in `/etc/httpd/conf/httpd.conf` in un'istanza nell'ambiente. Tutti i file della cartella `.ebextensions/httpd` nel bundle di origine vengono copiati in `/etc/httpd` durante le distribuzioni.

### Estensione della configurazione nginx predefinita — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy-nginx"></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
|           |-- elasticbeanstalk
|           |   `-- my-server-conf.conf
|           `-- my-http-conf.conf
`-- index.jsp
```

I file con estensione .conf nella cartella `conf.d` vengono inclusi nel blocco `http` della configurazione predefinita. I file nella cartella `conf.d/elasticbeanstalk` vengono inclusi nel blocco `server` all'interno del blocco `http`.

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
`-- index.jsp
```

**Note**  
Se sostituisci la configurazione nginx di Elastic Beanstalk, aggiungi la riga seguente al blocco `server` della configurazione per ottenere le configurazioni di Elastic Beanstalk per il listener della porta 80, la compressione delle risposte e i file statici.  

  ```
   include conf.d/elasticbeanstalk/*.conf;
  ```
Per sostituire il listener predefinito sulla porta 80, includi un file denominato `00_application.conf` in `.ebextensions/nginx/conf.d/elasticbeanstalk/` per sovrascrivere la configurazione di Elastic Beanstalk.
Includi anche la riga seguente nel blocco `http` della configurazione per ottenere le configurazioni di Elastic Beanstalk per [Reportistica e monitoraggio dello stato di salute migliorati in Elastic Beanstalk](health-enhanced.md) e la registrazione.  

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

Per un esempio di utilizzo, osserva il file di configurazione predefinito di Elastic Beanstalk in `/etc/nginx/nginx.conf` in un'istanza nell'ambiente. Tutti i file della cartella `.ebextensions/nginx` nel bundle di origine vengono copiati in `/etc/nginx` durante le distribuzioni.