

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan platform Java SE Elastic Beanstalk
<a name="java-se-platform"></a>

Topik ini menjelaskan cara mengkonfigurasi, membangun, dan menjalankan aplikasi Java Anda yang berjalan di platform AWS Elastic Beanstalk Java SE.

Platform Elastic Beanstalk Java SE adalah [seperangkat versi platform untuk aplikasi web Java yang dapat berjalan sendiri dari](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.javase) file JAR yang dikompilasi. Anda dapat mengompilasi aplikasi Anda secara lokal atau mengunggah kode sumber dengan penulisan membangun untuk mengompilasinya pada instans. Versi platform Java SE dikelompokkan ke dalam cabang platform, yang masing-masing sesuai dengan versi utama Java.

**catatan**  
Elastic Beanstalk tidak mengurai file JAR aplikasi Anda. Jauhkan file yang dibutuhkan Elastic Beanstalk di luar file JAR. Sebagai contoh, sertakan file `cron.yaml` [lingkungan pekerja](using-features-managing-env-tiers.md) di akar paket sumber aplikasi Anda, di sebelah file JAR.

Opsi konfigurasi tersedia di konsol Elastic Beanstalk untuk [memodifikasi konfigurasi dari lingkungan yang sedang berjalan](environment-configuration-methods-after.md). Agar Anda tidak kehilangan konfigurasi lingkungan ketika mengakhirinya, Anda dapat menggunakan [konfigurasi tersimpan](environment-configuration-savedconfig.md) untuk menyimpan pengaturan dan kemudian menerapkannya ke lingkungan lain.

Untuk menyimpan pengaturan di kode sumber, Anda dapat menyertakan [file konfigurasi](ebextensions.md). Pengaturan di file konfigurasi diterapkan setiap kali Anda membuat lingkungan atau men-deploy aplikasi Anda. Anda juga dapat menggunakan file konfigurasi untuk menginstal paket, menjalankan penulisan, dan melakukan operasi penyesuaian instans lainnya selama deployment.

