

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

En este tema se describe cómo configurar, crear y ejecutar las aplicaciones Java que se ejecutan en la plataforma AWS Elastic Beanstalk Java SE.

La plataforma Java SE de Elastic Beanstalk es un conjunto de [versiones de plataforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase) para aplicaciones web Java que se pueden ejecutar por sí solas a partir de un archivo JAR compilado. Puede compilar su aplicación localmente o cargar el código fuente con un script de compilación para compilarlo en la instancia. Las versiones de la plataforma Java SE se agrupan en ramas de plataforma, cada una de las cuales corresponde a una versión principal de Java.

**nota**  
Elastic Beanstalk no analiza el archivo JAR de su aplicación. Mantenga los archivos que necesita Elastic Beanstalk fuera del archivo JAR. Por ejemplo, incluya el archivo `cron.yaml` de un [entorno de trabajo](using-features-managing-env-tiers.md) en la raíz del paquete de código fuente de la aplicación junto al archivo JAR.

En la consola de Elastic Beanstalk hay opciones de configuración disponibles para [modificar la configuración de un entorno en ejecución](environment-configuration-methods-after.md). Para evitar perder la configuración del entorno cuando lo termina, puede usar las [configuraciones guardadas](environment-configuration-savedconfig.md) para guardar la configuración y aplicarla posteriormente a otro entorno.

Para guardar la configuración en el código fuente, puede incluir [archivos de configuración](ebextensions.md). Los valores de configuración de los archivos de configuración se aplican cada vez que crea un entorno o que implementa la aplicación. También puede usar archivos de configuración para instalar paquetes, ejecutar scripts y llevar a cabo otras operaciones de personalización de instancias durante las implementaciones.

