

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Déploiement d'applications Java avec Elastic Beanstalk
<a name="create_deploy_Java"></a>

Ce chapitre fournit des instructions pour configurer et déployer vos applications Java sur AWS Elastic Beanstalk. Elastic Beanstalk facilite le déploiement, la gestion et le dimensionnement de vos applications Web Java à l'aide d'Amazon Web Services.

Vous pouvez déployer votre application en quelques minutes à l'aide de l'interface de ligne de commande Elastic Beanstalk (EB CLI) ou de la console Elastic Beanstalk. Après avoir déployé votre application Elastic Beanstalk, vous pouvez continuer à utiliser l'EB CLI pour gérer votre application et votre environnement, ou vous pouvez utiliser la console Elastic Beanstalk, ou le. AWS CLI APIs

Suivez les step-by-step instructions [QuickStart pour Java](java-quickstart.md) pour créer et déployer une application Web Java *Hello World* à l'aide de l'interface de ligne de commande EB. Si vous souhaitez obtenir des step-by-step instructions pour créer une application *Hello World* Java JSP simple à déployer avec l'EB CLI sur notre plateforme basée sur Tomcat, essayez le. [QuickStart pour Java sur Tomcat](tomcat-quickstart.md)

**Les branches de la plateforme Java**  
AWS Elastic Beanstalk prend en charge deux plateformes pour les applications Java.
+ **Tomcat** : plate-forme basée sur *Apache Tomcat*, un conteneur Web open source pour les applications qui utilisent des servlets Java et JavaServer Pages (JSPs) pour répondre aux requêtes HTTP. Tomcat facilite le développement d'applications web en fournissant une configuration de sécurité multithread déclarative, ainsi qu'une personnalisation étendue. Elastic Beanstalk possède des branches de plateforme pour chacune des versions majeures actuelles de Tomcat. Pour de plus amples informations, veuillez consulter [Plateforme Tomcat](java-tomcat-platform.md).
+ **Java SE** : plate-forme pour les applications qui n'utilisent pas de conteneur Web ou qui en utilisent un autre que Tomcat, tel que Jetty ou. GlassFish Vous pouvez inclure n'importe quelle bibliothèque Java Archives (JARs) utilisée par votre application dans le bundle source que vous déployez sur Elastic Beanstalk. Pour de plus amples informations, veuillez consulter [Plateforme Java SE](java-se-platform.md).

Les branches récentes des plateformes Tomcat et Java SE sont basées sur Amazon Linux 2 et versions ultérieures, et utilisent *Corretto* AWS , la distribution Java SE. *Les noms de ces branches de plate-forme incluent le mot *Corretto au* lieu de Java.*

Pour obtenir la liste des versions actuelles de la plateforme, veuillez consulter [Tomcat](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.java) et [Java SE](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase) dans le guide *Plateformes AWS Elastic Beanstalk *.

