Acara
Membangun Aplikasi dan Agen AI
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Artikel ini memperlihatkan kepada Anda konfigurasi penyebaran dan runtime yang paling umum untuk aplikasi Java di App Service. Jika Anda belum pernah menggunakan Azure App Service, Anda harus membaca mulai cepat Java dahulu. Pertanyaan umum tentang menggunakan Azure App Service yang tidak spesifik untuk pengembangan Java dijawab dalam Tanya Jawab Umum Azure App Service.
Azure App Service menjalankan aplikasi web Java pada layanan yang dikelola sepenuhnya dalam tiga varian:
Untuk memperlihatkan versi Java saat ini, jalankan perintah berikut di Azure Cloud Shell:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion
Untuk memperlihatkan semua versi Java yang didukung, jalankan perintah berikut di Azure Cloud Shell:
az webapp list-runtimes --os linux | grep "JAVA\|TOMCAT\|JBOSSEAP"
Untuk informasi versi yang lebih rinci dalam kontainer Linux, buka sesi SSH dengan kontainer. Berikut adalah beberapa contoh apa yang dapat Anda jalankan.
Untuk melihat versi Java dalam sesi SSH:
java -version
Untuk melihat versi server Tomcat di sesi SSH:
sh /usr/local/tomcat/version.sh
Atau, jika server Tomcat Anda berada di lokasi kustom, temukan version.sh
dengan:
find / -name "version.sh"
Untuk melihat versi server JBoss di sesi SSH:
$JBOSS_HOME/bin/jboss-cli.sh --connect --commands=:product-info
Untuk informasi selengkapnya tentang dukungan versi, lihat Kebijakan dukungan runtime bahasa app service.
Dengan Maven Plugin untuk Azure Web Apps, Anda dapat menyiapkan proyek Maven Java untuk Azure Web App dengan mudah dengan satu perintah di akar proyek Anda:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
Perintah ini menambahkan azure-webapp-maven-plugin
plugin dan konfigurasi terkait dengan meminta Anda untuk memilih Azure Web App yang sudah ada atau membuat yang baru. Selama konfigurasi, ia mencoba mendeteksi apakah aplikasi Anda harus disebarkan ke Java SE, Tomcat, atau (khusus Linux) JBoss EAP. Kemudian Anda dapat menyebarkan aplikasi Java Anda ke Azure menggunakan perintah berikut:
mvn package azure-webapp:deploy
Berikut adalah konfigurasi sampel di pom.xml
:
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.11.0</version>
<configuration>
<subscriptionId>111111-11111-11111-1111111</subscriptionId>
<resourceGroup>spring-boot-xxxxxxxxxx-rg</resourceGroup>
<appName>spring-boot-xxxxxxxxxx</appName>
<pricingTier>B2</pricingTier>
<region>westus</region>
<runtime>
<os>Linux</os>
<webContainer>Java SE</webContainer>
<javaVersion>Java 17</javaVersion>
</runtime>
<deployment>
<resources>
<resource>
<type>jar</type>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Siapkan Plugin Gradle untuk Azure Web Apps dengan menambahkan plugin ke :build.gradle
plugins {
id "com.microsoft.azure.azurewebapp" version "1.10.0"
}
Konfigurasikan detail aplikasi web Anda. Sumber daya Azure yang sesuai dibuat jika tidak ada. Berikut adalah contoh konfigurasi, untuk detailnya, lihat dokumen ini.
azurewebapp {
subscription = '<your subscription id>'
resourceGroup = '<your resource group>'
appName = '<your app name>'
pricingTier = '<price tier like 'P1v2'>'
region = '<region like 'westus'>'
runtime {
os = 'Linux'
webContainer = 'Tomcat 10.0' // or 'Java SE' if you want to run an executable jar
javaVersion = 'Java 17'
}
appSettings {
<key> = <value>
}
auth {
type = 'azure_cli' // support azure_cli, oauth2, device_code and service_principal
}
}
Sebarkan dengan satu perintah.
gradle azureWebAppDeploy
Azure memberikan pengalaman pengembangan Java App Service yang mulus di IDE Java yang populer, termasuk:
Untuk menyebarkan file .jar ke Java SE, gunakan titik akhir /api/publish
dari situs Kudu. Untuk informasi selengkapnya tentang API ini, lihat dokumentasi ini.
Catatan
Aplikasi .jar Anda harus diberi nama app.jar
untuk Azure App Service agar mengidentifikasi dan menjalankan aplikasi Anda. Plugin Maven melakukan ini untuk Anda secara otomatis selama penyebaran. Jika tidak ingin mengganti nama JAR menjadi app.jar, Anda dapat mengunggah skrip shell dengan perintah untuk menjalankan aplikasi .jar Anda. Tempel jalur absolut ke skrip ini di kotek teks File Startup di bagian Konfigurasi Portal. Skrip startup tidak berjalan dari direktori ke tempatnya ditempatkan. Oleh karena itu, selalu gunakan jalur absolut untuk mereferensikan file dalam skrip startup Anda (misalnya: java -jar /home/myapp/myapp.jar
).
Untuk menyebarkan file .war ke Tomcat, gunakan titik akhir /api/wardeploy/
untuk MEMPOSTING file arsip Anda. Untuk informasi selengkapnya tentang API ini, lihat dokumentasi ini.
Untuk menyebarkan file .war ke JBoss, gunakan titik akhir /api/wardeploy/
untuk MEMPOSTING file arsip Anda. Untuk informasi selengkapnya tentang API ini, lihat dokumentasi ini.
Untuk menyebarkan file .ear, gunakan FTP. Aplikasi .ear Anda disebarkan ke akar konteks yang ditentukan dalam konfigurasi aplikasi Anda. Misalnya, jika akar konteks aplikasi Anda adalah <context-root>myapp</context-root>
, maka Anda dapat menelusuri situs di /myapp
jalur: http://my-app-name.azurewebsites.net/myapp
. Jika Anda ingin aplikasi web Anda dilayani di jalur akar, pastikan aplikasi Anda mengatur akar konteks ke jalur akar: <context-root>/</context-root>
. Untuk informasi selengkapnya, lihat Mengatur akar konteks aplikasi web.
Jangan sebarkan .war atau .jar menggunakan FTP. Alat FTP dirancang untuk mengunggah skrip startup, dependensi, atau file runtime lainnya. Ini bukan pilihan optimal untuk menyebarkan aplikasi web.
Untuk menulis ulang atau mengalihkan URL, gunakan salah satu penulis ulang URL yang tersedia, seperti UrlRewriteFilter.
Tomcat juga menyediakan katup penulisan ulang.
JBoss juga menyediakan katup penulisan ulang.
Laporan performa, visualisasi lalu lintas, dan pemeriksaan kesehatan tersedia untuk setiap aplikasi melalui portal Azure. Untuk mengetahui informasi selengkapnya, lihat Ringkasan diagnostik Azure App Service.
Anda dapat mengakses log konsol yang dihasilkan dari dalam kontainer.
Pertama, aktifkan pengelogan kontainer dengan menjalankan perintah berikut:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Ganti <app-name>
dan <resource-group-name>
dengan nama yang sesuai untuk aplikasi web Anda.
Setelah pengelogan kontainer diaktifkan, jalankan perintah berikut untuk melihat aliran log:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Jika Anda tidak segera melihat log konsol, periksa lagi dalam 30 detik.
Untuk menghentikan streaming log kapan saja, tekan Ctrl+C.
Anda juga dapat memeriksa file log di browser di https://<app-name>.scm.azurewebsites.net/api/logs/docker
.
Untuk informasi selengkapnya, lihat Streaming log di Cloud Shell.
Untuk membuka sesi SSH langsung dengan kontainer Anda, aplikasi Anda harus berjalan.
Tempelkan URL berikut ke browser Anda dan ganti <app-name>
dengan nama aplikasi Anda:
https://<app-name>.scm.azurewebsites.net/webssh/host
Jika belum diautentikasi, Anda harus mengautentikasi dengan langganan Azure untuk menyambungkan. Setelah diautentikasi, Anda akan melihat shell dalam browser, tempat Anda dapat menjalankan perintah di dalam kontainer Anda.
Catatan
Setiap perubahan yang Anda buat di luar direktori /home disimpan dalam kontainer itu sendiri dan hanya ada saat aplikasi dihidupkan ulang.
Untuk membuka sesi SSH jarak jauh dari komputer lokal Anda, lihat Membuka sesi SSH dari shell jarak jauh.
Gambar Java bawaan didasarkan pada sistem operasi Linux Alpine. Gunakan pengelola paket apk
untuk memasang alat atau perintah pemecahan masalah.
Semua runtime Java di Azure App Service dilengkapi dengan JDK Flight Recorder untuk membuat profil beban kerja Java. Anda dapat menggunakannya untuk merekam JVM, sistem, dan peristiwa aplikasi dan memecahkan masalah dalam aplikasi Anda.
Untuk mempelajari selengkapnya tentang Java Profiler, kunjungi dokumentasi Azure Application Insights.
Semua runtime Java di App Service dilengkapi dengan Java Flight Recorder. Anda dapat menggunakannya untuk merekam JVM, sistem, dan peristiwa aplikasi dan memecahkan masalah di aplikasi Java Anda.
SSH ke dalam Azure App Service Anda dan jalankan perintah jcmd
untuk melihat daftar semua proses Java yang berjalan. Selain itu jcmd
, Anda akan melihat aplikasi Java Anda berjalan dengan nomor ID proses (pid).
078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar
Jalankan perintah berikut untuk memulai rekaman 30 detik JVM. Ini memprofilkan JVM dan membuat file JFR bernama jfr_example.jfr di direktori beranda. (Ganti 116 dengan pid aplikasi Java Anda.)
jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"
Selama interval 30 detik, Anda dapat memvalidasi rekaman yang sedang berlangsung dengan menjalankan jcmd 116 JFR.check
. Perintah menunjukkan semua rekaman untuk proses Java yang diberikan.
Anda dapat menggunakan Java Flight Recorder untuk terus memprofilkan aplikasi Java Anda dengan dampak minimal pada performa runtime. Untuk melakukannya, jalankan perintah Azure CLI berikut untuk membuat Pengaturan Aplikasi dengan nama JAVA_OPTS dengan konfigurasi yang diperlukan. Konten Pengaturan Aplikasi JAVA_OPTS diteruskan ke perintah java
saat aplikasi Anda dimulai.
az webapp config appsettings set -g <your_resource_group> -n <your_app_name> --settings JAVA_OPTS=-XX:StartFlightRecording=disk=true,name=continuous_recording,dumponexit=true,maxsize=1024m,maxage=1d
Setelah perekaman dimulai, Anda dapat membuang data rekaman saat ini kapan saja menggunakan JFR.dump
perintah .
jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"
Gunakan FTPS untuk mengunduh file JFR Anda ke komputer lokal. Untuk menganalisis file JFR, unduh dan instal Java Mission Control. Untuk petunjuk tentang Java Mission Control, lihat dokumentasi JMC dan instruksi penginstalan.
Aktifkan pengelogan aplikasi melalui portal Azure atau Azure CLI untuk mengonfigurasi Azure App Service untuk menulis output konsol standar aplikasi Anda dan aliran kesalahan konsol standar ke sistem file lokal atau Azure Blob Storage. Jika Anda memerlukan retensi lebih lama, konfigurasikan aplikasi untuk menulis output ke kontainer penyimpanan Objek Besar Biner.
Log aplikasi Java dan Tomcat Anda dapat ditemukan di direktori /home/LogFiles/Application/.
Pengelogan Azure Blob Storage untuk aplikasi berbasis Linux hanya dapat dikonfigurasi menggunakan Azure Monitor.
Jika aplikasi Anda menggunakan Logback atau Log4j untuk menelusuri, Anda dapat meneruskan jejak ini untuk ditinjau ke Azure Application Insights menggunakan instruksi konfigurasi kerangka kerja pengelogan di Jelajahi log jejak Java di Application Insights.
Catatan
Karena kerentanan yang diketahui CVE-2021-44228, pastikan untuk menggunakan Log4j versi 2.16 atau yang lebih baru.
Azure App Service mendukung penyetelan dan kustomisasi kotak melalui portal Microsoft Azure dan CLI. Tinjau artikel berikut untuk konfigurasi aplikasi web non-Java tertentu:
Atur pengaturan JAVA_COPY_ALL
aplikasi ke true
untuk menyalin konten aplikasi Anda ke pekerja lokal dari sistem file bersama. Pengaturan ini membantu mengatasi masalah penguncian file.
Untuk mengatur memori yang dialokasikan atau opsi runtime JVM lainnya, buat pengaturan aplikasi yang diberi nama JAVA_OPTS
dengan opsi tersebut. Azure App Service melewati pengaturan ini sebagai variabel lingkungan ke runtime Java saat dimulai.
Di portal Azure, di bawah Pengaturan Aplikasi untuk aplikasi web, buat pengaturan aplikasi baru bernama JAVA_OPTS
yang menyertakan pengaturan lain, seperti -Xms512m -Xmx1204m
.
Di portal Azure, di bawah Pengaturan Aplikasi untuk aplikasi web, buat pengaturan aplikasi baru bernama CATALINA_OPTS
yang menyertakan pengaturan lain, seperti -Xms512m -Xmx1204m
.
Untuk mengonfigurasi pengaturan aplikasi dari plugin Maven, tambah tag pengaturan/nilai di bagian plugin Azure. Contoh berikut menetapkan ukuran heap Java minimum dan maksimum tertentu:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Xms1024m -Xmx1024m</value>
</property>
</appSettings>
Catatan
Anda tidak perlu membuat file web.config saat menggunakan Tomcat di Windows App Service.
Pengembang yang menjalankan satu aplikasi dengan satu slot penyebaran dalam paket Azure App Service mereka dapat menggunakan opsi berikut:
-Xms1024m -Xmx1024m
-Xms3072m -Xmx3072m
-Xms6144m -Xmx6144m
-Xms3072m -Xmx3072m
-Xms6144m -Xmx6144m
-Xms12800m -Xmx12800m
-Xms6656m -Xmx6656m
-Xms14848m -Xmx14848m
-Xms30720m -Xmx30720m
-Xms3072m -Xmx3072m
-Xms6144m -Xmx6144m
-Xms12800m -Xmx12800m
-Xms6656m -Xmx6656m
-Xms14848m -Xmx14848m
-Xms30720m -Xmx30720m
Saat menyetel pengaturan heap aplikasi, tinjau detail paket Azure App Service Anda dan perhitungkan beberapa aplikasi dan slot penyebaran perlu menemukan alokasi memori yang optimal.
Aktifkan dukungan untuk soket web di portal Azure di Pengaturan aplikasi untuk aplikasi. Anda perlu menghidupkan ulang aplikasi agar pengaturan diterapkan.
Aktifkan dukungan soket web menggunakan Azure CLI dengan perintah berikut:
az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true
Kemudian, mulai ulang aplikasi Anda:
az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>
Di portal Azure, di bawah Pengaturan Aplikasi untuk aplikasi web, buat pengaturan aplikasi baru yang diberi nama JAVA_OPTS
dengan nilai -Dfile.encoding=UTF-8
.
Atau, Anda dapat mengonfigurasi pengaturan aplikasi menggunakan plugin Maven Azure App Service. Tambah nama pengaturan dan tag nilai dalam konfigurasi plugin:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dfile.encoding=UTF-8</value>
</property>
</appSettings>
Untuk meningkatkan performa aplikasi Tomcat, Anda dapat mengompilasi file JSP sebelum menyebarkan ke Azure App Service. Anda dapat menggunakan plugin Maven yang disediakan oleh Apache Sling, atau menggunakan file bangun Ant ini.
Anda mungkin melihat pesan berikut dalam log kontainer:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Anda dapat mengabaikan pesan ini dengan aman.
/robots933456.txt
adalah jalur URL dummy yang digunakan App Service untuk memeriksa apakah kontainer mampu melayani permintaan. Respons 404 hanya menunjukkan bahwa jalur tersebut tidak ada, tetapi ini memberi tahu App Service bahwa kontainernya sehat dan siap untuk menanggapi permintaan.
App Service memungkinkan pengguna memilih versi utama JVM, seperti Java 8 atau Java 11, dan versi patch, seperti 1.8.0_232 atau 11.0.5. Anda juga dapat memilih agar versi patch diperbarui secara otomatis saat versi minor baru tersedia. Dalam kebanyakan kasus, aplikasi produksi harus menggunakan versi JVM patch yang disematkan. Ini mencegah pemadaman yang tidak terantisipasi selama pembaruan otomatis versi patch. Semua aplikasi web Java menggunakan JVM 64-bit, dan tidak dapat dikonfigurasi.
Jika Anda menggunakan Tomcat, Anda dapat memilih untuk menyematkan versi patch Tomcat. Di Windows, Anda dapat menyematkan versi patch JVM dan Tomcat secara terpisah. Di Linux, Anda dapat menyematkan versi patch Tomcat; versi patch JVM juga disematkan tetapi tidak dapat dikonfigurasi secara terpisah.
Jika Anda memilih untuk menyematkan versi minor, Anda perlu memperbarui versi minor JVM secara berkala di aplikasi. Untuk memastikan bahwa aplikasi Anda berjalan pada versi minor yang lebih baru, buat slot penahapan dan tingkatkan versi minor pada slot penahapan. Setelah mengonfirmasi bahwa aplikasi berjalan dengan benar pada versi minor baru, Anda dapat menukar slot penahapan dan produksi.
Dalam sesi SSH aplikasi JBoss, Anda dapat menjalankan JBoss CLI dengan perintah berikut:
$JBOSS_HOME/bin/jboss-cli.sh --connect
Tergantung di mana JBoss berada dalam siklus hidup server, Anda mungkin tidak dapat terhubung. Silakan tunggu beberapa menit, lalu coba kembali. Pendekatan ini berguna untuk pemeriksaan cepat status server Anda saat ini (misalnya, untuk melihat apakah sumber data dikonfigurasi dengan benar).
Selain itu, perubahan yang Anda buat pada server dengan JBoss CLI di sesi SSH tidak berlanjut setelah aplikasi dimulai ulang. Setiap kali aplikasi dimulai, server JBoss EAP dimulai dengan penginstalan yang bersih. Selama siklus hidup startup, App Service membuat konfigurasi server yang diperlukan dan menyebarkan aplikasi. Untuk membuat perubahan persisten di server JBoss, gunakan skrip startup kustom atau perintah startup. Untuk contoh end-to-end, lihat Mengonfigurasi sumber data untuk aplikasi Tomcat, JBoss, atau Java SE di Azure App Service.
Atau, Anda dapat mengonfigurasi App Service secara manual untuk menjalankan file apa pun saat memulai. Contohnya:
az webapp config set --resource-group <group-name> --name <app-name> --startup-file /home/site/scripts/foo.sh
Untuk informasi selengkapnya tentang perintah CLI yang dapat Anda jalankan, lihat:
App Service mendukung pengklusteran untuk JBoss EAP versi 7.4.1 dan yang lebih baru. Untuk mengaktifkan pengklusteran, aplikasi web Anda harus terintegrasi dengan jaringan virtual. Ketika aplikasi web terintegrasi dengan jaringan virtual, aplikasi ini dimulai ulang, dan penginstalan JBoss EAP secara otomatis dimulai dengan konfigurasi berkluster. Saat Anda menjalankan beberapa instans dengan penskalaan otomatis, instans JBoss EAP berkomunikasi satu sama lain melalui subnet yang ditentukan dalam integrasi jaringan virtual. Anda dapat menonaktifkan pengklusteran dengan membuat pengaturan aplikasi bernama WEBSITE_DISABLE_CLUSTERING
dengan nilai apa pun.
Catatan
Jika Anda mengaktifkan integrasi jaringan virtual dengan templat ARM, Anda perlu mengatur properti vnetPrivatePorts
secara manual ke nilai 2
. Jika Anda mengaktifkan integrasi jaringan virtual dari CLI atau Portal, properti ini diatur untuk Anda secara otomatis.
Saat pengklusteran diaktifkan, instans JBoss EAP menggunakan protokol penemuan JGroups FILE_PING untuk menemukan instans baru dan mempertahankan informasi kluster seperti anggota kluster, pengidentifikasi kluster, dan alamat IP kluster. Pada App Service, file-file ini berada di bawah /home/clusterinfo/
. Instans EAP pertama yang mulai mendapatkan izin baca/tulis pada file keanggotaan kluster. Instans lain membaca file, menemukan simpul utama, dan berkoordinasi dengan simpul tersebut untuk disertakan dalam kluster dan ditambahkan ke file.
Catatan
Anda dapat menghindari batas waktu pengklusteran JBoss dengan membersihkan file penemuan usang selama startup aplikasi Anda.
Jenis Premium V3 dan Paket Isolated App Service V2 secara opsional dapat didistribusikan di seluruh Zona Ketersediaan untuk meningkatkan ketahanan dan keandalan untuk beban kerja penting bisnis Anda. Arsitektur ini juga dikenal sebagai redundansi zona. Fitur pengklusteran JBoss EAP kompatibel dengan fitur redundansi zona.
Saat mengonfigurasi aturan skala otomatis untuk penskalaan horizontal, penting untuk menghapus instans secara bertahap (satu per satu) untuk memastikan setiap instans yang dihapus dapat mentransfer aktivitasnya (seperti menangani transaksi database) ke anggota kluster lain. Saat mengonfigurasi aturan skala otomatis Anda di Portal untuk menurunkan skala, gunakan opsi berikut:
Anda tidak perlu menambahkan instans secara bertahap (perluasan skala), Anda dapat menambahkan beberapa instans ke kluster sekaligus.
JBoss EAP tersedia dalam tingkat harga berikut: F1, P0v3, P1mv3, P2mv3, P3mv3, P4mv3, dan P5mv3.
Aplikasi JBoss EAP di App Service melewati lima fase berbeda sebelum benar-benar meluncurkan server.
Lihat masing-masing bagian di bawah ini untuk detail serta peluang untuk menyesuaikannya (seperti melalui pengaturan aplikasi).
javax.net.ssl.keyStore
, javax.net.ssl.keyStorePassword
dan javax.net.ssl.keyStoreType
ditambahkan ke JAVA_TOOL_OPTIONS
variabel lingkungan.–Xms
bendera atau –Xmx
untuk memori di pengaturan JAVA_OPTS
aplikasi, nilai-nilai ini akan mengambil alih yang disediakan oleh platform.WEBSITES_CONTAINER_STOP_TIME_LIMIT
aplikasi , nilai diteruskan ke properti org.wildfly.sigterm.suspend.timeout
runtime , yang mengontrol waktu tunggu matikan maksimum (dalam detik) saat JBoss dihentikan.WEBSITE_PRIVATE_PORTS
lingkungan dan meluncurkan JBoss menggunakan clustering
konfigurasi. Jika tidak, standalone
konfigurasi digunakan.
clustering
Untuk konfigurasi, file konfigurasi server standalone-azure-full-ha.xml digunakan.standalone
Untuk konfigurasi, file konfigurasi server standalone-full.xml digunakan.clustering
konfigurasi: clustering
konfigurasi atau standalone
, jika versi server adalah 7.4 atau lebih tinggi dan runtime menggunakan Java 17, konfigurasi diperbarui untuk mengaktifkan subsistem Elytron untuk keamanan.WEBSITE_JBOSS_OPTS
aplikasi , nilai diteruskan ke skrip peluncur JBoss. Pengaturan ini dapat digunakan untuk menyediakan jalur ke file properti dan lebih banyak bendera yang memengaruhi startup JBoss.azure.appservice
JBoss , yang menyediakan kelas utilitas untuk pengelogan dan integrasi dengan App Service.azure.appservice.easyauth
JBoss untuk integrasi dengan autentikasi App Service dan ID Microsoft Entra.WEBSITE_SKIP_AUTOCONFIGURE_DATABASE
aplikasi ditentukan, App Service secara otomatis menentukan URL JDBC di pengaturan aplikasi App Service. Jika URL JDBC yang valid ada untuk PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, atau Azure SQL Database, url menambahkan driver yang sesuai ke server dan menambahkan sumber data untuk setiap URL JDBC dan mengatur nama JNDI untuk setiap sumber data ke java:jboss/env/jdbc/<app-setting-name>_DS
, di mana <app-setting-name>
adalah nama pengaturan aplikasi.clustering
Jika konfigurasi diaktifkan, pencatat konsol yang akan dikonfigurasi akan diperiksa.Perintah startup kustom atau skrip berjalan sebagai pengguna root (tidak perlu sudo
), sehingga mereka dapat menginstal paket Linux atau meluncurkan JBoss CLI untuk melakukan lebih banyak perintah penginstalan/kustomisasi JBoss (membuat sumber data, menginstal adaptor sumber daya), dll. Untuk informasi tentang perintah manajemen paket Ubuntu, lihat dokumentasi Ubuntu Server. Untuk perintah JBoss CLI, lihat Panduan CLI Manajemen JBoss.
Skrip startup menyebarkan aplikasi ke JBoss dengan melihat di lokasi berikut, dalam urutan prioritas:
WEBSITE_JAVA_WAR_FILE_NAME
aplikasi , sebarkan file yang ditunjuk olehnya.clustering
konfigurasi, fungsi akhir yang disebut emit_alert_tx_store_not_empty
dijalankan. Fungsi ini memeriksa apakah proses JBoss meninggalkan file penyimpanan transaksi yang tidak ada dalam disk; jika demikian, kesalahan dicatat di konsol: Error: finishing server with non-empty store for node XXXX
. Ketika instans server baru dimulai, ia mencari file penyimpanan transaksi yang tidak ada gunanya melanjutkan pekerjaan (lihat 2. Fase peluncuran server).Catatan
Bagian ini hanya berlaku untuk Linux.
Pengembang Java dapat menyesuaikan pengaturan server, memecahkan masalah, dan menyebarkan aplikasi ke Tomcat dengan percaya diri jika mereka tahu tentang file server.xml dan detail konfigurasi Tomcat. Kemungkinan penyesuaian meliputi:
Saat Anda membuat aplikasi dengan Tomcat bawaan untuk menghosting beban kerja Java Anda (file WAR atau file JAR), ada pengaturan tertentu yang Anda keluarkan dari kotak untuk konfigurasi Tomcat. Anda dapat merujuk ke Dokumentasi Resmi Apache Tomcat untuk informasi terperinci, termasuk konfigurasi default untuk Server Web Tomcat.
Selain itu, ada transformasi tertentu yang diterapkan lebih lanjut di atas server.xml untuk distribusi Tomcat pada awalnya. Ini adalah transformasi ke pengaturan Konektor, Host, dan Katup.
Versi terbaru Tomcat memiliki server.xml (8.5.58 dan 9.0.38 dan seterusnya). Versi Lama Tomcat tidak menggunakan transformasi dan mungkin memiliki perilaku yang berbeda sebagai hasilnya.
<Connector port="${port.http}" address="127.0.0.1" maxHttpHeaderSize="16384" compression="on" URIEncoding="UTF-8" connectionTimeout="${site.connectionTimeout}" maxThreads="${catalina.maxThreads}" maxConnections="${catalina.maxConnections}" protocol="HTTP/1.1" redirectPort="8443"/>
maxHttpHeaderSize
diatur ke 16384
URIEncoding
diatur ke UTF-8
connectionTimeout
diatur ke WEBSITE_TOMCAT_CONNECTION_TIMEOUT
, yang defaultnya 240000
maxThreads
diatur ke WEBSITE_CATALINA_MAXTHREADS
, yang defaultnya 200
maxConnections
diatur ke WEBSITE_CATALINA_MAXCONNECTIONS
, yang defaultnya 10000
Catatan
Pengaturan connectionTimeout, maxThreads, dan maxConnections dapat disetel dengan pengaturan aplikasi
Berikut ini adalah contoh perintah CLI yang mungkin Anda gunakan untuk mengubah nilai connectionTimeout, maxThreads, atau maxConnections:
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_TOMCAT_CONNECTION_TIMEOUT=120000
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXTHREADS=100
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXCONNECTIONS=5000
<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
appBase
diatur ke AZURE_SITE_APP_BASE
, yang defaultnya ke lokal WebappsLocalPath
xmlBase
diatur ke AZURE_SITE_HOME
, yang defaultnya /site/wwwroot
unpackWARs
diatur ke AZURE_UNPACK_WARS
, yang defaultnya true
workDir
diatur ke JAVA_TMP_DIR
, yang default TMP
errorReportValveClass
menggunakan katup laporan kesalahan kustom kami<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t "%r" %s %b %D %{x-arr-log-id}i" directory="${site.logdir}/http/RawLogs" maxDays="${site.logRetentionDays}" className="org.apache.catalina.valves.AccessLogValve" suffix=".txt"/>
directory
diatur ke AZURE_LOGGING_DIR
, yang defaultnya home\logFiles
maxDays
adalah untuk WEBSITE_HTTPLOGGING_RETENTION_DAYS
, yang default ke 7
. Ini selaras dengan default platform Pengelogan AplikasiDi Linux, ia memiliki semua kustomisasi yang sama, ditambah:
Menambahkan beberapa halaman kesalahan dan pelaporan ke katup:
<xsl:attribute name="appServiceErrorPage">
<xsl:value-of select="'${appService.valves.appServiceErrorPage}'"/>
</xsl:attribute>
<xsl:attribute name="showReport">
<xsl:value-of select="'${catalina.valves.showReport}'"/>
</xsl:attribute>
<xsl:attribute name="showServerInfo">
<xsl:value-of select="'${catalina.valves.showServerInfo}'"/>
</xsl:attribute>
Kunjungi pusat Azure for Java Developers untuk menemukan mulai cepat Azure, tutorial, dan dokumentasi referensi Java.
Acara
Membangun Aplikasi dan Agen AI
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Jalur pembelajaran
Mulai menggunakan Java di Azure - Training
Mulai di sini dan pelajari cara membuat, memigrasikan, dan menskalakan aplikasi Java di Azure menggunakan layanan Azure. Gunakan alat dan kerangka kerja yang Anda kenal dan sukai - Musim Semi, Tomcat, WildFly, JBoss, WebLogic, WebSphere, Maven, Gradle, IntelliJ, Eclipse, Jenkins, Terraform, dan banyak lagi.