Platform Java SE Elastic Beanstalk mencakup server [nginx](https://www.nginx.com/) yang bertindak sebagai proksi terbalik, melayani cache konten statis dan meneruskan permintaan ke aplikasi Anda. Platform menyediakan opsi konfigurasi untuk mengonfigurasi server proksi untuk melayani aset statis dari folder di kode sumber Anda untuk mengurangi beban di aplikasi Anda. Untuk skenario lanjutan, Anda dapat [menyertakan file .conf milik Anda sendiri](java-se-nginx.md) di paket sumber Anda untuk memperluas konfigurasi proksi Elastic Beanstalk atau menimpa sepenuhnya. 

Jika Anda hanya menyediakan satu file JAR untuk sumber aplikasi Anda (sendiri, tidak di paket sumber), Elastic Beanstalk mengganti nama file JAR Anda menjadi `application.jar`, dan kemudian menjalankannya menggunakan `java -jar application.jar`. Untuk mengonfigurasi proses yang berjalan di instans server di lingkungan Anda, sertakan [Procfile](java-se-procfile.md) opsional di paket sumber Anda. `Procfile` diperlukan jika Anda memiliki lebih dari satu JAR di akar paket sumber Anda, atau jika Anda ingin menyesuaikan perintah java untuk mengatur opsi JVM.

Kami merekomendasikan agar Anda selalu menyediakan `Procfile` di paket sumber di samping aplikasi Anda. Dengan cara ini, Anda secara tepat mengontrol proses mana yang dijalankan Elastic Beanstalk untuk aplikasi Anda dan argumen yang diterima proses ini.

Untuk mengkompilasi kelas Java dan menjalankan perintah build lainnya pada EC2 instance di lingkungan Anda pada waktu penerapan, sertakan [Buildfile](java-se-buildfile.md) dalam bundel sumber aplikasi Anda. A `Buildfile` memungkinkan Anda menerapkan kode sumber apa adanya dan membangun di server alih-alih mengkompilasi JARs secara lokal. Platform Java SE termasuk alat membangun umum untuk membiarkan Anda membangun pada server.

Untuk detail tentang berbagai cara memperluas platform berbasis Linux Elastic Beanstalk, lihat [Memperluas platform Linux Elastic Beanstalk](platforms-linux-extend.md).

## Mengonfigurasi lingkungan Java SE Anda
<a name="java-se-options"></a>

Pengaturan platform Java SE memungkinkan Anda menyempurnakan perilaku instans Amazon EC2 Anda. Anda dapat mengedit konfigurasi instans Amazon lingkungan Elastic Beanstalk menggunakan konsol EC2 Elastic Beanstalk.

Gunakan konsol Elastic Beanstalk untuk mengaktifkan rotasi log ke Amazon S3 dan mengonfigurasi variabel yang dapat dibaca aplikasi Anda dari lingkungan.

**Untuk mengonfigurasi lingkungan Java SE Anda di konsol Elastic Beanstalk**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

1. Di panel navigasi, pilih **Lingkungan**, dan kemudian pilih nama lingkungan Anda dari daftar.

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Dalam kategori konfigurasi **Pembaruan, pemantauan, dan pencatatan**, pilih **Edit**.

### Opsi log
<a name="java-se-options-logs"></a>

Bagian Opsi Log memiliki dua pengaturan:
+ **Profil instans** – Menentukan profil instans yang memiliki izin untuk mengakses bucket Amazon S3 yang terkait dengan aplikasi Anda.
+ **Aktifkan rotasi file log ke Amazon S3** — Menentukan apakah file log untuk EC2 instans Amazon aplikasi Anda disalin ke bucket Amazon S3 yang terkait dengan aplikasi Anda.

### File statis
<a name="java-se-options-staticfiles"></a>

Untuk meningkatkan kinerja, Anda dapat menggunakan bagian **File statis** untuk mengkonfigurasi server proxy untuk melayani file statis (misalnya, HTML atau gambar) dari satu set direktori di dalam aplikasi web Anda. Untuk setiap direktori, Anda mengatur jalur virtual ke pemetaan direktori. Saat server proksi menerima permintaan untuk file di jalur yang ditentukan, server langsung menyajikan file daripada merutekan permintaan ke aplikasi Anda.

Untuk detail tentang mengonfigurasi file statis menggunakan file konfigurasi atau konsol Elastic Beanstalk, lihat. [Menyajikan file statis](environment-cfg-staticfiles.md)

### Properti lingkungan
<a name="java-se-options-properties"></a>

Bagian **Properti Lingkungan** memungkinkan Anda menentukan pengaturan konfigurasi lingkungan pada EC2 instance Amazon yang menjalankan aplikasi Anda. Properti lingkungan diberikan sebagai pasangan nilai kunci ke aplikasi.

Di dalam lingkungan Java SE yang berjalan di Elastic Beanstalk, variabel lingkungan dapat diakses menggunakan `System.getenv()`. Sebagai contoh, Anda dapat membaca properti bernama `API_ENDPOINT` ke variabel dengan kode berikut:

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

Lihat [Variabel lingkungan dan pengaturan perangkat lunak lainnya](environments-cfg-softwaresettings.md) untuk informasi selengkapnya.

## Namespace konfigurasi Java SE
<a name="java-se-namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur opsi konfigurasi dan melakukan tugas-tugas konfigurasi instans lain selama deployment. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam *ruang nama*.

Platform Java SE tidak menentukan namespace tertentu platform manapun. Anda dapat mengonfigurasi proksi untuk menyajikan file statis dengan menggunakan namespace `aws:elasticbeanstalk:environment:proxy:staticfiles`. Untuk detail dan contoh, lihat [Menyajikan file statis](environment-cfg-staticfiles.md).

Elastic Beanstalk memberikan banyak opsi konfigurasi untuk menyesuaikan lingkungan Anda. Selain file konfigurasi, Anda juga dapat mengatur opsi konfigurasi menggunakan konsol tersebut, konfigurasi tersimpan, EB CLI, atau AWS CLI. Lihat [Opsi konfigurasi](command-options.md) untuk informasi selengkapnya.

## Platform Java SE Amazon Linux AMI (Amazon Linux 2 terdahulu)
<a name="java-se.alami"></a>

Jika lingkungan Java SE Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 terdahulu), baca informasi tambahan di bagian ini.

**Catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.
 **Pada [18 Juli 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) Elastic Beanstalk menetapkan status semua cabang platform berdasarkan Amazon Linux AMI AL1 () untuk pensiun.** Untuk informasi selengkapnya tentang migrasi ke cabang platform Amazon Linux 2023 saat ini dan didukung penuh, lihat. [Memigrasi aplikasi Elastic Beanstalk Linux Anda ke Amazon Linux 2023 atau Amazon Linux 2](using-features.migration-al.md)

### Ruang nama konfigurasi Java SE - Amazon Linux AMI () AL1
<a name="java-se.alami.namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur opsi konfigurasi dan melakukan tugas-tugas konfigurasi instans lain selama deployment. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam *ruang nama*.

Platform Java SE mendukung satu namespace konfigurasi tertentu platform selain [namespace yang didukung oleh semua platform](command-options-general.md). Namespace `aws:elasticbeanstalk:container:java:staticfiles` memungkinkan Anda menentukan opsi yang memetakan jalur di aplikasi web Anda ke folder di paket sumber aplikasi Anda yang berisi konten statis.

