

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.

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