La plataforma Java SE de Elastic Beanstalk incluye un servidor [nginx](https://www.nginx.com/) que actúa como proxy inverso, que sirve contenido estático almacenado en caché y pasa solicitudes a su aplicación. La plataforma proporciona también opciones para configurar el servidor proxy y atender recursos estáticos de una carpeta del código fuente con el fin de reducir la carga en su aplicación. Para escenarios avanzados, puede [incluir sus propios archivos .conf](java-se-nginx.md) en el paquete de código fuente para ampliar la configuración del proxy de Elastic Beanstalk o sobrescribirla completamente. 

Si solo proporciona un único archivo JAR para el código fuente de la aplicación (por sí mismo, no dentro de un paquete de código fuente), Elastic Beanstalk cambia el nombre de su archivo JAR a `application.jar` y, a continuación, lo ejecuta usando `java -jar application.jar`. Para configurar los procesos que se ejecutan en las instancias de servidor en su entorno, incluya un [Procfile](java-se-procfile.md) opcional en su paquete de código fuente. El `Procfile` es necesario si tiene más de un JAR en la raíz del paquete de código fuente, o bien si desea personalizar el comando Java para establecer opciones de JVM.

Le recomendamos que siempre proporcione un paquete `Procfile` en el origen junto con su aplicación. De esta forma, puede controlar con precisión qué procesos ejecuta Elastic Beanstalk para su aplicación y qué argumentos reciben estos procesos.

Para compilar clases de Java y ejecutar otros comandos de compilación en las EC2 instancias de su entorno en el momento de la implementación, incluya un [archivo de compilación en el paquete](java-se-buildfile.md) de código fuente de la aplicación. A te `Buildfile` permite implementar el código fuente tal como está y compilarlo en el servidor en lugar de compilarlo localmente. JARs La plataforma Java SE incluye herramientas de compilación comunes que le permiten compilar en el servidor.

Para obtener más información sobre las diversas formas en las que puede ampliar una plataforma Elastic Beanstalk basada en Linux, consulte [Ampliación de las plataformas Linux de Elastic Beanstalk](platforms-linux-extend.md).

## Configuración del entorno de Java SE
<a name="java-se-options"></a>

La configuración de la plataforma Java SE le permite ajustar el comportamiento de sus instancias de Amazon EC2 . Puede editar la configuración de instancias de Amazon del entorno de Elastic Beanstalk mediante EC2 la consola de Elastic Beanstalk.

Utilice la consola de Elastic Beanstalk para habilitar la rotación de registros en Amazon S3 y configurar variables que la aplicación pueda leer desde el entorno.

**Para configurar el entorno Java SE en la consola de Elastic Beanstalk**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

1. En el panel de navegación, elija **Environments** (Entornos) y, a continuación, elija el nombre del entorno en la lista.

1. En el panel de navegación, elija **Configuración**.

1. En la categoría de configuración **Actualizaciones, supervisión y registro**, seleccione **Edición de**.

### Log Options (Opciones de registro)
<a name="java-se-options-logs"></a>

La sección Log Options tiene dos valores:
+ **Instance profile (Perfil de instancia)**: especifica el perfil de instancia que tiene permiso para obtener acceso al bucket de Amazon S3 asociado con la aplicación.
+ **Habilite la rotación de archivos de registro a Amazon S3**: especifica si los archivos de registro de las EC2 instancias de Amazon de su aplicación se copian en el bucket de Amazon S3 asociado a su aplicación.

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

Para mejorar el rendimiento, puede utilizar la sección **Static files** (Archivos estáticos) para configurar el servidor proxy para entregar archivos estáticos de servidor (por ejemplo, HTML o imágenes) desde un conjunto de directorios dentro de su aplicación web. Para cada directorio, se establece la ruta virtual para la asignación de directorios. Cuando el servidor proxy recibe una solicitud de un archivo en la ruta especificada, proporciona directamente el archivo en lugar de direccionar la solicitud la aplicación.

Para obtener más información sobre la configuración de archivos estáticos mediante archivos de configuración o la consola de Elastic Beanstalk, consulte [Distribución de archivos estáticos](environment-cfg-staticfiles.md).

### Propiedades del entorno
<a name="java-se-options-properties"></a>

La sección **Propiedades del entorno** le permite especificar los ajustes de configuración del entorno en las EC2 instancias de Amazon que ejecutan su aplicación. Las propiedades del entorno se pasan como pares de clave-valor a la aplicación.

Dentro del entorno de Java SE que se ejecuta en Elastic Beanstalk, es posible acceder a las variables de entorno mediante `System.getenv()`. Por ejemplo, podría leer una propiedad denominada `API_ENDPOINT` en una variable con el siguiente código:

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

Para obtener más información, consulte [Configuración de las variables de entorno y otras opciones de software](environments-cfg-softwaresettings.md).

## Espacios de nombres de configuración de Java SE
<a name="java-se-namespaces"></a>

Puede usar un [archivo de configuración](ebextensions.md) para definir opciones de configuración y realizar otras tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración pueden ser [específicas de la plataforma](command-options-specific.md) o aplicarse a [todas las plataformas](command-options-general.md) del servicio de Elastic Beanstalk en su conjunto. Las opciones de configuración se organizan en *espacios de nombres*.

La plataforma Java SE no define ningún espacio de nombres específico de la plataforma. Puede configurar el proxy para que sirva archivos estáticos mediante el espacio de nombres `aws:elasticbeanstalk:environment:proxy:staticfiles`. Para obtener información detallada y un ejemplo, consulte [Distribución de archivos estáticos](environment-cfg-staticfiles.md).

Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además de los archivos de configuración, también puede definir opciones en la consola, configuraciones guardadas, la CLI de EB o la AWS CLI. Para obtener más información, consulte [Opciones de configuración](command-options.md).

## Plataforma Java SE de la AMI de Amazon Linux (anterior a Amazon Linux 2)
<a name="java-se.alami"></a>

Si su entorno Java SE de Elastic Beanstalk utiliza una versión de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.

**Notas**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.
 [El 18 de julio de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI AL1 de Amazon Linux () como retiradas.** Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte [Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Espacios de nombres de configuración de Java SE: AMI de Amazon Linux () AL1
<a name="java-se.alami.namespaces"></a>

Puede usar un [archivo de configuración](ebextensions.md) para definir opciones de configuración y realizar otras tareas de configuración en las instancias durante las implementaciones. Las opciones de configuración pueden ser [específicas de la plataforma](command-options-specific.md) o aplicarse a [todas las plataformas](command-options-general.md) del servicio de Elastic Beanstalk en su conjunto. Las opciones de configuración se organizan en *espacios de nombres*.

La plataforma Java SE admite un espacio de nombres de configuración específico de la plataforma, además de los [espacios de nombres compatibles con todas las plataformas](command-options-general.md). El espacio de nombres `aws:elasticbeanstalk:container:java:staticfiles` le permite definir opciones que asignen las rutas de su aplicación web a carpetas del paquete de código fuente de la aplicación que incluyen contenido estático.

Por ejemplo, este fragmento de [option\$1settings](ebextensions-optionsettings.md) define dos opciones en el espacio de nombres de archivos estáticos. La primera asigna la ruta `/public` a una carpeta con el nombre `public` y la segunda asigna la ruta `/images` a una carpeta con el nombre `img`:

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

Las carpetas que se asignan a través de este espacio de nombres deben ser carpetas reales situadas en la raíz del paquete de código fuente. No puede asignar una ruta a una carpeta en un archivo JAR.

Elastic Beanstalk cuenta con numerosas opciones de configuración para personalizar el entorno. Además de los archivos de configuración, también puede definir opciones en la consola, configuraciones guardadas, la CLI de EB o la AWS CLI. Para obtener más información, consulte [Opciones de configuración](command-options.md).

# Construir JARs en el servidor con un Buildfile
<a name="java-se-buildfile"></a>

Puede crear los archivos de clases y los JAR de su aplicación en las EC2 instancias de su entorno invocando un comando de compilación desde un `Buildfile` archivo de su paquete de código fuente.

Los comandos de un `Buildfile` solo se ejecutan una vez y deben terminar cuando se completen, mientras que se espera que los comandos de un [Procfile](java-se-procfile.md) se ejecuten durante el ciclo de vida de la aplicación y se reinicien si terminan. Para ejecutarlos JARs en tu aplicación, usa un`Procfile`.

Para obtener más información sobre la ubicación y la sintaxis de un `Buildfile`, consulte [Buildfile y Procfile](platforms-linux-extend.build-proc.md).

El siguiente ejemplo de `Buildfile` ejecuta Apache Maven para compilar una aplicación web a partir de código fuente. Consulte los [ejemplos de aplicaciones web Java](java-getstarted.md#java-getstarted-samples) para ver una aplicación de muestra que utilice esta característica.

**Example Buildfile**  

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

La plataforma Java SE incluye las siguientes herramientas de compilación, que puede invocar desde un script de compilación:
+ `javac`: compilador de Java
+ `ant`: Apache Ant
+ `mvn`: Apache Maven
+ `gradle`: Gradle

# Configuración del proceso de la aplicación con un Procfile
<a name="java-se-procfile"></a>

Si tiene más de un archivo JAR en la raíz del paquete de código fuente de su aplicación, debe incluir un archivo `Procfile` que indique a Elastic Beanstalk qué archivos JAR debe ejecutar. También puede incluir un archivo `Procfile` para una sola aplicación JAR para configurar la máquina virtual Java (JVM) que ejecuta su aplicación.

Le recomendamos que siempre proporcione un paquete `Procfile` en el origen junto con su aplicación. De esta forma, puede controlar con precisión qué procesos ejecuta Elastic Beanstalk para su aplicación y qué argumentos reciben estos procesos.

Para obtener más información sobre cómo escribir y usar un `Procfile`, consulte [Buildfile y 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
```

El comando que ejecuta el archivo JAR principal de su aplicación debe llamarse `web` y debe ser el primer comando incluido en el archivo `Procfile`. El servidor nginx reenvía todas las solicitudes HTTP que recibe del equilibrador de carga de su entorno a esta aplicación.

Elastic Beanstalk asume que todas las entradas del archivo Procfile deben ejecutarse en todo momento y reinicia automáticamente todas las aplicaciones definidas en el archivo Procfile que termina. Para ejecutar comandos que terminan y no deben reiniciarse, utilice un [`Buildfile`](java-se-buildfile.md).

## Uso de un archivo Procfile en la AMI de Amazon Linux (anterior a Amazon Linux 2)
<a name="java-se-procfile.alami"></a>

Si su entorno Java SE de Elastic Beanstalk utiliza una versión de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.

**Notas**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.
 [El 18 de julio de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI AL1 de Amazon Linux () como retiradas.** Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte [Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Transferencia de puertos: AMI de Amazon Linux (AL1)
<a name="java-se-procfile.alami.ports"></a>

De forma predeterminada, Elastic Beanstalk configura el proxy nginx para reenviar las solicitudes a la aplicación en el puerto 5000. Puede invalidar el puerto predeterminado estableciendo la [propiedad del entorno](java-se-platform.md#java-se-options) `PORT` en el puerto en el que desea que la aplicación principal esté a la escucha.

Si utiliza un `Procfile` para ejecutar varias aplicaciones, Elastic Beanstalk en las versiones de la plataforma de la AMI de Amazon Linux espera que cada aplicación adicional esté a la escucha en un puerto 100 mayor que el anterior. Elastic Beanstalk establece la variable PORT accesible desde cada aplicación en el puerto en el que espera que se ejecute la aplicación. Puede tener acceso a esta variable en el código de su aplicación llamando a `System.getenv("PORT")`.

En el `Procfile` de ejemplo anterior, la aplicación `web` está a la escucha en el puerto 5000, `cache` en el puerto 5100 y `web_foo` en el puerto 5200. `web` configura su puerto de escucha leyendo la variable `PORT` y añade 100 a dicho número para determinar en qué puerto `cache` está a la escucha para poder enviarle solicitudes.

# Configuración del servidor proxy
<a name="java-se-nginx"></a>

Elastic Beanstalk utiliza [nginx](https://www.nginx.com/) como proxy inverso para asignar su aplicación al equilibrador de carga de Elastic Load Balancing en el puerto 80. Elastic Beanstalk proporciona una configuración de nginx predeterminada que puede ampliar o anular por completo con su propia configuración.

De forma predeterminada, Elastic Beanstalk configura el proxy nginx para reenviar las solicitudes a la aplicación en el puerto 5000. Puede invalidar el puerto predeterminado estableciendo la [propiedad del entorno](java-se-platform.md#java-se-options) `PORT` en el puerto en el que desea que la aplicación principal esté a la escucha.

**nota**  
El puerto en que su aplicación está a la escucha no afecta al puerto en el que el servidor nginx está a la escucha para recibir las solicitudes del equilibrador de carga.

**Configuración del servidor proxy en la versión de su plataforma**  
Todas las AL2 plataformas AL2 023/ admiten una función de configuración de proxy uniforme. Para obtener más información sobre la configuración del servidor proxy en las versiones de su plataforma que ejecutan AL2 AL2 023/, consulte. [Configuración del proxy inverso](platforms-linux-extend.proxy.md) 

## Configuración del proxy en la AMI de Amazon Linux (anterior a Amazon Linux 2)
<a name="java-se-nginx.alami"></a>

Si su entorno Java SE de Elastic Beanstalk utiliza una versión de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.

**Notas**  
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y *requieren ajustes de configuración diferentes*.
 [El 18 de julio de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI AL1 de Amazon Linux () como retiradas.** Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte [Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Ampliación y anulación de la configuración de proxy predeterminada: AMI de Amazon Linux () AL1
<a name="java-se-nginx.alami.extending"></a>

Para ampliar la configuración predeterminada de nginx de Elastic Beanstalk, añada los archivos de configuración `.conf` a una carpeta con el nombre `.ebextensions/nginx/conf.d/` en el paquete de código fuente de su aplicación. La configuración de nginx de Elastic Beanstalk incluye archivos `.conf` en esta carpeta automáticamente.

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

Para anular por completo la configuración de nginx predeterminada de Elastic Beanstalk, incluya una configuración en el paquete de código fuente en `.ebextensions/nginx/nginx.conf`:

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

Si anula la configuración de nginx de Elastic Beanstalk, agregue la siguiente línea a su `nginx.conf` para extraer las configuraciones de Elastic Beanstalk de [Informes y monitoreo de estado mejorados de Elastic Beanstalk](health-enhanced.md), los mapeos automáticos de la aplicación y los archivos estáticos.

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

La siguiente configuración de ejemplo de la [aplicación de muestra Scorekeep](https://github.com/aws-samples/eb-java-scorekeep/) sustituye la configuración predeterminada de Elastic Beanstalk para servir una aplicación web estática desde el subdirectorio `public` de `/var/app/current`, donde la plataforma Java SE copia el código fuente de la aplicación. La ubicación `/api` reenvía el tráfico a las rutas en `/api/` a la aplicación Sprint que escucha en el puerto 5000. La aplicación web sirve el resto del tráfico en la ruta raíz.

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