Sebagai contoh, snippet [option\$1settings](ebextensions-optionsettings.md) menentukan dua opsi di namespace file statis. Yang pertama memetakan jalur `/public` ke folder bernama `public`, dan yang kedua memetakan jalur `/images` ke folder bernama `img`:

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

Folder yang Anda petakan menggunakan namespace ini harus folder yang sebenarnya di akar paket sumber Anda. Anda tidak dapat memetakan jalur ke folder di file JAR.

Elastic Beanstalk memberikan banyak opsi konfigurasi untuk menyesuaikan lingkungan Anda. Selain file konfigurasi, Anda juga dapat mengatur opsi konfigurasi menggunakan konsol tersebut, konfigurasi tersimpan, EB CLI, atau AWS CLI. Lihat [Opsi konfigurasi](command-options.md) untuk informasi selengkapnya.

# Membangun JARs di server dengan Buildfile
<a name="java-se-buildfile"></a>

Anda dapat membangun file kelas aplikasi dan JAR (s) pada EC2 instance di lingkungan Anda dengan menjalankan perintah build dari `Buildfile` file dalam bundel sumber Anda.

Perintah di `Buildfile` hanya berjalan sekali dan harus diakhiri setelah selesai, sedangkan perintah di [Procfile](java-se-procfile.md) diharapkan untuk menjalankan demi kehidupan aplikasi dan akan dimulai ulang jika mereka mengakhirinya. Untuk menjalankan aplikasi Anda, gunakan file`Procfile`. JARs 

Untuk detail tentang penempatan dan sintaks a`Buildfile`, lihat[Buildfile dan Procfile](platforms-linux-extend.build-proc.md).

