

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Elastic Beanstalk Java SE 平台
<a name="java-se-platform"></a>

本主题介绍如何配置、生成和运行在 Java SE 平台上运行的 AWS Elastic Beanstalk Java 应用程序。

Elastic Beanstalk Java SE 平台是一组[平台版本](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase)，适用于可通过已编译的 JAR 文件自行运行的 Java Web 应用程序。您可以在本地编译应用程序，或将源代码与生成脚本一起上传以便在实例中对其进行编译。Java SE 平台版本分组到平台分支中，每个分支均对应 Java 的一个主要版本。

**注意**  
Elastic Beanstalk 不会分析应用程序的 JAR 文件。将 Elastic Beanstalk 需要的文件保存在 JAR 文件外部。例如，在应用程序的源包的根目录下的 JAR 文件旁边放置[工作线程环境](using-features-managing-env-tiers.md)的 `cron.yaml` 文件。

Elastic Beanstalk 控制台中提供了配置选项，可用于[修改运行环境的配置](environment-configuration-methods-after.md)。要避免在终止环境时丢失环境配置，可以使用[保存的配置](environment-configuration-savedconfig.md)来保存您的设置，并在以后将这些设置应用到其他环境。

要保存源代码中的设置，您可以包含[配置文件](ebextensions.md)。在您每次创建环境或部署应用程序时，会应用配置文件中的设置。您还可在部署期间使用配置文件来安装程序包、运行脚本以及执行其他实例自定义操作。