**AWS outils**  
AWS fournit plusieurs outils pour travailler avec Java et Elastic Beanstalk. Quelle que soit la branche de plateforme que vous choisissez, vous pouvez utiliser le [AWS SDK for Java pour](java-development-environment.md#java-development-environment-sdk) utiliser AWS d'autres services depuis votre application Java. Le AWS SDK pour Java est un ensemble de bibliothèques qui vous permettent d' AWS APIs utiliser le code de votre application sans écrire les appels HTTP bruts à partir de zéro.

Si vous préférez gérer vos applications depuis la ligne de commande, installez l'interface de ligne de commande [Elastic Beanstalk](eb-cli3.md) (EB CLI) et utilisez-la pour créer, surveiller et gérer vos environnements Elastic Beanstalk. Si vous exécutez plusieurs environnements pour votre application, l'interface de ligne de commande (CLI) EB s'intègre avec Git pour vous permettre d'associer chacun de vos environnements à une branche Git différente.

**Topics**
+ [

# QuickStart: Déployer une application Java sur Elastic Beanstalk
](java-quickstart.md)
+ [

# QuickStart: Déployer une application Web Java JSP pour Tomcat sur Elastic Beanstalk
](tomcat-quickstart.md)
+ [

# Configuration de votre environnement de développement Java
](java-development-environment.md)
+ [

# Autres exemples d'applications et de didacticiels Elastic Beanstalk pour Java
](java-getstarted.md)
+ [

# Utilisation de la plateforme Elastic Beanstalk Tomcat
](java-tomcat-platform.md)
+ [

# Utilisation de la plateforme Java SE Elastic Beanstalk
](java-se-platform.md)
+ [

# Ajouter une instance de base de données Amazon RDS à votre environnement Java Elastic Beanstalk
](java-rds.md)
+ [

# Outils et ressources Java
](create_deploy_Java.resources.md)

# QuickStart: Déployer une application Java sur Elastic Beanstalk
<a name="java-quickstart"></a>

Ce QuickStart didacticiel explique le processus de création d'une application Java et de son déploiement dans un AWS Elastic Beanstalk environnement.

**Non destiné à une utilisation en production**  
Les exemples sont destinés uniquement à des fins de démonstration. N'utilisez pas d'exemples d'applications en production.

**Topics**
+ [

## Votre AWS compte
](#java-quickstart-aws-account)
+ [

## Conditions préalables
](#java-quickstart-prereq)
+ [

## Étape 1 : Création d'une application Java
](#java-quickstart-create-app)
+ [

## Étape 2 : Exécutez votre application localement
](#java-quickstart-run-local)
+ [

## Étape 3 : Déployez votre application Java avec l'interface de ligne de commande EB
](#java-quickstart-deploy)
+ [

## Étape 4 : Exécutez votre application sur Elastic Beanstalk
](#java-quickstart-run-eb-ap)
+ [

## Étape 5 : nettoyer
](#java-tutorial-cleanup)
+ [

## AWS ressources pour votre application
](#java-quickstart-eb-resources)
+ [

## Étapes suivantes
](#java-quickstart-next-steps)
+ [

## Déployez avec la console Elastic Beanstalk
](#java-quickstart-console)

## Votre AWS compte
<a name="java-quickstart-aws-account"></a>

Si vous n'êtes pas encore AWS client, vous devez créer un AWS compte. L'inscription vous permet d'accéder à Elastic Beanstalk AWS et aux autres services dont vous avez besoin.

Si vous avez déjà un AWS compte, vous pouvez passer à[Conditions préalables](#java-quickstart-prereq).

### Créez un AWS compte
<a name="java-quickstart-aws-account-procedure"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, consultez la section [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

## Conditions préalables
<a name="java-quickstart-prereq"></a>

Pour suivre les procédures décrites dans ce guide, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes, les commandes sont précédées d'un symbole d'invite (\$1) et du nom du répertoire actuel, le cas échéant.

```
~/eb-project$ this is a command
this is output
```

Sous Linux et macOS, vous pouvez utiliser le shell et le gestionnaire de package de votre choix. Sur Windows, vous pouvez [installer le sous-système Windows pour Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) afin d'obtenir une version intégrée à Windows d'Ubuntu et de Bash.

### INTERFACE DE LIGNE DE COMMANDE (CLI) EB
<a name="java-quickstart-prereq.ebcli"></a>

Ce tutoriel utilise également l'interface de ligne de commande Elastic Beanstalk (CLI EB). Pour de plus amples informations sur l'installation et la configuration de la CLI EB, veuillez consulter [Installation de la CLI EB avec un script de configuration (recommandé)](eb-cli3.md#eb-cli3-install) et [Configuration de l'interface de ligne de commande EB](eb-cli3-configuration.md).

### Java et Maven
<a name="java-quickstart-prereq.runtime"></a>

Si Amazon Corretto n'est pas installé sur votre machine locale, vous pouvez l'installer en suivant les instructions d'[installation du guide de l'utilisateur d'](https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/amazon-linux-install.html)*Amazon Corretto*.

Vérifiez votre installation Java en exécutant la commande suivante.

```
~$ java -version 
```

Ce didacticiel utilise Maven. Suivez les instructions de [téléchargement](https://maven.apache.org/download.cgi) et [d'installation](https://maven.apache.org/install.html) sur le site Web du projet Apache Maven. Pour plus d'informations sur Maven, consultez le [centre des utilisateurs de Maven sur le site](https://maven.apache.org/users/index.html) Web du projet Apache Maven.

Vérifiez votre installation Maven en exécutant la commande suivante.

```
~$ mvn -v
```

## Étape 1 : Création d'une application Java
<a name="java-quickstart-create-app"></a>

Créez un répertoire de projet.

```
~$ mkdir eb-java
~$ cd eb-java
```

Créez ensuite une application qui vous allez déployer à l'aide d'Elastic Beanstalk. Nous allons créer un service RESTful Web « Hello World ».

Cet exemple utilise le framework [Spring Boot](https://spring.io/projects/spring-boot). Cette application ouvre un écouteur sur le port 5000. Elastic Beanstalk transmet les demandes à votre application sur le port 5000 par défaut.

Créez les fichiers suivants :

Ce fichier crée une application Spring Boot simple.

**Example `~/eb-java/src/main/java/com/example/Application.java`**  

```
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
```

Ce fichier crée un mappage qui renvoie une chaîne que nous définissons ici.

**Example `~/eb-java/src/main/java/com/example/Controller.java`**  

```
package com.example;
    
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
    
@RestController
public class Controller {
    
    @GetMapping("/")
    public String index() {
       return "Hello Elastic Beanstalk!";
    }
}
```

Ce fichier définit la configuration du projet Maven.

**Example `~/eb-java/pom.xml`**  

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.3</version>
  </parent>

  <groupId>com.example</groupId>
  <artifactId>BeanstalkJavaExample</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <java.version>21</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>
```

Ce fichier de propriétés remplace le port par défaut qui est 5000. Il s'agit du port par défaut vers lequel Elastic Beanstalk envoie le trafic pour les applications Java.

**Example `~/eb-java/application.properties`**  

```
server.port=5000
```

## Étape 2 : Exécutez votre application localement
<a name="java-quickstart-run-local"></a>

Package de votre application à l'aide de la commande suivante :

```
~/eb-java$ mvn clean package
```

Exécutez votre application localement à l'aide de la commande suivante :

```
~/eb-java$ java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
```

Pendant que l'application est en cours d'exécution, naviguez jusqu'à `http://127.0.0.1:5000/` dans votre navigateur. Vous devriez voir le texte « Hello Elastic Beanstalk \$1 ».

## Étape 3 : Déployez votre application Java avec l'interface de ligne de commande EB
<a name="java-quickstart-deploy"></a>

Avant de déployer votre application Java sur Elastic Beanstalk, nettoyons l'application de compilation de votre répertoire et [créons](java-se-buildfile.md) un Buildfile et un Procfile pour contrôler la façon dont l'application est [créée et](java-se-procfile.md) exécutée dans votre environnement Elastic Beanstalk.

**Pour préparer et configurer le déploiement de l'application**

1. Nettoyez l'application créée.

   ```
   ~/eb-java$ mvn clean
   ```

1. Créez votre `Buildfile`.  
**Example `~/eb-java/Buildfile`**  

   ```
   build: mvn clean package
   ```

   Ceci `Buildfile` indique la commande utilisée pour créer votre application. Si vous n'incluez pas un `Buildfile` pour une application Java, Elastic Beanstalk n'essaie pas de créer votre application.

1. Créez votre `Procfile`.  
**Example `~/eb-java/Procfile`**  

   ```
   web: java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
   ```

   Ceci `Procfile` indique la commande utilisée pour exécuter votre application. Si vous n'incluez pas de fichier `Procfile` pour une application Java, Elastic Beanstalk part du principe qu'il existe un fichier JAR à la racine de votre bundle source et essaie de l'exécuter à l'aide de la commande. `java -jar`

 Maintenant que vous avez configuré les fichiers de configuration pour créer et démarrer votre application, vous êtes prêt à la déployer. 

**Pour créer un environnement et déployer votre application Java**

1. Initialisez votre référentiel de la CLI EB avec la commande **eb init** : 

   ```
   ~/eb-java eb init -p corretto java-tutorial --region us-east-2
           
   Application java-tutorial has been created.
   ```

   Cette commande crée une application nommée `java-tutorial` et configure votre dépôt local pour créer des environnements dotés de la dernière version de la plateforme Java.

1. (facultatif) Exécutez à nouveau la commande **eb init** pour configurer une paire de clés par défaut afin de pouvoir vous connecter à l'instance EC2 qui exécute votre application.

   ```
   ~/eb-java$ eb init
   Do you want to set up SSH for your instances?
   (y/n): y
   Select a keypair.
   1) my-keypair
   2) [ Create new KeyPair ]
   ```

   Sélectionnez une paire de clés si vous en avez déjà une, ou suivez les invites pour en créer une. Si vous ne voyez pas l'invite ou que vous avez besoin de modifier vos paramètres ultérieurement, exécutez **eb init -i**.

1. Créez un environnement et déployez-y votre application avec **eb create**. Elastic Beanstalk crée automatiquement un fichier zip pour votre application et le démarre sur le port 5000.

   ```
   ~/eb-java$ eb create java-env
   ```

   Il faut environ cinq minutes à Elastic Beanstalk pour créer votre environnement.

## Étape 4 : Exécutez votre application sur Elastic Beanstalk
<a name="java-quickstart-run-eb-ap"></a>

Lorsque le processus de création de votre environnement est terminé, ouvrez votre site Web avec**eb open**.

```
~/eb-java eb open
```

Félicitations \$1 Vous avez déployé une application Java avec Elastic Beanstalk \$1 Celle-ci ouvre une fenêtre de navigation en utilisant le nom de domaine créé pour votre application.

## Étape 5 : nettoyer
<a name="java-tutorial-cleanup"></a>

Vous pouvez mettre fin à votre environnement lorsque vous avez fini d'utiliser votre application. Elastic Beanstalk AWS met fin à toutes les ressources associées à votre environnement.

Pour mettre fin à votre environnement Elastic Beanstalk avec l'EB CLI, exécutez la commande suivante.

```
~/eb-java$ eb terminate
```

## AWS ressources pour votre application
<a name="java-quickstart-eb-resources"></a>

Vous venez de créer une application à instance unique. Il s'agit d'un exemple d'application simple avec une seule instance EC2, de sorte qu'il ne nécessite pas d'équilibrage de charge ni de dimensionnement automatique. Pour les applications à instance unique, Elastic Beanstalk crée les ressources suivantes : AWS 
+ **Instance EC2** – Une machine virtuelle Amazon EC2 configurée pour exécuter des applications web sur la plateforme de votre choix.

  Chaque plateforme exécute un ensemble distinct de logiciels, de fichiers de configuration et de scripts pour prendre en charge une version de langage, une infrastructure ou un conteneur web spécifiques, ou une combinaison de ces éléments. La plupart des plateformes utilisent Apache ou nginx comme proxy inverse qui traite le trafic web devant votre application web, lui transmet les demandes, traite les ressources statiques et génère des journaux d'accès et d'erreurs.
+ **Groupe de sécurité de l'instance** – Un groupe de sécurité Amazon EC2 configuré pour autoriser le trafic entrant sur le port 80. Cette ressource autorise le trafic HTTP provenant de l'équilibreur de charge à atteindre l'instance EC2 qui exécute votre application web. Par défaut, le trafic n'est pas autorisé sur les autres ports.
+ **Compartiment Amazon S3** – Emplacement de stockage pour votre code source, les journaux et autres artefacts qui sont créés lorsque vous utilisez Elastic Beanstalk.
+ ** CloudWatch Alarmes Amazon** : deux CloudWatch alarmes qui surveillent la charge sur les instances de votre environnement et sont déclenchées si la charge est trop élevée ou trop faible. Lorsqu'une alarme est déclenchée, votre groupe Auto Scaling s'adapte en fonction, à la hausse ou à la baisse.
+ **CloudFormation stack** — Elastic CloudFormation Beanstalk utilise pour lancer les ressources de votre environnement et propager les modifications de configuration. Les ressources sont définies dans un modèle, que vous pouvez afficher dans la [console CloudFormation](https://console.aws.amazon.com/cloudformation).
+  **Nom de domaine** : nom de domaine qui permet d'accéder à votre application Web dans le formulaire **subdomain*. *region*.elasticbeanstalk.com*. 

Elastic Beanstalk gère toutes ces ressources. Lorsque vous arrêtez votre environnement, Elastic Beanstalk arrête toutes les ressources qu'il contient.

## Étapes suivantes
<a name="java-quickstart-next-steps"></a>

Dès que vous disposez d'un environnement exécutant une application, vous pouvez à tout moment déployer une nouvelle version de l'application ou une application totalement différente. Le déploiement d'une nouvelle version d'application est très rapide, car il n'est pas nécessaire de mettre en service ni de redémarrer les instances EC2. Vous pouvez également explorer votre nouvel environnement à l'aide de la console Elastic Beanstalk. Pour connaître les étapes détaillées, consultez la section [Explorez votre environnement](GettingStarted.md#GettingStarted.Explore) dans le chapitre *Mise* en route de ce guide.

**Essayez d'autres didacticiels**  
Si vous souhaitez essayer d'autres didacticiels avec différents exemples d'applications, consultez[Exemples d'applications et de didacticiels](java-getstarted.md).

Une fois que vous avez déployé un ou deux exemples d'applications et que vous êtes prêt à commencer à développer et à exécuter des applications Java en local, voir[Configuration de votre environnement de développement Java](java-development-environment.md). 

## Déployez avec la console Elastic Beanstalk
<a name="java-quickstart-console"></a>

Vous pouvez également utiliser la console Elastic Beanstalk pour lancer l'exemple d'application. Pour connaître les étapes détaillées, voir [Création d'un exemple d'application](GettingStarted.md#GettingStarted.CreateApp) dans le chapitre *Mise* en route de ce guide.

# QuickStart: Déployer une application Web Java JSP pour Tomcat sur Elastic Beanstalk
<a name="tomcat-quickstart"></a>

Ce didacticiel explique le processus de création d'une application Web Java simple à l'aide de JavaServer Pages (JSPs). Si vous souhaitez regrouper plusieurs applications Web sous forme de fichiers WAR dans un seul environnement Elastic Beanstalk, consultez. [Création d'une offre groupée de plusieurs fichiers WAR pour les environnements Tomcat](java-tomcat-multiple-war-files.md)

**Non destiné à une utilisation en production**  
Les exemples sont destinés uniquement à des fins de démonstration. N'utilisez pas d'exemples d'applications en production.

**Topics**
+ [

## Votre AWS compte
](#tomcat-quickstart-aws-account)
+ [

## Conditions préalables
](#tomcat-quickstart-prereq)
+ [

## Étape 1 : Création d'une application Java JSP
](#tomcat-quickstart-create-app)
+ [

## Étape 2 : Déployez votre application Java JSP avec l'interface de ligne de commande EB
](#tomcat-quickstart-deploy)
+ [

## Étape 3 : Exécutez votre application sur Elastic Beanstalk
](#tomcat-quickstart-run-eb-ap)
+ [

## Étape 4 : nettoyer
](#go-tutorial-cleanup)
+ [

## AWS ressources pour votre application
](#tomcat-quickstart-eb-resources)
+ [

## Étapes suivantes
](#tomcat-quickstart-next-steps)
+ [

## Déployez avec la console Elastic Beanstalk
](#tomcat-quickstart-console)

## Votre AWS compte
<a name="tomcat-quickstart-aws-account"></a>

Si vous n'êtes pas encore AWS client, vous devez créer un AWS compte. L'inscription vous permet d'accéder à Elastic Beanstalk AWS et aux autres services dont vous avez besoin.

Si vous avez déjà un AWS compte, vous pouvez passer à[Conditions préalables](#tomcat-quickstart-prereq).

### Créez un AWS compte
<a name="tomcat-quickstart-aws-account-procedure"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, voir [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

## Conditions préalables
<a name="tomcat-quickstart-prereq"></a>

Pour suivre les procédures décrites dans ce guide, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes, les commandes sont précédées d'un symbole d'invite (\$1) et du nom du répertoire actuel, le cas échéant.

```
~/eb-project$ this is a command
this is output
```

Sous Linux et macOS, vous pouvez utiliser le shell et le gestionnaire de package de votre choix. Sur Windows, vous pouvez [installer le sous-système Windows pour Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) afin d'obtenir une version intégrée à Windows d'Ubuntu et de Bash.

### INTERFACE DE LIGNE DE COMMANDE (CLI) EB
<a name="tomcat-quickstart-prereq.ebcli"></a>

Ce tutoriel utilise également l'interface de ligne de commande Elastic Beanstalk (CLI EB). Pour de plus amples informations sur l'installation et la configuration de la CLI EB, veuillez consulter [Installation de la CLI EB avec un script de configuration (recommandé)](eb-cli3.md#eb-cli3-install) et [Configuration de l'interface de ligne de commande EB](eb-cli3-configuration.md).

## Étape 1 : Création d'une application Java JSP
<a name="tomcat-quickstart-create-app"></a>

Créez un répertoire de projet.

```
~$ mkdir eb-tomcat
~$ cd eb-tomcat
```

Créez ensuite une application qui vous allez déployer à l'aide d'Elastic Beanstalk. Nous allons créer une application Web « Hello World ».

Créez un fichier JSP simple nommé`index.jsp`.

**Example `~/eb-tomcat/index.jsp`**  

```
<html>
  <body>
    <%out.println("Hello Elastic Beanstalk!");%>
  </body>
</html>
```

## Étape 2 : Déployez votre application Java JSP avec l'interface de ligne de commande EB
<a name="tomcat-quickstart-deploy"></a>

Exécutez les commandes suivantes pour créer un environnement Elastic Beanstalk pour cette application.

 

**Pour créer un environnement et déployer votre application Java JSP**

1. Initialisez votre référentiel de la CLI EB avec la commande **eb init** :

   ```
   ~/eb-tomcat$ eb init -p tomcat tomcat-tutorial --region us-east-2
   ```

   Cette commande crée une application nommée `tomcat-tutorial` et configure votre référentiel local pour créer des environnements avec la dernière version de la plateforme Tomcat.

1. (facultatif) Exécutez à nouveau la commande **eb init** pour configurer une paire de clés par défaut afin de pouvoir vous connecter à l'instance EC2 qui exécute votre application.

   ```
   ~/eb-go$ eb init
   Do you want to set up SSH for your instances?
   (y/n): y
   Select a keypair.
   1) my-keypair
   2) [ Create new KeyPair ]
   ```

   Sélectionnez une paire de clés si vous en avez déjà une, ou suivez les invites pour en créer une. Si vous ne voyez pas l'invite ou que vous avez besoin de modifier vos paramètres ultérieurement, exécutez **eb init -i**.

1. Créez un environnement et déployez-y votre application avec **eb create**. Elastic Beanstalk crée automatiquement un fichier zip pour votre application et le démarre sur le port 5000.

   ```
   ~/eb-tomcat$ eb create tomcat-env
   ```

   Il faut environ cinq minutes à Elastic Beanstalk pour créer votre environnement.

## Étape 3 : Exécutez votre application sur Elastic Beanstalk
<a name="tomcat-quickstart-run-eb-ap"></a>

Lorsque le processus de création de votre environnement est terminé, ouvrez votre site Web avec**eb open**.

```
~/eb-tomcat$ eb open
```

Félicitations \$1 Vous avez déployé une application Java JSP avec Elastic Beanstalk \$1 Celle-ci ouvre une fenêtre de navigation en utilisant le nom de domaine créé pour votre application.

## Étape 4 : nettoyer
<a name="go-tutorial-cleanup"></a>

Vous pouvez mettre fin à votre environnement lorsque vous avez fini d'utiliser votre application. Elastic Beanstalk AWS met fin à toutes les ressources associées à votre environnement.

Pour mettre fin à votre environnement Elastic Beanstalk avec l'EB CLI, exécutez la commande suivante.

```
~/eb-tomcat$ eb terminate
```

## AWS ressources pour votre application
<a name="tomcat-quickstart-eb-resources"></a>

Vous venez de créer une application à instance unique. Il s'agit d'un exemple d'application simple avec une seule instance EC2. Il ne nécessite donc pas d'équilibrage de charge ni de dimensionnement automatique. Pour les applications à instance unique, Elastic Beanstalk crée les ressources suivantes : AWS 
+ **Instance EC2** – Une machine virtuelle Amazon EC2 configurée pour exécuter des applications web sur la plateforme de votre choix.

  Chaque plateforme exécute un ensemble distinct de logiciels, de fichiers de configuration et de scripts pour prendre en charge une version de langage, une infrastructure ou un conteneur web spécifiques, ou une combinaison de ces éléments. La plupart des plateformes utilisent Apache ou nginx comme proxy inverse qui traite le trafic web devant votre application web, lui transmet les demandes, traite les ressources statiques et génère des journaux d'accès et d'erreurs.
+ **Groupe de sécurité de l'instance** – Un groupe de sécurité Amazon EC2 configuré pour autoriser le trafic entrant sur le port 80. Cette ressource autorise le trafic HTTP provenant de l'équilibreur de charge à atteindre l'instance EC2 qui exécute votre application web. Par défaut, le trafic n'est pas autorisé sur les autres ports.
+ **Compartiment Amazon S3** – Emplacement de stockage pour votre code source, les journaux et autres artefacts qui sont créés lorsque vous utilisez Elastic Beanstalk.
+ ** CloudWatch Alarmes Amazon** : deux CloudWatch alarmes qui surveillent la charge sur les instances de votre environnement et sont déclenchées si la charge est trop élevée ou trop faible. Lorsqu'une alarme est déclenchée, votre groupe Auto Scaling s'adapte en fonction, à la hausse ou à la baisse.
+ **CloudFormation stack** — Elastic CloudFormation Beanstalk utilise pour lancer les ressources de votre environnement et propager les modifications de configuration. Les ressources sont définies dans un modèle, que vous pouvez afficher dans la [console CloudFormation](https://console.aws.amazon.com/cloudformation).
+  **Nom de domaine** : nom de domaine qui permet d'accéder à votre application Web dans le formulaire **subdomain*. *region*.elasticbeanstalk.com*. 

Elastic Beanstalk gère toutes ces ressources. Lorsque vous arrêtez votre environnement, Elastic Beanstalk arrête toutes les ressources qu'il contient.

## Étapes suivantes
<a name="tomcat-quickstart-next-steps"></a>

Dès que vous disposez d'un environnement exécutant une application, vous pouvez à tout moment déployer une nouvelle version de l'application ou une application totalement différente. Le déploiement d'une nouvelle version d'application est très rapide, car il n'est pas nécessaire de mettre en service ni de redémarrer les instances EC2. Vous pouvez également explorer votre nouvel environnement à l'aide de la console Elastic Beanstalk. Pour connaître les étapes détaillées, consultez la section [Explorez votre environnement](GettingStarted.md#GettingStarted.Explore) dans le chapitre *Mise* en route de ce guide.

**Essayez d'autres didacticiels**  
Si vous souhaitez essayer d'autres didacticiels avec différents exemples d'applications, consultez[Exemples d'applications et de didacticiels](java-getstarted.md).

Une fois que vous avez déployé un ou deux exemples d'applications et que vous êtes prêt à commencer à développer et à exécuter des applications Java dans un conteneur Web Tomcat local, consultez[Configuration de votre environnement de développement Java](java-development-environment.md). 

## Déployez avec la console Elastic Beanstalk
<a name="tomcat-quickstart-console"></a>

Vous pouvez également utiliser la console Elastic Beanstalk pour lancer l'exemple d'application. Pour connaître les étapes détaillées, voir [Création d'un exemple d'application](GettingStarted.md#GettingStarted.CreateApp) dans le chapitre *Mise* en route de ce guide.

# Configuration de votre environnement de développement Java
<a name="java-development-environment"></a>

Cette rubrique fournit des instructions pour configurer un environnement de développement Java afin de tester votre application localement avant de la déployer AWS Elastic Beanstalk. Il fait également référence à des sites Web qui fournissent des instructions d'installation pour des outils utiles.

**Topics**
+ [

## Installation du kit de développement Java
](#java-development-environment-jdk)
+ [

## Installation d'un conteneur web
](#java-development-environment-tomcat)
+ [

## Téléchargement de bibliothèques
](#java-development-environment-libraries)
+ [

## Installation du AWS SDK pour Java
](#java-development-environment-sdk)
+ [

## Installation d'un IDE ou d'un éditeur de texte
](#java-development-environment-ide)

## Installation du kit de développement Java
<a name="java-development-environment-jdk"></a>

Installez le kit de développement Java (JDK). Si vous n'avez pas de préférence, téléchargez la dernière version. Téléchargez le JDK sur [oracle.com](http://www.oracle.com/technetwork/java/javase/downloads/index.html) 

Le JDK inclut le compilateur Java, qui vous permet de créer vos fichiers source dans des fichiers de classe qui peuvent être exécutés sur un serveur web Elastic Beanstalk.

## Installation d'un conteneur web
<a name="java-development-environment-tomcat"></a>

Si vous ne possédez pas encore un autre conteneur ou framework Web, installez une version de Tomcat compatible avec Elastic Beanstalk pour votre système d'exploitation Amazon Linux. *Pour obtenir la liste des versions actuelles d'Apache Tomcat prises en charge par Elastic Beanstalk[,](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.java) consultez Tomcat dans le document Platforms.AWS Elastic Beanstalk * Téléchargez la version de Tomcat qui s'applique à votre environnement depuis le site Web d'[Apache Tomcat](http://tomcat.apache.org). 

## Téléchargement de bibliothèques
<a name="java-development-environment-libraries"></a>

Les plateformes Elastic Beanstalk incluent peu de bibliothèques par défaut. Téléchargez des bibliothèques que votre application va utiliser et enregistrez-les dans votre dossier de projet pour un déploiement dans le groupe source de votre application.

Si vous avez installé Tomcat localement, vous pouvez copier l'API du servlet et les bibliothèques de l'API JavaServer Pages (JSP) depuis le dossier d'installation. Si vous déployez sur une version de plateforme Tomcat, vous n'avez pas besoin d'inclure ces fichiers dans votre groupe source, mais vous devez les avoir dans votre `classpath` pour compiler toutes les classes qui les utilisent.

JUnit, Google Guava et Apache Commons fournissent plusieurs bibliothèques utiles. Visitez leurs pages d'accueil pour en savoir plus :
+  [Download JUnit](https://github.com/junit-team/junit/wiki/Download-and-Install) 
+  [Téléchargez Google Guava](https://code.google.com/p/guava-libraries/) 
+  [Téléchargez Apache Commons](http://commons.apache.org/downloads/) 

## Installation du AWS SDK pour Java
<a name="java-development-environment-sdk"></a>

Si vous devez gérer AWS des ressources depuis votre application, installez le AWS SDK for Java. Par exemple, avec le AWS SDK pour Java, vous pouvez utiliser Amazon DynamoDB (DynamoDB) pour partager les états de session des applications Apache Tomcat sur plusieurs serveurs Web. Pour plus d'informations, consultez [Gérer l'état de session Tomcat avec Amazon](https://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-tomcat-session-manager.html) DynamoDB dans la documentation du AWS SDK pour Java.

Visitez la [page d'accueil SDK AWS pour Java](https://aws.amazon.com/sdk-for-java/) pour de plus amples informations et des instructions d'installation.

## Installation d'un IDE ou d'un éditeur de texte
<a name="java-development-environment-ide"></a>

Les environnements de développement intégrés (IDEs) fournissent un large éventail de fonctionnalités qui facilitent le développement d'applications. Si vous n'avez pas utilisé un IDE pour le développement Java, testez Eclipse et IntelliJ puis évaluez voir ce qui vous convient le mieux.
+  [Installation d'IDE Eclipse pour Java EE Developers](https://www.eclipse.org/downloads/) 
+  [Installation d'IntelliJ](https://www.jetbrains.com/idea/) 

Un IDE peut ajouter des fichiers dans votre dossier de projet que vous pouvez ne pas souhaiter engager sur le contrôle de code source. Pour empêcher la validation de ces fichiers de contrôle de code source, utilisez `.gitignore` ou l'équivalent de votre outil de contrôle de source.

Si vous souhaitez simplement commencer le codage et que vous n'avez pas besoin de toutes les fonctionnalités d'un IDE, pensez à [installer Sublime Text](http://www.sublimetext.com/).

**Note**  
Le 31 mai 2023, il [AWS Toolkit for Eclipse](https://docs.aws.amazon.com//toolkit-for-eclipse/v1/user-guide/welcome.html)a atteint sa fin de vie et n'est plus pris en charge par AWS. Pour plus de détails concernant la fin du cycle de vie du AWS Toolkit for Eclipse, consultez le fichier [README.md](https://github.com/aws/aws-toolkit-eclipse) sur le référentiel. AWS Toolkit for Eclipse GitHub 

# Autres exemples d'applications et de didacticiels Elastic Beanstalk pour Java
<a name="java-getstarted"></a>

Cette section fournit des applications et des didacticiels supplémentaires. Les [QuickStart pour Java sur Tomcat](tomcat-quickstart.md) rubriques [QuickStart pour Java](java-quickstart.md) et décrites plus haut dans cette rubrique vous expliquent comment lancer un exemple d'application Java avec l'interface de ligne de commande EB.

Pour commencer à utiliser les applications Java AWS Elastic Beanstalk, il vous suffit d'un [bundle de sources](applications-sourcebundle.md) d'applications à télécharger en tant que première version de l'application et à déployer dans un environnement. Lorsque vous créez un environnement, Elastic Beanstalk alloue toutes les ressources AWS nécessaires pour exécuter une application web évolutive.

## Lancement d'un environnement avec un exemple d'application Java
<a name="java-getstarted-samples"></a>

Elastic Beanstalk fournit des exemples d'applications d'une seule page pour chaque plate-forme, ainsi que des exemples plus complexes illustrant l'utilisation de ressources AWS supplémentaires telles qu'Amazon RDS et des fonctionnalités spécifiques au langage ou à la plate-forme et. APIs

Les exemples de page unique correspondent au même code que celui que vous obtenez lorsque vous créez un environnement sans fournir votre propre code source. Les exemples les plus complexes sont hébergés sur un environnement Elastic Beanstalk GitHub et peuvent avoir besoin d'être compilés ou créés avant d'être déployés dans un environnement Elastic Beanstalk.

 


**Exemples**  

|  Nom  |  Versions prises en charge  |  Type d'environnement  |  Source  |  Description  | 
| --- | --- | --- | --- | --- | 
|  Tomcat (page unique)  |  Toutes les branches de plateforme *Tomcat avec Corretto*  |  Serveur web Nœuds  |   [tomcat.zip](samples/tomcat.zip)   |  Application web Tomcat avec une page unique (`index.jsp`) configurée pour s'afficher à la racine du site web. Pour les [environnements de travail](using-features-managing-env-tiers.md), cet exemple inclut un fichier `cron.yaml` qui configure une tâche planifiée afin d'appeler `scheduled.jsp` une fois par minute. Lorsque `scheduled.jsp` est appelé, il écrit dans un fichier journal à l'emplacement `/tmp/sample-app.log`. Enfin, un fichier de configuration est inclus dans `.ebextensions` et copie les journaux depuis `/tmp/` vers les emplacements lus par Elastic Beanstalk lorsque vous demandez les journaux de l'environnement. Si vous [activez l'intégration à X-Ray](environment-configuration-debugging.md) dans un environnement exécutant cet exemple, l'application affiche un contenu supplémentaire concernant X-Ray et fournit une option permettant de générer des informations de débogage que vous pouvez afficher dans la console X-Ray.  | 
|  Corretto (page unique)  |  Corretto Corretto 8  |  Serveur web  |  [corretto.zip](samples/corretto.zip)  |  Application Corretto avec fichiers de configuration `Buildfile` et `Procfile`. Si vous [activez l'intégration à X-Ray](environment-configuration-debugging.md) dans un environnement exécutant cet exemple, l'application affiche un contenu supplémentaire concernant X-Ray et fournit une option permettant de générer des informations de débogage que vous pouvez afficher dans la console X-Ray.  | 
|  Scorekeep  | Java 8 | Serveur web | [Clonez le dépôt sur .com GitHub](https://github.com/awslabs/eb-java-scorekeep) |  *Scorekeep* est une API RESTful Web qui utilise le framework Spring pour fournir une interface permettant de créer et de gérer des utilisateurs, des sessions et des jeux. Cette API est regroupée avec une application web Angular 1.5 qui utilise l'API sur HTTP. L'application utilise des fonctionnalités de la plateforme Java SE pour télécharger des dépendances et des instances intégrées, ce qui réduit la taille du bundle de fichiers source. L'application inclut également des fichiers de configuration nginx qui remplacent la configuration par défaut pour servir l'application web frontale de manière statique sur le port 80 via le proxy et acheminer les requêtes vers des chemins sous `/api` vers l'API s'exécutant sur `localhost:5000`. Scorekeep inclut également une branche `xray` qui montre comment instrumenter une application Java à utiliser avec AWS X-Ray. Il montre l'instrumentation des requêtes HTTP entrantes avec un filtre de servlet, l'instrumentation automatique et manuelle du client AWS SDK, la configuration de l'enregistreur et l'instrumentation des requêtes HTTP sortantes et des clients SQL. Pour obtenir des instructions, consultez le fichier readme ou utilisez le [Tutoriel de mise en route AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-gettingstarted.html) pour essayer l'application avec X-Ray.  | 
|  Does it Have Snakes?  | Tomcat 8 avec Java 8 | Serveur web | [Clonez le dépôt sur .com GitHub](https://github.com/awslabs/eb-tomcat-snakes) |  *Y a-t-il des serpents ?* est une application Web Tomcat qui montre l'utilisation des fichiers de configuration Elastic Beanstalk, d'Amazon RDS, de JDBC, de PostgreSQL, de JSPs Servlets, de Simple Tag Support, de Tag Files, de Log4J, de Bootstrap et de Jackson. Le code source de ce projet comprend un script de construction minimal qui compile les servlets et les modèles dans des fichiers de classe, et qui regroupe les fichiers requis dans une archive web que vous pouvez déployer dans un environnement Elastic Beanstalk. Pour obtenir des instructions complètes, consultez le fichier readme dans le référentiel du projet.  | 
| Locust Load Generator | Java 8 | Serveur web | [Clonez le dépôt sur .com GitHub](https://github.com/awslabs/eb-locustio-sample) |  Application web qui vous permet de tester le chargement d'une autre application web exécutée dans un autre environnement Elastic Beanstalk. Elle décrit l'utilisation des fichiers `Buildfile` et `Procfile`, de DynamoDB et de [Locust](http://locust.io/), un outil open source de test de charge.  | 

Téléchargez l'un des exemples d'application et déployez-le dans Elastic Beanstalk en procédant comme suit :

**Pour lancer un environnement avec une application (console)**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le volet de navigation, choisissez **Applications**. Sélectionnez une application existante dans la liste. Vous pouvez également choisir d'en créer un, en suivant les instructions de[Gestion des applications ](applications.md).

1. Sur la page de présentation de l'application, choisissez **Create environment**.

   Cela lance l'assistant de **création d'environnement**. L'assistant fournit un ensemble d'étapes vous permettant de créer un nouvel environnement.

1. Pour le **niveau environnement**, choisissez le niveau d'**environnement de serveur Web** ou **le [niveau d'environnement](concepts.md#concepts-tier)** de travail. Vous ne pouvez pas modifier le niveau d'un environnement après sa création.
**Note**  
La plateforme [.NET sur Windows Server](create_deploy_NET.md) ne prend pas en charge le niveau d'environnement worker.

   Les champs **d'informations de l'application** sont définis par défaut, en fonction de l'application que vous avez sélectionnée précédemment.

   Dans le groupe **d'informations sur l'environnement**, le **nom de l'environnement** est défini par défaut, en fonction du nom de l'application. Si vous préférez un autre nom d'environnement, vous pouvez saisir une autre valeur dans le champ. Vous pouvez éventuellement saisir un nom de **domaine**, sinon Elastic Beanstalk génère automatiquement une valeur. Vous pouvez également éventuellement saisir une **description de l'environnement.**

1. Pour **Platform (Plateforme)**, sélectionnez la plateforme et la branche de plateforme qui correspondent au langage utilisé par votre application.
**Note**  
Elastic Beanstalk prend en charge plusieurs [versions](concepts.platforms.md) pour la plupart des plateformes répertoriées. Par défaut, la console sélectionne la version recommandée pour la plateforme et la branche de plateforme que vous choisissez. Si votre application nécessite une version différente, vous pouvez la sélectionner ici. Pour plus d'informations sur les versions de plateforme prises en charge, consultez [Plateformes prises en charge par Elastic Beanstalk](concepts.platforms.md).

1. Pour le **code d'application**, plusieurs options s'offrent à vous pour continuer.
   + Pour lancer l'exemple d'application par défaut sans fournir le code source, choisissez **Exemple d'application**. Cette action permet de sélectionner l'application d'une seule page fournie par Elastic Beanstalk pour la plate-forme que vous avez sélectionnée précédemment.
   + Si vous avez téléchargé un exemple d'application à partir de ce guide, ou si vous avez votre propre code source pour une application, procédez comme suit.

     1. Sélectionnez **Téléverser votre code**.

     1. Choisissez ensuite **Fichier local**, puis sous **Télécharger l'application**, sélectionnez **Choisir un fichier**.

     1. Le système d'exploitation de votre machine cliente vous présentera une interface permettant de sélectionner le fichier local que vous avez téléchargé. Sélectionnez le fichier du bundle source et continuez.

1. Le choix des **préréglages** dépend de votre objectif pour l'environnement.
   + Si vous créez un exemple d'environnement pour en savoir plus sur Elastic Beanstalk ou un environnement de développement**, choisissez Instance unique** (éligible au niveau gratuit).
   + Si vous créez un environnement de production ou un environnement pour en savoir plus sur l'équilibrage de charge, choisissez l'une des options de **haute disponibilité**.

1. Choisissez **Suivant**.

**Pour configurer l'accès au service**  
Ensuite, vous avez besoin de deux rôles. Un *rôle de service* permet à Elastic Beanstalk de surveiller vos instances EC2 et de mettre à niveau la plateforme de votre environnement. Un rôle de *profil d'instance EC2* permet des tâches telles que la rédaction de journaux et l'interaction avec d'autres services.

**Pour créer ou sélectionner le rôle de service**

1. Si vous avez déjà créé un **rôle de service** et que vous souhaitez en choisir un existant, sélectionnez la valeur dans le menu déroulant **Rôle de service** et ignorez le reste de ces étapes pour créer un rôle de service.

1. Si aucune valeur n'est répertoriée pour le **rôle de service**, ou si vous souhaitez en créer un nouveau, passez aux étapes suivantes.

1. Pour **Rôle de service**, choisissez **Créer un rôle**.

1. Pour **Type d’entité de confiance**, choisissez **Service AWS **.

1. Dans le **cas d'utilisation**, choisissez **Elastic Beanstalk — Environment**.

1. Choisissez **Suivant**.

1. Vérifiez que **les politiques d'autorisations** incluent les éléments suivants, puis choisissez **Next** :
   + `AWSElasticBeanstalkEnhancedHealth`
   + `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`

1. Choisissez **Créer un rôle**.

1. Retournez à l'onglet **Configurer l'accès au service**, actualisez la liste, puis sélectionnez le rôle de service nouvellement créé.

**Pour créer ou sélectionner un profil d'instance EC2**

1. Si vous avez déjà créé un **profil d'instance EC2** et que vous souhaitez en choisir un existant, sélectionnez la valeur dans le menu déroulant du **profil d'instance EC2** et ignorez le reste de ces étapes pour créer un profil d'instance EC2.

1. Si aucune valeur n'est répertoriée pour le **profil d'instance EC2**, ou si vous souhaitez en créer un nouveau, passez aux étapes suivantes.

1. Choisissez **Créer un rôle**.

1. Pour **Type d’entité de confiance**, choisissez **Service AWS **.

1. Dans le **cas d'utilisation**, choisissez **Elastic Beanstalk — Compute**.

1. Choisissez **Suivant**.

1. Vérifiez que **les politiques d'autorisations** incluent les éléments suivants, puis choisissez **Next** :
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

1. Choisissez **Créer un rôle**.

1. Retournez à l'onglet **Configurer l'accès au service**, actualisez la liste, puis sélectionnez le profil d'instance EC2 nouvellement créé.

**Pour terminer la configuration et la création de votre application**

1. (Facultatif) Si vous avez déjà créé une paire de clés EC2, vous pouvez la sélectionner dans le menu déroulant du champ de **paire de clés EC2**. Vous l'utiliseriez pour vous connecter en toute sécurité à l'instance Amazon EC2 fournie par Elastic Beanstalk pour votre application. Si vous ignorez cette étape, vous pouvez toujours créer et attribuer une paire de clés EC2 une fois l'environnement créé. Pour de plus amples informations, veuillez consulter [EC2 paire de clés](using-features.managing.security.md#using-features.managing.security.keypair).

1. Choisissez **Skip to Review** (Passer à la révision) sur la page **Configure service access** (Configurer l’accès au service).

1. La page **Review** (Révision) affiche un résumé de tous vos choix.

   Pour personnaliser davantage votre environnement, choisissez **Edit** (Modifier) à côté de l'étape qui inclut les éléments que vous souhaitez configurer. Les options suivantes peuvent être définies uniquement lors de la création de l'environnement :
   + Nom de l'environnement
   + Nom de domaine
   + Version de la plateforme
   + Processeur
   + Type d'équilibreur de charge
   + Palier

   Vous pouvez modifier les paramètres suivants après la création de l'environnement, mais ils requièrent la mise en œuvre de nouvelles instances ou d'autres ressources et leur application peut prendre du temps :
   + Type d'instance, volume racine, paire de clés et rôle Gestion des identités et des accès AWS (IAM)
   + Base de données interne Amazon RDS
   + VPC

   Pour de plus amples informations sur tous les paramètres disponibles, veuillez consulter [Assistant de création d'un environnement](environments-create-wizard.md).

1. Choisissez **Submit** (Soumettre) en bas de la page pour initialiser la création de votre nouvel environnement.

## Étapes suivantes
<a name="java-getstarted-next"></a>

Une fois que vous disposez d'un environnement exécutant une application, vous pouvez [déployer une nouvelle version](using-features.deploy-existing-version.md) de l'application ou une application totalement différente à tout moment. Le déploiement d'une nouvelle version d'application est très rapide, car il n'est pas nécessaire de mettre en service ni de redémarrer les instances EC2.

Une fois que vous avez déployé un ou deux exemples d'application et que vous êtes prêt à développer et à exécuter des applications Java localement, consultez la [section suivante](java-development-environment.md) afin de configurer un environnement de développement Java avec tous les outils et les bibliothèques dont vous avez besoin.

# Utilisation de la plateforme Elastic Beanstalk Tomcat
<a name="java-tomcat-platform"></a>

Cette rubrique explique comment configurer, créer et exécuter vos applications Java qui s'exécutent sur la plateforme Elastic Beanstalk Tomcat.

La plate-forme AWS Elastic Beanstalk Tomcat est un ensemble de [versions de plate-forme pour les](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.java) applications Web Java qui peuvent s'exécuter dans un conteneur Web Tomcat. Tomcat s'exécute derrière un serveur proxy nginx. Chaque branche de plateforme correspond à une version majeure de Tomcat.

Des options de configuration sont disponibles dans la console Elastic Beanstalk pour [modifier la configuration d'un environnement en cours d'exécution](environment-configuration-methods-after.md). Pour éviter de perdre la configuration de votre environnement en le résiliant, vous pouvez utiliser des [configurations enregistrées](environment-configuration-savedconfig.md) pour enregistrer vos paramètres et les appliquer par la suite à un autre environnement.

Pour enregistrer les paramètres dans votre code source, vous pouvez inclure des [fichiers de configuration](ebextensions.md). Les paramètres des fichiers de configuration sont appliquées chaque fois que vous créez un environnement ou que vous déployez votre application. Vous pouvez également utiliser des fichiers de configuration pour installer des packages, exécuter des scripts ou effectuer d'autres opérations de personnalisation d'instance lors des déploiements.

La plateforme Tomcat Elastic Beanstalk inclut un proxy inverse qui transmet les demandes à votre application. Vous pouvez utiliser les [options de configuration](#java-tomcat-namespaces) pour configurer le serveur proxy de manière à traiter les ressources statiques à partir d'un dossier de votre code source afin de réduire la charge sur votre application. Pour les scénarios avancés, vous pouvez [inclure vos propres `.conf`fichiers](java-tomcat-proxy.md) dans votre bundle de fichiers source afin d'étendre la configuration proxy Elastic Beanstalk ou de la remplacer complètement.

**Note**  
Elastic Beanstalk prend en charge [nginx](https://www.nginx.com/) (valeur par défaut) et [Apache HTTP Server](https://httpd.apache.org/) en tant que serveurs proxy sur la plateforme Tomcat. Si votre environnement Elastic Beanstalk Tomcat utilise une branche de plateforme AMI Amazon Linux (antérieure à Amazon Linux 2), vous avez également la possibilité d'utiliser [Apache HTTP Server Version 2.2](https://httpd.apache.org/docs/2.2/). Apache (dernière version) est la valeur par défaut sur ces anciennes branches de plateforme.   
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

Vous devez compresser les applications Java dans un fichier WAR (Web application ARchive) avec une structure spécifique. Pour plus d'informations sur la structure à respecter et sur sa liaison à la structure de votre répertoire de projet, consultez [Structuration de votre dossier de projet](java-tomcat-platform-directorystructure.md).

Pour exécuter plusieurs applications sur le même serveur web, vous pouvez [regrouper plusieurs fichiers WAR](java-tomcat-multiple-war-files.md) dans un bundle source unique. Chaque application d'un bundle source multiple s'exécute soit sur le chemin d'accès racine (`ROOT.war` s'exécute dans `myapp.elasticbeanstalk.com/`), soit sur un chemin d'accès situé juste en dessous (`app2.war`.war s'exécute dans `myapp.elasticbeanstalk.com/app2/`), selon le nom du fichier WAR. Dans un bundle source WAR unique, l'application s'exécute toujours sur le chemin d'accès racine.

Les paramètres appliqués dans la console Elastic Beanstalk remplacent les mêmes paramètres des fichiers de configuration, s'ils existent. Cela vous permet d'utiliser les paramètres par défaut dans les fichiers de configuration et de les remplacer par des paramètres spécifiques à l'environnement dans la console. Pour plus d'informations sur la priorité et les autres méthodes de modification des paramètres, consultez [Options de configuration](command-options.md).

Pour plus d'informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, consultez [Extension des plateformes Linux Elastic Beanstalk](platforms-linux-extend.md).

**Topics**
+ [

## Configuration de votre environnement Tomcat
](#java-tomcat-options)
+ [

## Espaces de noms de la configuration Tomcat
](#java-tomcat-namespaces)
+ [

# Création d'une offre groupée de plusieurs fichiers WAR pour les environnements Tomcat
](java-tomcat-multiple-war-files.md)
+ [

# Structuration de votre dossier de projet
](java-tomcat-platform-directorystructure.md)
+ [

# Configuration du serveur proxy
](java-tomcat-proxy.md)

## Configuration de votre environnement Tomcat
<a name="java-tomcat-options"></a>

La plateforme Tomcat Elastic Beanstalk fournit quelques options propres à la plateforme en plus des options standard présentes sur toutes les plateformes. Ces options vous permettent de configurer la machine virtuelle Java (JVM) qui s'exécute sur les serveurs web de votre environnement et de définir les propriétés système qui fournissent les chaînes de configuration d'information à votre application.

Vous pouvez utiliser la console Elastic Beanstalk pour activer la rotation de journal sur Amazon S3 et configurer les variables que votre application peut lire depuis l'environnement.

**Pour configurer votre environnement Tomcat dans la console Elastic Beanstalk**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Mises à jour, surveillance et journalisation**, sélectionnez **Modifier**.

### Options de conteneur
<a name="java-tomcat-options-container"></a>

Vous pouvez spécifier ces options spécifiques à la plateforme :
+ **Proxy server (Serveur proxy)** – Serveur proxy à utiliser sur vos instances d'environnement. Le serveur nginx est utilisé par défaut.

### Options du conteneur JVM
<a name="java-tomcat-options-jvm"></a>

La taille du tas sur la machine virtuelle Java (JVM) détermine combien d'objets peuvent être créés en mémoire par votre application avant un *[nettoyage de la mémoire](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/introduction.html)*. Vous pouvez modifier les options **Initial JVM Heap Size** (`-Xms option`) et **Maximum JVM Heap Size** (argument `-Xmx`). Plus la taille initiale du tas est importante, plus le nombre d'objets pouvant être créés avant le nettoyage de la mémoire sera élevé. Toutefois, cela signifie également que le récupérateur de mémoire mettra plus de temps pour compacter le tas. La taille de tas maximale indique la quantité maximale de mémoire que la machine virtuelle Java peut allouer lorsqu'elle augmente le tas dans le cadre d'une activité intensive.

**Note**  
La mémoire disponible dépend du type d'instance Amazon EC2. Pour plus d'informations sur les types d'instances EC2 disponibles pour votre environnement Elastic Beanstalk, consultez [Types d'instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) dans le *Guide de l'utilisateur Amazon Elastic Compute Cloud pour les instances Linux*.

La *génération permanente* est une section du tas de la machine virtuelle Java qui stocke les définitions de classe et les métadonnées associées. Pour modifier la taille de la génération permanente, saisissez la nouvelle taille dans l'option Taille **maximale de la machine virtuelle Java PermGen ** (`-XX:MaxPermSize`). Ce paramètre s'applique uniquement à Java 7 et versions antérieures. **Cette option a été déconseillée dans le JDK 8 et remplacée par l'option Size (). MaxMetaspace** `-XX:MaxMetaspaceSize`

**Important**  
JDK 17 a supprimé la prise en charge de l'option Java `-XX:MaxPermSize`. L'utilisation de cette option avec un environnement s'exécutant sur une branche de plateforme Elastic Beanstalk avec Corretto 17 provoquera une erreur. Elastic Beanstalk a publié sa première branche de plateforme exécutant Tomcat avec Corretto 17 le [13 juillet 2023](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-07-13-al2023.html).  
Pour plus d'informations, veuillez consulter les ressources suivantes.  
Site Web de documentation Oracle Java : [Options Java supprimées](https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#removed-java-options) (français non garanti) 
Site Web de documentation Oracle Java : section *Métadonnées de classe* dans [Autres considérations](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html) (français non garanti)

Pour plus d'informations sur les plateformes Elastic Beanstalk et leurs composants, consultez la section [Plateformes prises en charge](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html) dans le guide *Plateformes AWS Elastic Beanstalk *.

### Options du journal
<a name="java-tomcat-options-logs"></a>

La section **Options du journal** a deux paramètres :
+ **Instance profile (Profil d'instance)** – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.
+ **Enable log file rotation to Amazon S3** (Permettre la rotation du fichier journal sur Amazon S3) – Indique si les fichiers journaux des instances Amazon EC2 de votre application doivent être copiés dans le compartiment Amazon S3 associé à votre application.

### Fichiers statiques
<a name="java-tomcat-options-staticfiles"></a>

Pour améliorer les performances, la section des **Fichiers statiques** vous permet de configurer le serveur proxy pour proposer des fichiers statiques (HTML ou images, par exemple) à partir d'un ensemble de répertoires dans votre application web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez [Service de fichiers statiques](environment-cfg-staticfiles.md).

### Propriétés de l'environnement
<a name="java-tomcat-options-properties"></a>

Dans la section **Environment Properties (Propriétés de l'environnement)**, vous pouvez spécifier des paramètres de configuration de l'environnement sur les instances Amazon EC2 exécutant votre application. Les propriétés de l'environnement sont passées en tant que paires clé-valeur à l'application. 

La plateforme Tomcat définit une propriété d'espace réservée nommée `JDBC_CONNECTION_STRING` pour les environnements Tomcat, permettant de transmettre une chaîne de connexion à une base de données externe.

**Note**  
Si vous attachez une instance de base de données RDS à votre environnement, construisez la chaîne de connexion JDBC dynamiquement à partir des propriétés d'environnement Amazon Relational Database Service (Amazon RDS) fournies par Elastic Beanstalk. Utilisez JDBC\$1CONNECTION\$1STRING uniquement pour les instances de base de données qui ne sont pas mises en service via Elastic Beanstalk.  
Pour plus d'informations sur l'utilisation d'Amazon RDS avec votre application Java, consultez [Ajouter une instance de base de données Amazon RDS à votre environnement Java Elastic Beanstalk](java-rds.md).

Pour les versions de la plateforme Tomcat publiées avant [le 26 mars 2025,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) les variables d'environnement sont accessibles à l'aide `System.getProperty()` de. Par exemple, vous pouvez lire une propriété nommée `API_ENDPOINT` à partir d'une variable avec le code suivant.

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

Les versions de la plateforme Tomcat publiées le [26 mars 2025](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) ou après cette date peuvent également être utilisées `System.getenv` pour accéder aux variables d'environnement en texte brut. Vous pouvez continuer à utiliser pour accéder `System.getProperty` aux variables d'environnement en texte brut. Cependant, les [variables d'environnement stockées sous forme de secrets](AWSHowTo.secrets.env-vars.md) ne sont disponibles qu'à l'aide de`System.getenv`. Par exemple, vous pouvez lire une variable d'environnement nommée `API_KEY` avec le code suivant.

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

**Important**  
L'ajout de l'`System.getenv()`accès aux variables d'environnement dans les versions de la plateforme Tomcat publiées le [26 mars 2025](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html) ou après cette date peut provoquer un comportement inattendu dans les applications qui accordent la priorité aux variables d'environnement sur les propriétés du système Java ou lors du passage explicite de à`System.getProperty()`. `System.getenv()`  
Étant donné que les propriétés système (transmises via la ligne de commande) nécessitent un échappement du shell pour les caractères spéciaux, contrairement aux variables d'environnement, les valeurs peuvent être résolues différemment lorsque vous utilisez des variables d'environnement plutôt que des propriétés système Java.  
Si votre application est concernée, pensez à :  
Suppression des caractères d'échappement des valeurs de propriétés de votre environnement lors de l'utilisation `System.getenv()`
Configuration de votre application pour une utilisation explicite `System.getProperty()`
Tester minutieusement votre application lors de la mise à niveau afin de garantir un comportement cohérent

Pour plus d'informations, consultez [Variables d'environnement et autres paramètres du logiciel](environments-cfg-softwaresettings.md).

## Espaces de noms de la configuration Tomcat
<a name="java-tomcat-namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

La plateforme Tomcat prend en charge les options des espaces de noms suivants en plus des [options prises en charge pour tous les environnements Elastic Beanstalk](command-options-general.md) :
+ `aws:elasticbeanstalk:container:tomcat:jvmoptions` : modifier les paramètres de la JVM. Les options de cet espace de noms correspondent aux options de la console de gestion, comme suit :
  + `Xms` – **JVM command line options (Options de ligne de commande de la JVM**
  + `JVM Options` – **JVM command line options (Options de ligne de commande de la JVM**
+ `aws:elasticbeanstalk:environment:proxy` : choisissez le serveur proxy de l'environnement.

L'exemple de fichier de configuration suivant illustre l'utilisation d'options de configuration spécifiques à 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
```

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d'informations, consultez [Options de configuration](command-options.md).

## Plateforme Tomcat d'AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="tomcat.alami"></a>

Si votre environnement Elastic Beanstalk Tomcat utilise une version de plateforme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2023Les branches/AL2 platform sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Espaces de noms de configuration Tomcat — AMI Amazon Linux () AL1
<a name="tomcat.alami.namespaces"></a>

La plateforme Tomcat d'AMI Amazon Linux prend en charge des options supplémentaires dans les espaces de noms suivants :
+ `aws:elasticbeanstalk:container:tomcat:jvmoptions` : en plus des options mentionnées précédemment sur cette page pour cet espace de noms, les anciennes versions de la plateforme AMI Amazon Linux prennent également en charge les éléments suivants :
  + `XX:MaxPermSize` – **Maximum JVM permanent generation size (Taille maximum de génération permanente de la JVM**
+ `aws:elasticbeanstalk:environment:proxy` : en plus de choisir le serveur proxy, configurez également la compression de réponse.

L'exemple de fichier de configuration suivant illustre l'utilisation d'options de configuration de l'espace de noms du proxy.

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

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

### Inclure les fichiers de configuration d'Elastic Beanstalk — Amazon Linux AMI () AL1
<a name="java-tomcat-ebextensions"></a>

Pour déployer les fichiers de configuration `.ebextensions`, incluez-les dans la source de votre application. S'il s'agit d'une seule application, ajoutez `.ebextensions` à un fichier WAR compressé en exécutant la commande suivante :

**Example**  

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

Pour une application nécessitant plusieurs fichiers WAR, consultez [Création d'une offre groupée de plusieurs fichiers WAR pour les environnements Tomcat](java-tomcat-multiple-war-files.md) pour plus d'informations.

# Création d'une offre groupée de plusieurs fichiers WAR pour les environnements Tomcat
<a name="java-tomcat-multiple-war-files"></a>

Si votre application web comporte plusieurs composants d'application web, vous pouvez simplifier les déploiements et réduire les coûts d'exploitation en exécutant les composants dans un environnement unique, au lieu d'exécuter un environnement distinct pour chaque composant. Cette stratégie est efficace pour les applications légères qui ne nécessitent pas beaucoup de ressources, ainsi que pour les environnements de développement et de test.

Pour déployer plusieurs applications web dans votre environnement, regroupez les fichiers WAR (web application archive) de chaque composant dans un même [bundle source](applications-sourcebundle.md).

Pour créer un bundle de fichiers source d'application qui contienne plusieurs fichiers WAR, organisez ces fichiers à l'aide de la structure suivante :

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

Lorsque vous déployez un ensemble de sources contenant plusieurs fichiers WAR AWS Elastic Beanstalk dans un environnement, chaque application est accessible via un chemin différent depuis le nom de domaine racine. L'exemple précédent comprend trois applications : `foo`, `bar` et `ROOT`. `ROOT.war` est un nom de fichier spécial qui demande à Elastic Beanstalk d'exécuter cette application au niveau du domaine racine, afin que les trois applications soient disponibles aux emplacements suivants : `http://MyApplication.elasticbeanstalk.com/foo`, `http://MyApplication.elasticbeanstalk.com/bar` et `http://MyApplication.elasticbeanstalk.com`.

Le bundle source peut inclure des fichiers WAR, un dossier `.ebextensions` facultatif et un dossier `.platform` facultatif. Pour de plus amples informations sur ces dossiers de configuration facultatifs, veuillez consulter [Extension des plateformes Linux Elastic Beanstalk](platforms-linux-extend.md).

**Pour lancer un environnement (console)**

1. [Ouvrez la console Elastic Beanstalk à l'aide de ce lien préconfiguré : console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Nom de l'application = Tutoriels](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced) et type d'environnement = LoadBalanced

1. Pour **Plateforme**, sélectionnez la plateforme et la branche de plateforme qui correspondent à la langue utilisée par votre application, ou la plateforme Docker pour les applications basées sur des conteneurs.

1. Pour **Application code (Code d'application)**, choisissez **Upload your code (Charger votre code)**.

1. Choisissez **Local file (Fichier local)**, **Choose file (Choisir un fichier)**, puis ouvrez le bundle source.

1. Choisissez **Vérifier et lancer**.

1. Vérifiez les paramètres disponibles et choisissez **Créer une application**.

Pour plus d'informations sur la création de groupes sources, consultez [Création d'un bundle de sources d'applications Elastic Beanstalk](applications-sourcebundle.md).

# Structuration de votre dossier de projet
<a name="java-tomcat-platform-directorystructure"></a>

Pour fonctionner lorsqu'ils sont déployés sur un serveur Tomcat, les fichiers WAR (web application archives) *Java EE* (Java Platform Enterprise Edition) compilés doivent être structurés selon certaines [directives](https://docs.oracle.com/javaee/7/tutorial/packaging003.htm). Votre répertoire de projet n'a pas besoin de respecter les mêmes normes, mais nous vous recommandons de le structurer de la même façon afin de simplifier la compilation et l'empaquetage. De plus, si vous structurez votre dossier de projet comme le contenu du fichier WAR, vous comprendrez mieux comment les fichiers sont liés et comment ils se comportent sur un serveur web.

Dans la hiérarchie recommandée ci-dessous, le code source de l'application web est placé dans un répertoire `src` afin de l'isoler du script de génération et du fichier WAR qu'il génère.

```
~/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
```

Le contenu du dossier `src` correspond à ce que vous allez empaqueter et déployer sur le serveur, à l'exception du dossier `com`. Le dossier `com` contient vos classes non compilées (fichiers `.java`). Ils doivent être compilés et placés dans le répertoire `WEB-INF/classes` afin d'être accessibles à partir du code de votre application.

Le répertoire `WEB-INF` contient le code et les configurations qui ne sont pas publiquement traités sur le serveur web. Les autres dossiers situés à la racine du répertoire source (`css`, `images` et `js`) sont publiquement disponibles à l'emplacement correspondant sur le serveur web.

L'exemple suivant est identique au répertoire de projet précédent, sauf qu'il contient davantage de fichiers et de sous-répertoires. Cet exemple de projet inclut des balises simples, des classes de modèle et de support, et un fichier Java Server Pages (JSP) pour une ressource `record`. Il inclut également une feuille de style et, JavaScript pour [Bootstrap](http://getbootstrap.com/), un fichier JSP par défaut et une page d'erreur pour les erreurs 404.

`WEB-INF/lib` inclut un fichier JAR (Java Archive) contenant le pilote JDBC (Java Database Connectivity) pour PostgreSQL. `WEB-INF/classes` est vide, car les fichiers de classe n'ont pas encore été compilés.

```
~/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
```

## Création d'un fichier WAR avec un script Shell
<a name="java-tomcat-platform-directorystructure-building"></a>

`build.sh` est un script shell très simple qui compile les classes Java, crée un fichier WAR et le copie dans le répertoire `webapps` de Tomcat pour les tests en local.

```
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 ../
```

Dans le fichier WAR, vous trouvez la même structure que celle du répertoire `src` figurant dans l'exemple précédent, à l'exception du dossier `src/com`. La commande `jar` crée automatiquement le fichier `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
```

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

Pour éviter de valider les fichiers de classe compilés et les fichiers WAR dans votre référentiel Git, ou de voir des messages les concernant lorsque vous exécutez les commandes Git, ajoutez les types de fichiers appropriés à un fichier nommé `.gitignore` dans votre dossier de projet.

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

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

# Configuration du serveur proxy
<a name="java-tomcat-proxy"></a>

La plateforme Tomcat utilise [nginx](https://www.nginx.com/) (par défaut) ou [Apache HTTP Server](https://httpd.apache.org/) comme proxy inverse pour relayer les requêtes du port 80 de l'instance vers votre conteneur web Tomcat écoutant sur le port 8080. Elastic Beanstalk fournit une configuration de proxy par défaut que vous pouvez étendre ou remplacer totalement par votre propre configuration.

**Configuration du serveur proxy sur la version de votre plateforme**  
Toutes les AL2 plateformes AL2023/prennent en charge une fonctionnalité de configuration de proxy uniforme. Pour plus d'informations sur la configuration du serveur proxy sur les versions de votre plate-forme exécutant AL2023/AL2, consultez[Configuration du proxy inverse](platforms-linux-extend.proxy.md). 

## Configuration du proxy sur la plateforme Tomcat d'AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="java-tomcat-proxy.alami"></a>

Si votre environnement Elastic Beanstalk Tomcat utilise une version de plateforme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations de cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2023Les branches/AL2 platform sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Choix d'un serveur proxy pour votre environnement Tomcat — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy.alami"></a>

Les versions de la plateforme Tomcat basées sur l'AMI Amazon Linux (antérieure à Amazon Linux 2) utilisent [Apache 2.4](https://httpd.apache.org/docs/2.4/) pour le proxy par défaut. Vous pouvez choisir d'utiliser [Apache 2.2](https://httpd.apache.org/docs/2.2/) ou [nginx](https://www.nginx.com/) en incluant un [fichier de configuration](ebextensions.md) dans votre code source. L'exemple suivant configure Elastic Beanstalk pour utiliser nginx.

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

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

### Migration d'Apache 2.2 vers Apache 2.4 — AMI Amazon Linux () AL1
<a name="java-tomcat-proxy-apache-migrate"></a>

Si votre application a été développée pour [Apache 2.2](https://httpd.apache.org/docs/2.2/), lisez cette section afin d'en savoir plus sur la migration vers [Apache 2.4](https://httpd.apache.org/docs/2.4/).

À compter de la version 3.0.0 de la plateforme Tomcat, qui a été publiée avec la [mise à jour de la plateforme Java avec Tomcat le 24 mai 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 est le proxy par défaut de la plateforme Tomcat. Les fichiers Apache 2.4 `.conf` sont pour la plupart, mais pas dans leur totalité, rétrocompatibles avec ceux d'Apache 2.2. Elastic Beanstalk inclut les fichiers `.conf` par défaut qui fonctionnent correctement avec chaque version Apache. Si votre application ne personnalise pas la configuration d'Apache, comme expliqué dans [Extension et remplacement de la configuration Apache par défaut — Amazon Linux AMI () AL1](#java-tomcat-proxy-apache), elle devrait migrer vers Apache 2.4 sans aucun problème.

Si votre application étend ou remplace la configuration d'Apache, il se peut que vous ayez à apporter certaines modifications pour migrer vers Apache 2.4. Pour plus d'informations, consultez [Mise à jour de la version 2.2 vers la version 2.4](https://httpd.apache.org/docs/current/upgrading.html) sur le site *The Apache Software Foundation*. Temporairement, tant que vous n'avez pas réussi à migrer vers Apache 2.4, vous pouvez choisir d'utiliser Apache 2.2 avec votre application en incluant le [fichier de configuration](ebextensions.md) suivant dans votre code source.

**Example extensions .eb/ .config apache-legacy-proxy**  

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

Pour une solution rapide, vous pouvez également sélectionner le serveur proxy dans la console Elastic Beanstalk.

**Pour sélectionner le proxy dans votre environnement Tomcat dans la console Elastic Beanstalk**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Mises à jour, surveillance et journalisation**, sélectionnez **Modifier**.

1. Pour **Serveur proxy**, choisissez `Apache 2.2 (deprecated)`.

1. Pour enregistrer les modifications, cliquez sur **Appliquer** en bas de la page.

![\[Choix du proxy pour un environnement Tomcat dans la catégorie de configuration des logiciels de la console Elastic Beanstalk\]](http://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/images/java-tomcat-proxy-selection.png)


### Extension et remplacement de la configuration Apache par défaut — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy-apache"></a>

Vous pouvez étendre la configuration Apache Elastic Beanstalk par défaut avec vos fichiers de configuration supplémentaires. Sinon, vous pouvez remplacer complètement la configuration Apache Elastic Beanstalk par défaut.

**Note**  
Toutes les plateformes Amazon Linux 2 prennent en charge une configuration de proxy uniforme. Pour plus d'informations sur la configuration du serveur proxy sur les versions de la plateforme Tomcat exécutant Amazon Linux 2, consultez[Configuration du proxy inverse](platforms-linux-extend.proxy.md).
Si vous migrez votre application Elastic Beanstalk vers une plateforme Amazon Linux 2, assurez-vous de consulter également les informations de la section [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

Pour étendre la configuration Apache Elastic Beanstalk par défaut, ajoutez les fichiers de configuration `.conf` à un dossier nommé `.ebextensions/httpd/conf.d` dans le bundle de fichiers source de votre application. La configuration Apache Elastic Beanstalk par défaut inclut automatiquement les fichiers `.conf` dans ce dossier.

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

Par exemple, la configuration Apache 2.4 suivante ajoute un écouteur sur le port 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>
```

Pour remplacer complètement la configuration Apache Elastic Beanstalk par défaut, incluez une configuration dans votre bundle de fichiers source sur `.ebextensions/httpd/conf/httpd.conf`.

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

Pour remplacer la configuration Apache Elastic Beanstalk par défaut, ajoutez les lignes suivantes à votre fichier `httpd.conf` afin d'extraire les configurations Elastic Beanstalk pour [Rapports et surveillance de l'état de santé améliorés dans Elastic Beanstalk](health-enhanced.md), la compression des réponses et les fichiers statiques.

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

Si votre environnement utilise Apache 2.2 comme proxy, remplacez les directives `IncludeOptional` par `Include`. Pour plus de détails sur le comportement de ces deux directives dans les deux versions d'Apache, voir [Include dans Apache 2.4](https://httpd.apache.org/docs/2.4/mod/core.html#include), [IncludeOptional dans Apache 2.4](https://httpd.apache.org/docs/2.4/mod/core.html#includeoptional) et [Include dans Apache 2.2](https://httpd.apache.org/docs/2.2/mod/core.html#include).

**Note**  
Pour remplacer l'écouteur par défaut sur le port 80, incluez un fichier nommé `00_application.conf` dans `.ebextensions/httpd/conf.d/elasticbeanstalk/` afin de remplacer la configuration Elastic Beanstalk.

Pour obtenir un exemple concret, veuillez consulter le fichier de configuration par défaut Elastic Beanstalk dans `/etc/httpd/conf/httpd.conf` sur une instance de votre environnement. Tous les fichiers du dossier `.ebextensions/httpd` de votre bundle de fichiers source sont copiés dans `/etc/httpd` au cours des déploiements.

### Extension de la configuration nginx par défaut — Amazon Linux AMI () AL1
<a name="java-tomcat-proxy-nginx"></a>

Pour étendre la configuration nginx par défaut d'Elastic Beanstalk, ajoutez les fichiers de configuration `.conf` dans un dossier nommé `.ebextensions/nginx/conf.d/` dans le bundle de fichiers source de votre application. La configuration nginx d'Elastic Beanstalk inclut automatiquement les fichiers `.conf` dans ce dossier.

```
~/workspace/my-app/
|-- .ebextensions
|   `-- nginx
|       `-- conf.d
|           |-- elasticbeanstalk
|           |   `-- my-server-conf.conf
|           `-- my-http-conf.conf
`-- index.jsp
```

Les fichiers dotés de l'extension .conf du dossier `conf.d` sont inclus dans le bloc `http` de la configuration par défaut. Les fichiers du dossier `conf.d/elasticbeanstalk` sont inclus dans le bloc `server` au sein du bloc `http`.

Pour remplacer complètement la configuration nginx par défaut d'Elastic Beanstalk, incluez une configuration dans votre bundle de fichiers source à l'emplacement `.ebextensions/nginx/nginx.conf`.

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

**Remarques**  
Pour remplacer la configuration nginx d'Elastic Beanstalk, ajoutez la ligne suivante au bloc `server` de votre configuration afin d'extraire les configurations Elastic Beanstalk pour l'écouteur du port 80, la compression des réponses et les fichiers statiques.  

  ```
   include conf.d/elasticbeanstalk/*.conf;
  ```
Pour remplacer l'écouteur par défaut sur le port 80, incluez un fichier nommé `00_application.conf` dans `.ebextensions/nginx/conf.d/elasticbeanstalk/` afin de remplacer la configuration Elastic Beanstalk.
Incluez également la ligne suivante dans le bloc `http` de votre configuration afin d'extraire les configurations Elastic Beanstalk pour [Rapports et surveillance de l'état de santé améliorés dans Elastic Beanstalk](health-enhanced.md) et la journalisation.  

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

Pour obtenir un exemple concret, veuillez consulter le fichier de configuration par défaut Elastic Beanstalk dans `/etc/nginx/nginx.conf` sur une instance de votre environnement. Tous les fichiers du dossier `.ebextensions/nginx` de votre bundle de fichiers source sont copiés dans `/etc/nginx` au cours des déploiements.

# Utilisation de la plateforme Java SE Elastic Beanstalk
<a name="java-se-platform"></a>

Cette rubrique décrit comment configurer, créer et exécuter vos applications Java qui s'exécutent sur la plate-forme AWS Elastic Beanstalk Java SE.

La plateforme Elastic Beanstalk Java SE est un [ensemble de versions de plate-forme pour les applications Web Java qui peuvent s'exécuter de](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase) manière autonome à partir d'un fichier JAR compilé. Vous pouvez compiler votre application en local ou télécharger le code source à l'aide d'un script de compilation pour le compiler sur l'instance. Les versions de la plate-forme Java SE sont regroupées en branches de plate-forme, chacune correspondant à une version majeure de Java.

**Note**  
Elastic Beanstalk n'analyse pas le fichier JAR de votre application. Conservez les fichiers dont Elastic Beanstalk a besoin en dehors du fichier JAR. Par exemple, incluez le fichier `cron.yaml` d'un [environnement de travail](using-features-managing-env-tiers.md) à la racine du bundle source de votre application, en regard du fichier JAR.

Des options de configuration sont disponibles dans la console Elastic Beanstalk pour [modifier la configuration d'un environnement en cours d'exécution](environment-configuration-methods-after.md). Pour éviter de perdre la configuration de votre environnement en le résiliant, vous pouvez utiliser des [configurations enregistrées](environment-configuration-savedconfig.md) pour enregistrer vos paramètres et les appliquer par la suite à un autre environnement.

Pour enregistrer les paramètres dans votre code source, vous pouvez inclure des [fichiers de configuration](ebextensions.md). Les paramètres des fichiers de configuration sont appliquées chaque fois que vous créez un environnement ou que vous déployez votre application. Vous pouvez également utiliser des fichiers de configuration pour installer des packages, exécuter des scripts ou effectuer d'autres opérations de personnalisation d'instance lors des déploiements.

La plateforme Java SE Elastic Beanstalk comprend un serveur [nginx](https://www.nginx.com/) qui agit comme un proxy inverse, traitant le contenu statique mis en cache et passant les demandes à votre application. La plateforme fournit également des options de configuration qui vous permettent de configurer le serveur proxy de manière à traiter les ressources statiques à partir d'un dossier de votre code source afin de réduire la charge sur votre application. Pour les scénarios avancés, vous pouvez [inclure vos propres fichiers .conf](java-se-nginx.md) dans votre bundle source afin d'étendre la configuration proxy d'Elastic Beanstalk ou de la remplacer complètement. 

Si vous fournissez un seul fichier JAR pour votre source d'application (seul, pas dans un bundle de fichiers source), Elastic Beanstalk renomme votre fichier JAR en `application.jar`, puis l'exécute à l'aide de `java -jar application.jar`. Pour configurer les processus qui s'exécutent sur les instances de serveur dans votre environnement, incluez un [fichier Procfile](java-se-procfile.md) facultatif dans votre bundle de fichiers source. Un fichier `Procfile` est requis si vous avez plusieurs fichiers JAR à la racine de votre bundle de fichiers source, ou si vous souhaitez personnaliser la commande Java pour définir des options JVM.

Nous vous recommandons de toujours fournir un `Procfile` dans le bundle source avec votre application. De cette façon, vous contrôlez précisément les processus Elastic Beanstalk qui s'exécutent pour votre application et les arguments que ces processus reçoivent.

Pour compiler des classes Java et exécuter d'autres commandes de génération sur les EC2 instances de votre environnement au moment du déploiement, incluez un [fichier de compilation dans le bundle](java-se-buildfile.md) de sources de votre application. A vous `Buildfile` permet de déployer votre code source tel quel et de le compiler sur le serveur au lieu de le compiler localement JARs . La plateforme Java SE inclut des outils de développement courants pour vous permettre de développer sur le serveur.

Pour de plus amples informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, veuillez consulter [Extension des plateformes Linux Elastic Beanstalk](platforms-linux-extend.md).

## Configuration de votre environnement Java SE
<a name="java-se-options"></a>

Les paramètres de la plateforme Java SE vous permettent d'affiner le comportement de vos EC2 instances Amazon. Vous pouvez modifier la configuration de l'instance Amazon de l'environnement Elastic Beanstalk à l'aide EC2 de la console Elastic Beanstalk.

Utilisez la console Elastic Beanstalk pour permettre la rotation des journaux sur Amazon S3 et configurer des variables que votre application peut lire à partir de l'environnement.

**Pour configurer votre environnement Java SE dans la console Elastic Beanstalk**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Mises à jour, surveillance et journalisation**, sélectionnez **Modifier**.

### Options du journal
<a name="java-se-options-logs"></a>

La section Options du journal a deux paramètres :
+ **Instance profile (Profil d'instance)** – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.
+ **Activer la rotation des fichiers journaux vers Amazon S3** : indique si les fichiers journaux des EC2 instances Amazon de votre application sont copiés dans le compartiment Amazon S3 associé à votre application.

### Fichiers statiques
<a name="java-se-options-staticfiles"></a>

Pour améliorer les performances, la section des **Fichiers statiques** vous permet de configurer le serveur proxy pour proposer des fichiers statiques (HTML ou images, par exemple) à partir d'un ensemble de répertoires dans votre application web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez [Service de fichiers statiques](environment-cfg-staticfiles.md).

### Propriétés de l'environnement
<a name="java-se-options-properties"></a>

La section **Propriétés de l'environnement** vous permet de définir les paramètres de configuration de l'environnement sur EC2 les instances Amazon qui exécutent votre application. Les propriétés de l'environnement sont passées en tant que paires clé-valeur à l'application.

Dans l'environnement Java SE en cours d'exécution dans Elastic Beanstalk, les variables d'environnement sont accessibles à l'aide de `System.getenv()`. Par exemple, vous pouvez lire une propriété nommée `API_ENDPOINT` sur une variable avec le code suivant :

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

Pour plus d'informations, consultez [Variables d'environnement et autres paramètres du logiciel](environments-cfg-softwaresettings.md).

## Espaces de noms de la configuration Java SE
<a name="java-se-namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

La plate-forme Java SE ne définit aucun espace de noms spécifique à la plate-forme. Vous pouvez configurer le proxy pour qu'il traite les fichiers statiques à l'aide de l'espace de noms `aws:elasticbeanstalk:environment:proxy:staticfiles`. Pour plus de détails et un exemple, reportez-vous à la section [Service de fichiers statiques](environment-cfg-staticfiles.md).

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d'informations, consultez [Options de configuration](command-options.md).

## La plate-forme Java SE d'AMI Linux Amazon (antérieure à Amazon Linux 2)
<a name="java-se.alami"></a>

Si votre environnement Java SE Elastic Beanstalk utilise une version de plate-forme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Espaces de noms de configuration Java SE — AMI Amazon Linux () AL1
<a name="java-se.alami.namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

La plateforme Java SE prend en charge l'espace de noms de configuration spécifique à la plateforme en plus des espaces de noms [ pris en charge par toutes les plateformes](command-options-general.md). L'espace de noms `aws:elasticbeanstalk:container:java:staticfiles` vous permet de définir des options qui mappe des chemins d'accès sur votre application web vers des dossiers dans le groupe source de votre application incluant le contenu statique.

Par exemple, cet extrait [option\$1settings](ebextensions-optionsettings.md) définit deux options dans l'espace de noms de fichiers statiques. La première mappe le chemin d'accès `/public` dans un dossier nommé `public` et la deuxième mappe le chemin d'accès `/images` dans un dossier nommé `img` :

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

Les dossiers que vous mappez à l'aide de cet espace de noms doivent être de véritables dossiers à la racine de votre groupe source. Vous ne pouvez pas mapper un chemin d'accès à un dossier dans un fichier JAR.

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d'informations, consultez [Options de configuration](command-options.md).

# Construire JARs sur le serveur avec un Buildfile
<a name="java-se-buildfile"></a>

Vous pouvez créer les fichiers de classe et les fichiers JAR de votre application sur les EC2 instances de votre environnement en invoquant une commande de construction à partir d'un `Buildfile` fichier de votre bundle source.

Les commandes dans un `Buildfile` sont exécutées une seule fois et doivent se terminer à la fin, tandis que les commandes dans un [Procfile](java-se-procfile.md) sont censées s'exécuter pendant la durée de vie de l'application et seront redémarrées si elles s'arrêtent. Pour exécuter le JARs dans votre application, utilisez un`Procfile`.

Pour plus de détails sur le placement et la syntaxe de a`Buildfile`, consultez[Buildfile et Procfile](platforms-linux-extend.build-proc.md).

L'exemple de `Buildfile` ci-dessous exécute Apache Maven pour générer une application web à partir du code source. Pour un exemple d'application qui utilise cette fonctionnalité, consultez [Exemples d'applications web Java](java-getstarted.md#java-getstarted-samples).

**Example BuildFile**  

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

La plateforme Java SE inclut les outils de génération suivants que vous pouvez appeler à partir de votre script de build :
+ `javac` : compilateur Java
+ `ant` : Apache Ant
+ `mvn` : Apache Maven
+ `gradle` : Gradle

# Configuration du processus de l'application avec un Procfile
<a name="java-se-procfile"></a>

Si vous avez plus d'un fichier JAR à la racine du groupe source de votre application, vous devez inclure un fichier `Procfile` qui indique à Elastic Beanstalk quels JAR exécuter. Vous pouvez également inclure un fichier `Procfile` pour une seule application JAR pour configurer la machine virtuelle Java (JVM) qui exécute votre application.

Nous vous recommandons de toujours fournir un `Procfile` dans le bundle source avec votre application. De cette façon, vous contrôlez précisément les processus Elastic Beanstalk qui s'exécutent pour votre application et les arguments que ces processus reçoivent.

Pour plus de détails sur l'écriture et l'utilisation d'un, `Procfile` voir[Buildfile et 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
```

La commande qui exécute le JAR principal dans votre application doit être appelée `web`, et il doit s'agir de la première commande figurant dans votre `Procfile`. Le serveur nginx transmet à cette application toutes les requêtes HTTP qu'il reçoit de l'équilibreur de charge de votre environnement.

Elastic Beanstalk part du principe que toutes les entrées dans Procfile doivent s'exécuter en permanence et redémarre automatiquement toute application définie dans le Procfile qui s'arrête. Pour exécuter des commandes qui s'arrêteront et ne devraient pas être redémarrées, utilisez un [`Buildfile`](java-se-buildfile.md).

## Utilisation d'un Procfile sur AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="java-se-procfile.alami"></a>

Si votre environnement Java SE Elastic Beanstalk utilise une version de plate-forme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations de cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

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

Par défaut, Elastic Beanstalk configure le serveur proxy nginx pour transmettre les demandes à votre application sur le port 5000. Vous pouvez remplacer le port par défaut en définissant la [propriété d'environnement](java-se-platform.md#java-se-options) `PORT` sur le port que votre application écoute.

Si vous utilisez un `Procfile` pour exécuter plusieurs applications, Elastic Beanstalk sur les versions de plateforme AMI Amazon Linux s'attend à ce que chaque application supplémentaire écoute sur un port 100 supérieur au précédent. Elastic Beanstalk définit la variable PORT accessible à partir de chaque application avec le port sur lequel il s'attend à ce que l'application s'exécute. Vous pouvez accéder à cette variable dans votre code d'application en appelant `System.getenv("PORT")`.

Dans l'exemple `Procfile` précédent, l'application `web` écoute sur le port 5000, `cache` écoute sur le port 5100 et `web_foo` écoute sur le port 5200. `web` configure son port d'écoute en lisant la variable `PORT` et ajoute 100 à ce nombre pour déterminer sur quel port `cache` écoute afin de pouvoir lui envoyer des demandes.

# Configuration du serveur proxy
<a name="java-se-nginx"></a>

Elastic Beanstalk utilise [nginx](https://www.nginx.com/) comme proxy inverse pour mapper votre application à votre équilibreur de charge Elastic Load Balancing sur le port 80. Elastic Beanstalk fournit une configuration nginx par défaut que vous pouvez étendre ou remplacer totalement par votre propre configuration.

Par défaut, Elastic Beanstalk configure le serveur proxy nginx pour transmettre les demandes à votre application sur le port 5000. Vous pouvez remplacer le port par défaut en définissant la [propriété d'environnement](java-se-platform.md#java-se-options) `PORT` sur le port que votre application écoute.

**Note**  
Le port que votre application écoute n'affecte pas le port que le serveur nginx écoute pour recevoir des demandes de l'équilibreur de charge.

**Configuration du serveur proxy sur la version de votre plateforme**  
Toutes les AL2 plateformes AL2 023/ prennent en charge une fonctionnalité de configuration de proxy uniforme. Pour plus d'informations sur la configuration du serveur proxy sur les versions de votre plate-forme exécutant AL2 023/AL2, consultez. [Configuration du proxy inverse](platforms-linux-extend.proxy.md) 

## Configuration du proxy sur l'AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="java-se-nginx.alami"></a>

Si votre environnement Java SE Elastic Beanstalk utilise une version de plate-forme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations de cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Extension et remplacement de la configuration du proxy par défaut — Amazon Linux AMI () AL1
<a name="java-se-nginx.alami.extending"></a>

Pour étendre la configuration nginx par défaut d'Elastic Beanstalk, ajoutez les fichiers de configuration `.conf` dans un dossier nommé `.ebextensions/nginx/conf.d/` dans le bundle de fichiers source de votre application. La configuration nginx Elastic Beanstalk inclut automatiquement les fichiers `.conf` dans ce dossier.

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

Pour remplacer complètement la configuration nginx Elastic Beanstalk par défaut, incluez une configuration dans votre bundle de fichiers source su `.ebextensions/nginx/nginx.conf`:

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

Si vous substituez une configuration nginx Elastic Beanstalk, ajoutez la ligne suivante à votre `nginx.conf` pour extraire les configurations Elastic Beanstalk pour [Rapports et surveillance de l'état de santé améliorés dans Elastic Beanstalk](health-enhanced.md), les mappages d'application automatiques et les fichiers statiques.

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

L'exemple de configuration suivant provenant de l'[exemple d'application Scorekeep](https://github.com/aws-samples/eb-java-scorekeep/) remplace la configuration Elastic Beanstalk par défaut pour servir une application web statique depuis le sous-répertoire `public` de `/var/app/current`, où la plateforme Java SE copie le code source de l'application. L'emplacement `/api` achemine le trafic vers des routes sous `/api/` jusqu'à l'application Spring à l'écoute sur le port 5000. Le reste du trafic est servi par l'application web au chemin racine.

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

# Ajouter une instance de base de données Amazon RDS à votre environnement Java Elastic Beanstalk
<a name="java-rds"></a>

Cette rubrique fournit des instructions pour créer un Amazon RDS à l'aide de la console Elastic Beanstalk. Vous pouvez utiliser une instance de base de données Amazon Relational Database Service (Amazon RDS) pour stocker les données que votre application recueille et modifie. La base de données peut être associée à votre environnement et gérée par Elastic Beanstalk, ou créée et gérée en externe.

Si vous utilisez Amazon RDS pour la première fois, ajoutez une instance de base de données à un environnement de test à l'aide de la console Elastic Beanstalk et assurez-vous que votre application peut s'y connecter. 

**Pour ajouter une instance DB à votre environnement**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Database (Base de données)**, choisissez **Edit (Modifier)**.

1. Choisissez un moteur de base de données, puis saisissez un nom d'utilisateur et un mot de passe.

1. Pour enregistrer les modifications, cliquez sur **Appliquer** en bas de la page.

L'ajout d'une instance DB prend environ 10 minutes. Une fois la mise à jour de l'environnement terminée, le nom d'hôte de l'instance DB et les autres informations de connexion sont disponibles dans votre application, via les propriétés d'environnement suivantes :


| Nom de la propriété | Description | Valeur de la propriété | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  Nom d'hôte de l'instance DB.  |  Sous l'onglet **Connectivity & security** (Connectivité et sécurité) de la console Amazon RDS : **Endpoint** (Point de terminaison).  | 
|  `RDS_PORT`  |  Port sur lequel l'instance de base de données accepte des connexions. La valeur par défaut varie selon les moteurs de base de données.  |  Sous l'onglet **Connectivity & security (Connectivité et sécurité)** de la console Amazon RDS : **Port**.  | 
|  `RDS_DB_NAME`  |  Nom de la base de données, **ebdb**.  |  Sous l'onglet **Configuration** de la console Amazon RDS : **DB Name (Nom de base de données)**.  | 
|  `RDS_USERNAME`  |  Nom d'utilisateur que vous avez configuré pour votre base de données.  |  Sous l'onglet **Configuration** de la console Amazon RDS : **Master username (Identifiant principal)**.  | 
|  `RDS_PASSWORD`  |  Mot de passe que vous avez configuré pour votre base de données.  |  Non disponible pour référence dans la console Amazon RDS.  | 

Pour de plus amples informations sur la configuration d'une instance de base de données interne, veuillez consulter [Ajout d'une base de données à votre environnement Elastic Beanstalk](using-features.managing.db.md). Pour de plus amples informations sur la configuration d'une base de données externe à utiliser avec Elastic Beanstalk, veuillez consulter [Utilisation d'Elastic Beanstalk avec Amazon RDS](AWSHowTo.RDS.md).

Pour vous connecter à la base de données, ajoutez le fichier JAR du pilote approprié à votre application, chargez la classe de pilote dans votre code et créez un objet de connexion avec les propriétés d'environnement fournies par Elastic Beanstalk.

**Topics**
+ [

## Téléchargement du pilote JDBC
](#java-rds-drivers)
+ [

## Connexion à une base de données (plateformes Java SE)
](#java-rds-javase)
+ [

## Connexion à une base de données (plateformes Tomcat)
](#java-rds-tomcat)
+ [

## Résolution des problèmes de connexion à une base de données
](#create_deploy_Java.rds.troubleshooting)

## Téléchargement du pilote JDBC
<a name="java-rds-drivers"></a>

Vous avez besoin du fichier JAR du pilote JDBC pour le moteur de base de données que vous choisissez. Enregistrez le fichier JAR dans votre code source et incluez-le dans votre chemin de classe lorsque vous compilez la classe qui crée les connexions à la base de données.

Vous trouverez le pilote le plus récent pour votre moteur de base de données dans les emplacements suivants :
+ **MySQL** : [MySQL Connector/J](https://dev.mysql.com/downloads/connector/j/)
+ **Oracle SE-1** : [pilote Oracle JDBC](http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html)
+ **Postgres** : [pilote PostgreSQL JDBC](https://jdbc.postgresql.org/)
+ **SQL Server** : [pilote Microsoft JDBC](https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx)

Pour utiliser le pilote JDBC, appelez `Class.forName()` afin de le charger avant de créer la connexion avec `DriverManager.getConnection()` dans votre code.

JDBC utilise une chaîne de connexion au format suivant :

```
jdbc:driver://hostname:port/dbName?user=userName&password=password
```

Vous pouvez récupérer le nom d'hôte, le port, le nom de la base de données, le nom d'utilisateur et le mot de passe dans les variables d'environnement qu'Elastic Beanstalk fournit à votre application. Le nom du pilote est spécifique à votre type de base de données et à la version de votre pilote. Voici des exemples de noms de pilote :
+ `mysql` pour MySQL
+ `postgresql` pour PostgreSQL
+ `oracle:thin` pour Oracle Thin
+ `oracle:oci` pour Oracle OCI
+ `oracle:oci8` pour Oracle OCI 8
+ `oracle:kprb` pour Oracle KPRB
+ `sqlserver` pour SQL Server

## Connexion à une base de données (plateformes Java SE)
<a name="java-rds-javase"></a>

Dans un environnement Java SE, utilisez `System.getenv()` pour lire les variables de connexion à partir de l'environnement. L'exemple de code suivant montre une classe qui crée une connexion à une base de données PostgreSQL.

```
private static Connection getRemoteConnection() {
    if (System.getenv("RDS_HOSTNAME") != null) {
      try {
      Class.forName("org.postgresql.Driver");
      String dbName = System.getenv("RDS_DB_NAME");
      String userName = System.getenv("RDS_USERNAME");
      String password = System.getenv("RDS_PASSWORD");
      String hostname = System.getenv("RDS_HOSTNAME");
      String port = System.getenv("RDS_PORT");
      String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbName + "?user=" + userName + "&password=" + password;
      logger.trace("Getting remote connection with connection string from environment variables.");
      Connection con = DriverManager.getConnection(jdbcUrl);
      logger.info("Remote connection successful.");
      return con;
    }
    catch (ClassNotFoundException e) { logger.warn(e.toString());}
    catch (SQLException e) { logger.warn(e.toString());}
    }
    return null;
  }
```

## Connexion à une base de données (plateformes Tomcat)
<a name="java-rds-tomcat"></a>

Dans un environnement Tomcat, les propriétés de l'environnement sont fournies sous la forme de propriétés système auxquelles vous pouvez accéder via `System.getProperty()`.

L'exemple de code suivant montre une classe qui crée une connexion à une base de données PostgreSQL.

```
private static Connection getRemoteConnection() {
    if (System.getProperty("RDS_HOSTNAME") != null) {
      try {
      Class.forName("org.postgresql.Driver");
      String dbName = System.getProperty("RDS_DB_NAME");
      String userName = System.getProperty("RDS_USERNAME");
      String password = System.getProperty("RDS_PASSWORD");
      String hostname = System.getProperty("RDS_HOSTNAME");
      String port = System.getProperty("RDS_PORT");
      String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbName + "?user=" + userName + "&password=" + password;
      logger.trace("Getting remote connection with connection string from environment variables.");
      Connection con = DriverManager.getConnection(jdbcUrl);
      logger.info("Remote connection successful.");
      return con;
    }
    catch (ClassNotFoundException e) { logger.warn(e.toString());}
    catch (SQLException e) { logger.warn(e.toString());}
    }
    return null;
  }
```

Si vous rencontrez des difficultés pour obtenir une connexion ou exécuter des instructions SQL, essayez d'insérer le code suivant dans un fichier JSP. Ce code se connecte à une instance de base de données, crée une table et écrit dedans.

```
<%@ page import="java.sql.*" %>
<%
  // Read RDS connection information from the environment
  String dbName = System.getProperty("RDS_DB_NAME");
  String userName = System.getProperty("RDS_USERNAME");
  String password = System.getProperty("RDS_PASSWORD");
  String hostname = System.getProperty("RDS_HOSTNAME");
  String port = System.getProperty("RDS_PORT");
  String jdbcUrl = "jdbc:mysql://" + hostname + ":" +
    port + "/" + dbName + "?user=" + userName + "&password=" + password;
  
  // Load the JDBC driver
  try {
    System.out.println("Loading driver...");
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("Driver loaded!");
  } catch (ClassNotFoundException e) {
    throw new RuntimeException("Cannot find the driver in the classpath!", e);
  }

  Connection conn = null;
  Statement setupStatement = null;
  Statement readStatement = null;
  ResultSet resultSet = null;
  String results = "";
  int numresults = 0;
  String statement = null;

  try {
    // Create connection to RDS DB instance
    conn = DriverManager.getConnection(jdbcUrl);
    
    // Create a table and write two rows
    setupStatement = conn.createStatement();
    String createTable = "CREATE TABLE Beanstalk (Resource char(50));";
    String insertRow1 = "INSERT INTO Beanstalk (Resource) VALUES ('EC2 Instance');";
    String insertRow2 = "INSERT INTO Beanstalk (Resource) VALUES ('RDS Instance');";
    
    setupStatement.addBatch(createTable);
    setupStatement.addBatch(insertRow1);
    setupStatement.addBatch(insertRow2);
    setupStatement.executeBatch();
    setupStatement.close();
    
  } catch (SQLException ex) {
    // Handle any errors
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());
  } finally {
    System.out.println("Closing the connection.");
    if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
  }

  try {
    conn = DriverManager.getConnection(jdbcUrl);
    
    readStatement = conn.createStatement();
    resultSet = readStatement.executeQuery("SELECT Resource FROM Beanstalk;");

    resultSet.first();
    results = resultSet.getString("Resource");
    resultSet.next();
    results += ", " + resultSet.getString("Resource");
    
    resultSet.close();
    readStatement.close();
    conn.close();

  } catch (SQLException ex) {
    // Handle any errors
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());
  } finally {
       System.out.println("Closing the connection.");
      if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
  }
%>
```

Pour afficher les résultats, insérez le code suivant dans le corps de la partie HTML du fichier JSP.

```
<p>Established connection to RDS. Read first two rows: <%= results %></p>
```

## Résolution des problèmes de connexion à une base de données
<a name="create_deploy_Java.rds.troubleshooting"></a>

**Essayez Amazon Q Developer CLI pour un dépannage assisté par l'IA**  
 La CLI Amazon Q Developer peut vous aider à résoudre rapidement les problèmes d'environnement. La Q CLI fournit des solutions en vérifiant l'état de l'environnement, en examinant les événements, en analysant les journaux et en posant des questions de clarification. Pour plus d'informations et des instructions détaillées, consultez la section [Résolution des problèmes liés aux environnements Elastic Beanstalk avec Amazon](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/) Q Developer CLI dans les blogs. AWS 

Si vous rencontrez des problèmes pour vous connecter à une base de données à partir de votre application, consultez la base de données et le journal du conteneur web.

### Examen des journaux
<a name="create_deploy_Java.rds.troubleshooting.logs"></a>

Vous pouvez afficher tous les journaux de votre environnement Elastic Beanstalk depuis Eclipse. Si la vue AWS Explorateur n'est pas ouverte, cliquez sur la flèche située à côté de l' AWS icône orange dans la barre d'outils, puis choisissez **Afficher la vue AWS Explorateur**. Développez **AWS Elastic Beanstalk** et le nom de votre environnement, puis ouvrez le menu contextuel (clic droit) pour le serveur. Choisissez **Open in WTP Server Editor (Ouvrir dans WTP Server Editor)**. 

 Choisissez l'onglet **Log (Journal)** de la vue **Server (Serveur)** afin de visualiser les journaux cumulés provenant de votre environnement. Pour ouvrir les journaux les plus récents, cliquez sur le bouton **Refresh (Actualiser)** dans l'angle supérieur droit de la page. 

 Faites défiler la page afin de trouver les journaux Tomcat dans `/var/log/tomcat7/catalina.out`. Si vous avez chargé plusieurs fois la page web issue de notre exemple précédent, les données ci-dessous devraient s'afficher : 

```
-------------------------------------
/var/log/tomcat7/catalina.out
-------------------------------------
INFO: Server startup in 9285 ms
Loading driver...
Driver loaded!
SQLException: Table 'Beanstalk' already exists
SQLState: 42S01
VendorError: 1050
Closing the connection.
Closing the connection.
```

Toutes les informations envoyées par l'application à la sortie standard s'affichent dans le journal du conteneur web. Dans l'exemple précédent, l'application tente de créer la table à chaque chargement de la page. Cela se traduit par l'interception d'une exception SQL pour chaque chargement de page après le premier. 

L'exemple qui précède est acceptable. Toutefois, dans des applications réelles, vous devez conserver vos définitions de base de données dans les objets de schéma, effectuer les transactions à partir des classes de modèle et coordonner les demandes avec des servlets contrôleurs.

### Connexion à une instance DB RDS
<a name="create_deploy_Java.rds.troubleshooting.connecting"></a>

 Vous pouvez vous connecter directement à l'instance de base de données RDS dans votre environnement Elastic Beanstalk à l'aide de l'application cliente MySQL. 

 Commencez par ouvrir le groupe de sécurité dans votre instance DB RDS afin d'autoriser le trafic provenant de votre ordinateur. 

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Database (Base de données)**, choisissez **Edit (Modifier)**.

1. À côté de l'option **Endpoint (Point de terminaison)**, choisissez le lien de la console Amazon RDS.

1. Sur la page des détails de l'instance **RDS Dashboard (Tableau de bord RDS)**, sous **Security and Network (Sécurité et réseau)**, sélectionnez le groupe de sécurité commençant par *rds-* en regard de **Security Groups (Groupes de sécurité)**.
**Note**  
La base de données peut comporter plusieurs entrées associées au libellé **Security Groups (Groupes de sécurité)**. Utilisez le premier, qui commence par *awseb*, uniquement si vous avez un compte plus ancien qui n'a pas d'[Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) par défaut.

1. Dans **Security group details (Détails du groupe de sécurité)**, cliquez sur l'onglet **Inbound (Entrant)**, puis choisissez **Edit (Modifier)**.

1. Ajoutez une règle pour MySQL (port 3306) qui autorise le trafic provenant de votre adresse IP, spécifiée au format CIDR.

1. Choisissez **Enregistrer**. Les modifications prennent effet immédiatement.

 Revenez sur la page des détails de configuration Elastic Beanstalk pour votre environnement et notez le point de terminaison. Vous devrez utiliser le nom de domaine pour vous connecter à l'instance DB RDS. 

 Installez le client MySQL et lancez une connexion à la base de données sur le port 3306. Sous Windows, installez MySQL Workbench à partir de la page d'accueil MySQL et suivez les instructions. 

 Sous Linux, installez le client MySQL en utilisant le gestionnaire de package correspondant à votre distribution. L'exemple suivant fonctionne sur Ubuntu et d'autres dérivés Debian. 

```
// Install MySQL client
$ sudo apt-get install mysql-client-5.5
...
// Connect to database
$ mysql -h aas839jo2vwhwb.cnubrrfwfka8.us-west-2.rds.amazonaws.com -u username -ppassword ebdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 117
Server version: 5.5.40-log Source distribution
...
```

Une fois connecté, vous pouvez exécuter les commandes SQL pour afficher l'état de la base de données, savoir si vos tables et vos lignes ont été créées, et obtenir d'autres informations. 

```
mysql> SELECT Resource from Beanstalk;
+--------------+
| Resource     |
+--------------+
| EC2 Instance |
| RDS Instance |
+--------------+
2 rows in set (0.01 sec)
```

# Outils et ressources Java
<a name="create_deploy_Java.resources"></a>

Il existe plusieurs endroits auxquels vous pouvez accéder pour obtenir une aide supplémentaire lors du développement de vos applications Java.


****  

|  Ressource  |  Description  | 
| --- | --- | 
|  [Le forum de développement AWS Java](https://forums.aws.amazon.com/forum.jspa?forumID=70)  | Posez vos questions et obtenez des commentaires.  | 
|  [Centre pour développeurs Java](https://aws.amazon.com/java/)  | Guichet unique pour l'exemple de code, la documentation, les outils et les ressources supplémentaires. | 