Contoh `Buildfile` berikut ini menjalankan Apache Maven untuk membangun aplikasi web dari kode sumber. Untuk aplikasi sampel yang menggunakan fitur ini, lihat [sampel aplikasi web Java](java-getstarted.md#java-getstarted-samples).

**Example Buildfile**  

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

Platform Java SE mencakup alat membangun berikut, yang dapat Anda panggil dari penulisan membangun Anda:
+ `javac` – Java compiler
+ `ant` – Apache Ant
+ `mvn` – Apache Maven
+ `gradle` – Gradle

# Mengonfigurasi proses aplikasi dengan Procfile
<a name="java-se-procfile"></a>

Jika Anda memiliki lebih dari satu file JAR di akar paket sumber aplikasi Anda, Anda harus menyertakan file `Procfile` yang memberitahu Elastic Beanstalk JAR mana yang dijalankan. Anda juga dapat menyertakan file `Procfile` untuk satu aplikasi JAR untuk mengonfigurasi mesin virtual Java (JVM) yang menjalankan aplikasi Anda.

Kami merekomendasikan agar Anda selalu menyediakan `Procfile` di paket sumber di samping aplikasi Anda. Dengan cara ini, Anda secara tepat mengontrol proses mana yang dijalankan Elastic Beanstalk untuk aplikasi Anda dan argumen yang diterima proses ini.

Untuk detail tentang menulis dan menggunakan `Procfile` lihat[Buildfile dan 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
```

Perintah yang menjalankan JAR utama di aplikasi Anda harus disebut `web`, dan menjadi perintah pertama yang tercantum di `Procfile`. Server nginx meneruskan semua permintaan HTTP yang diterima dari penyeimbang beban lingkungan Anda ke aplikasi ini.

Elastic Beanstalk mengasumsikan bahwa semua entri di Procfile harus berjalan setiap saat dan secara otomatis memulai ulang aplikasi yang ditentukan di Procfile yang berakhir. Untuk menjalankan perintah yang akan mengakhiri dan tidak harus dimulai ulang, gunakan [`Buildfile`](java-se-buildfile.md).

## Menggunakan Procfile di Amazon Linux AMI (Amazon Linux 2 terdahulu)
<a name="java-se-procfile.alami"></a>

Jika lingkungan Java SE Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 terdahulu), baca informasi tambahan di bagian ini.

**Catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.
 **Pada [18 Juli 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) Elastic Beanstalk menetapkan status semua cabang platform berdasarkan Amazon Linux AMI AL1 () untuk pensiun.** Untuk informasi selengkapnya tentang migrasi ke cabang platform Amazon Linux 2023 saat ini dan didukung penuh, lihat. [Memigrasi aplikasi Elastic Beanstalk Linux Anda ke Amazon Linux 2023 atau Amazon Linux 2](using-features.migration-al.md)

### Port lewat - Amazon Linux AMI (AL1)
<a name="java-se-procfile.alami.ports"></a>

Secara default, Elastic Beanstalk mengonfigurasi proksi nginx untuk meneruskan permintaan ke aplikasi Anda di port 5000. Anda dapat mengganti port default dengan mengatur `PORT` [properti lingkungan](java-se-platform.md#java-se-options) ke port yang didengarkan aplikasi utama Anda.

Jika Anda menggunakan `Procfile` untuk menjalankan beberapa aplikasi, Elastic Beanstalk di versi platform Amazon Linux AMI mengharapkan setiap aplikasi tambahan untuk mendengarkan di port 100 yang lebih tinggi dari sebelumnya. Elastic Beanstalk mengatur variabel PORT dapat diakses dari dalam setiap aplikasi ke port yang mengharapkan untuk menjalankan aplikasi. Anda dapat mengakses variabel ini dalam kode aplikasi Anda dengan memanggil `System.getenv("PORT")`.

Pada contoh `Procfile` sebelumnya, aplikasi `web` mendengarkan di port 5000, `cache` mendengarkan di port 5100, dan `web_foo` mendengarkan di port 5200. `web` mengonfigurasi port mendengarkannya dengan membaca variabel `PORT`, dan menambahkan 100 ke jumlah tersebut untuk menentukan port `cache` mana yang mendengarkan sehingga dapat mengirimkan permintaan.

# Mengonfigurasi server proksi
<a name="java-se-nginx"></a>

Elastic Beanstalk menggunakan [nginx](https://www.nginx.com/) sebagai proksi terbalik untuk memetakan aplikasi Anda ke penyeimbang beban Elastic Load Balancing di port 80. Elastic Beanstalk menyediakan konfigurasi nginx default yang dapat Anda perluas atau sepenuhnya diganti dengan konfigurasi Anda sendiri.

Secara default, Elastic Beanstalk mengonfigurasi proksi nginx untuk meneruskan permintaan ke aplikasi Anda di port 5000. Anda dapat mengganti port default dengan mengatur `PORT` [properti lingkungan](java-se-platform.md#java-se-options) ke port yang didengarkan aplikasi utama Anda.

**catatan**  
Port yang didengar aplikasi Anda tidak mempengaruhi port yang didengar server nginx untuk menerima permintaan dari penyeimbang beban.

**Mengkonfigurasi server proxy pada versi platform Anda**  
Semua AL2 AL2 023/platform mendukung fitur konfigurasi proxy yang seragam. Untuk informasi selengkapnya tentang mengonfigurasi server proxy pada versi platform Anda yang menjalankan AL2 023/AL2, lihat. [Konfigurasi proksi terbalik](platforms-linux-extend.proxy.md) 

## Mengonfigurasi proksi di Amazon Linux AMI (Amazon Linux 2 terdahulu)
<a name="java-se-nginx.alami"></a>

Jika lingkungan Java SE Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 terdahulu), baca informasi tambahan di bagian ini.

**Catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.
 **Pada [18 Juli 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) Elastic Beanstalk menetapkan status semua cabang platform berdasarkan Amazon Linux AMI AL1 () untuk pensiun.** Untuk informasi selengkapnya tentang migrasi ke cabang platform Amazon Linux 2023 saat ini dan didukung penuh, lihat. [Memigrasi aplikasi Elastic Beanstalk Linux Anda ke Amazon Linux 2023 atau Amazon Linux 2](using-features.migration-al.md)

### Memperluas dan mengganti konfigurasi proxy default — Amazon Linux AMI () AL1
<a name="java-se-nginx.alami.extending"></a>

Untuk memperpanjang konfigurasi nginx default Elastic beanstalk, tambahkan file konfigurasi `.conf` ke folder bernama `.ebextensions/nginx/conf.d/` di paket sumber aplikasi Anda. Konfigurasi nginx Elastic Beanstalk mencakup file `.conf` di folder ini secara otomatis.

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

Untuk mengganti konfigurasi nginx default Elastic Beanstalk sepenuhnya, sertakan konfigurasi di paket sumber Anda di `.ebextensions/nginx/nginx.conf`:

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

Jika Anda mengganti konfigurasi nginx Elastic Beanstalk, tambahkan baris berikut ke `nginx.conf` untuk menarik konfigurasi Elastic Beanstalk untuk [Peningkatan pelaporan dan pemantauan kesehatan di Elastic Beanstalk](health-enhanced.md), pemetaan aplikasi otomatis, dan file statis.

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

Contoh konfigurasi berikut dari [Aplikasi sampel Scorekeep](https://github.com/aws-samples/eb-java-scorekeep/) mengganti konfigurasi default Elastic Beanstalk untuk melayani aplikasi web statis dari subdirektori `public` dari `/var/app/current`, saat platform Java SE menyalin kode sumber aplikasi. lokasi `/api` meneruskan lalu lintas ke rute di bawah `/api/` ke aplikasi Spring yang mendengarkan di port 5000. Semua lalu lintas lainnya dilayani oleh aplikasi web di jalur akar.

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