Elastic Beanstalk Java SE 平台包含一个 [nginx](https://www.nginx.com/) 服务器，该服务器用作反向代理，向您的应用程序提供缓存的静态内容并传递请求。平台提供了配置选项，以便将代理服务器配置为从源代码中的文件夹提供静态资源，从而减少应用程序上的负载。有关高级方案，您可以在源包中[包括您自己的 .conf 文件](java-se-nginx.md)，以扩展 Elastic Beanstalk 的代理配置或完全重写它。

如果您仅为应用程序源提供单个 JAR 文件（单独提供而不是包含在源包中），则 Elastic Beanstalk 会将 JAR 文件重命名为 `application.jar`，然后使用 `java -jar application.jar` 运行它。要配置在您的环境中的服务器实例上运行的进程，请在您的源包中包含一个可选的 [Procfile](java-se-procfile.md)。如果您的源包根目录中有多个 JAR 或者您要自定义 java 命令来设置 JVM 选项，必须使用 `Procfile`。

我们建议您始终在源包中将 `Procfile` 与应用程序一起提供。通过这种方式，您可以精确控制 Elastic Beanstalk 为您的应用程序运行的进程以及这些进程接收的参数。

要编译 Java 类并在部署时对环境中的 EC2 实例运行其他构建命令，请在应用程序源包中包含一个 [Buildfile](java-se-buildfile.md)。A `Buildfile` 允许您按原样部署源代码并在服务器上构建，而不是在 JARs 本地编译。Java SE 平台包含常用的生成工具，允许您在服务器上执行生成操作。

有关扩展 Elastic Beanstalk 基于 Linux 的平台的各种方法的详细信息，请参阅[扩展 Elastic Beanstalk Linux 平台](platforms-linux-extend.md)。

## 配置 Java SE 环境
<a name="java-se-options"></a>

Java SE 平台设置允许您微调亚马逊 EC2 实例的行为。您可以使用 Elastic Beanstalk 控制台编辑 Elastic Beanstalk 环境 EC2 的亚马逊实例配置。

使用 Elastic Beanstalk 控制台启用到 Amazon S3 的日志轮换，并配置应用程序可从环境中读取的变量。

**在 Elastic Beanstalk 控制台中配置 Java SE 环境**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

### 日志选项
<a name="java-se-options-logs"></a>

“日志选项”部分有两个设置：
+ **Instance profile**（实例配置文件）– 指定有权访问与应用程序关联的 Amazon S3 存储桶的实例配置文件。
+ **启用向 Amazon S3 的日志文件轮换-指定是否将**应用程序的 Amazon EC2 实例的日志文件复制到与您的应用程序关联的 Amazon S3 存储桶中。

### 静态文件
<a name="java-se-options-staticfiles"></a>

为了提高性能，您可以使用 **Static files**（静态文件）部分配置代理服务器，以便从 Web 应用程序内的一组目录提供静态文件（例如 HTML 或图像）。对于每个目录，您都将虚拟路径设置为目录映射。当代理服务器收到对指定路径下的某个文件的请求时，它将直接提供此文件，而不是将请求路由至您的应用程序。

有关使用配置文件或 Elastic Beanstalk 控制台配置静态文件的详细信息，请参阅 [提供静态文件](environment-cfg-staticfiles.md)。

### 环境属性
<a name="java-se-options-properties"></a>

**环境属性**部分允许您在运行您的应用程序的 Amazon EC2 实例上指定环境配置设置。环境属性会以密钥值对的形式传递到应用程序。

在运行于 Elastic Beanstalk 中的 Java SE 环境内，可通过使用 `System.getenv()` 访问环境变量。例如，您可以使用以下代码将名为 `API_ENDPOINT` 的属性读取到某个变量：

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

参阅 [环境变量和其他软件设置](environments-cfg-softwaresettings.md) 了解更多信息。

## Java SE 配置命名空间
<a name="java-se-namespaces"></a>

您可以使用[配置文件](ebextensions.md)设置配置选项并在部署期间执行其他实例配置。配置选项可以[特定于平台](command-options-specific.md)，也可以应用于整个 Elastic Beanstalk 服务中的[所有平台](command-options-general.md)。配置选项被组织到*命名空间*中。

Java SE 平台不定义任何特定于平台的命名空间。您可以使用 `aws:elasticbeanstalk:environment:proxy:staticfiles` 命名空间将代理配置为提供静态文件。有关详细信息和示例，请参阅[提供静态文件](environment-cfg-staticfiles.md)。

Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件之外，您还可使用控制台、保存的配置、EB CLI 或 AWS CLI来配置选项。参阅 [配置选项](command-options.md) 了解更多信息。

## Amazon Linux AMI（在 Amazon Linux 2 之前）的 Java SE 平台
<a name="java-se.alami"></a>

如果您的 Elastic Beanstalk Java SE 环境使用 Amazon Linux AMI 平台版本（在 Amazon Linux 2 之前），请阅读本节中的其他信息。

**注意**  
本主题中的信息仅适用于基于亚马逊 Linux AMI (AL1) 的平台分支。 AL2023/ AL2 平台分支与之前的 Amazon Linux AMI (AL1) 平台版本不兼容，*需要不同的配置设置*。
 [2022 年 7 月 18 日，](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)**Elastic Beanstalk 将所有基于亚马逊 Linux AMI AL1 () 的平台分支的状态设置为停用。**有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息，请参阅 [将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md)。

### Java SE 配置命名空间 — 亚马逊 Linux AMI () AL1
<a name="java-se.alami.namespaces"></a>

您可以使用[配置文件](ebextensions.md)设置配置选项并在部署期间执行其他实例配置。配置选项可以[特定于平台](command-options-specific.md)，也可以应用于整个 Elastic Beanstalk 服务中的[所有平台](command-options-general.md)。配置选项被组织到*命名空间*中。

Java SE 平台除支持[所有平台支持的命名空间](command-options-general.md)外，还支持一个平台特定的配置命名空间。使用 `aws:elasticbeanstalk:container:java:staticfiles` 命名空间可以定义一些选项，通过它们将您的 Web 应用程序路径映射到应用程序源包中包含静态内容的文件夹。

例如，此 [option\$1settings](ebextensions-optionsettings.md) 代码段在静态文件命名空间中定义了两个选项。第一个选项将路径 `/public` 映射到名为 `public` 的文件夹，第二个选项将路径 `/images` 映射到名为 `img` 的文件夹：

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

通过此命名空间映射的文件夹必须为源包根目录中实际存在的文件夹。不能将路径映射到 JAR 文件中的文件夹。

Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件之外，您还可使用控制台、保存的配置、EB CLI 或 AWS CLI来配置选项。参阅 [配置选项](command-options.md) 了解更多信息。