Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan cara mengonfigurasi sumber data di aplikasi Java SE, Tomcat, atau JBoss di App Service.
Azure App Service menjalankan aplikasi web Java dalam tiga jenis pada layanan yang dikelola sepenuhnya:
- Java Standard Edition (SE). Java SE dapat menjalankan aplikasi yang disebarkan sebagai paket arsip Java (JAR) yang berisi server yang disematkan, seperti Spring Boot, Quarkus, Dropwizard, atau aplikasi dengan server Tomcat atau Jetty yang disematkan.
- Tomcat. Server Tomcat bawaan dapat menjalankan aplikasi yang disebarkan sebagai paket arsip aplikasi web (WAR).
- JBoss Enterprise Application Platform (EAP): Server JBoss EAP bawaan dapat menjalankan aplikasi yang disebarkan sebagai paket WAR atau arsip perusahaan (EAR). Opsi ini didukung untuk aplikasi Linux dalam serangkaian tingkat harga yang mencakup Gratis, Premium v3, dan Terisolasi v2.
Nota
JBoss EAP di App Service sekarang mendukung penagihan Bring Your Own License (BYOL). BYOL memungkinkan pelanggan yang memiliki langganan Red Hat yang ada untuk menerapkan lisensi tersebut langsung ke penyebaran JBoss EAP mereka di Azure App Service. Untuk informasi selengkapnya, lihat Dukungan BYOL untuk JBoss EAP di App Service.
Konfigurasikan sumber data
Untuk terhubung ke sumber data di aplikasi Spring Boot, kami menyarankan untuk membuat string koneksi dan menyuntikkannya ke file application.properties Anda.
Di panel kiri halaman App Service, pilih Pengaturan>Variabel lingkungan. Pada tab String koneksi , pilih Tambahkan. Atur Nama untuk string, tempelkan string koneksi JDBC Anda ke bidang Nilai , dan atur Jenis ke Kustom. Anda dapat secara opsional mengatur string koneksi sebagai pengaturan slot.
String koneksi dapat diakses oleh aplikasi Anda sebagai variabel lingkungan bernama
CUSTOMCONNSTR_<your-string-name>. Contohnya,CUSTOMCONNSTR_exampledb.Dalam file application.properties Anda, referensikan string koneksi dengan nama variabel lingkungan. Untuk contoh sebelumnya, Anda akan menggunakan kode ini:
app.datasource.url=${CUSTOMCONNSTR_exampledb}
Untuk informasi selengkapnya, lihat dokumentasi Spring Boot tentang akses data dan konfigurasi eksternal.
Petunjuk / Saran
Kontainer Linux Tomcat dapat secara otomatis mengonfigurasi sumber data bersama di server Tomcat jika Anda mengatur variabel WEBSITE_AUTOCONFIGURE_DATABASE lingkungan ke true. Satu-satunya hal yang harus Anda lakukan adalah menambahkan pengaturan aplikasi yang berisi string koneksi JDBC yang valid ke database Oracle, SQL Server, PostgreSQL, atau MySQL (termasuk kredensial koneksi). App Service secara otomatis menambahkan database bersama yang sesuai ke /usr/local/tomcat/conf/context.xml, menggunakan driver yang sesuai yang tersedia dalam kontainer. Untuk skenario end-to-end yang menggunakan pendekatan ini, lihat Tutorial: Membuat aplikasi web Tomcat dengan Azure App Service di Linux dan MySQL.
Instruksi ini berlaku untuk semua koneksi database. Anda perlu mengganti placeholder dengan nama kelas driver dari database dan file JAR yang Anda pilih. Tabel berikut ini menyediakan nama kelas dan unduhan driver untuk database umum.
| Basis data | Nama kelas driver | Penggerak JDBC |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
Unduh |
| MySQL | com.mysql.jdbc.Driver |
Unduh (Pilih Platform Independen.) |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Unduh |
Untuk mengonfigurasi Tomcat untuk menggunakan Java Database Connectivity (JDBC) atau Java Persistence API (JPA), pertama-tama sesuaikan CATALINA_OPTS variabel lingkungan yang dibaca oleh Tomcat saat startup. Atur nilai ini dengan menggunakan pengaturan aplikasi di plugin App Service Maven:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
Atau atur variabel lingkungan pada tab Pengaturan aplikasi dari halamanvariabel Lingkungan> di portal Microsoft Azure.
Selanjutnya, tentukan apakah sumber data harus tersedia untuk satu aplikasi atau ke semua aplikasi yang berjalan pada servlet Tomcat.
Sumber data tingkat aplikasi
Untuk mengonfigurasi sumber data tingkat aplikasi:
Buat file context.xml di direktori META-INF/ proyek Anda. Buat direktori META-INF/ jika tidak ada.
Di context.xml, tambahkan elemen
Contextuntuk menautkan sumber data ke alamat JNDI. GantidriverClassNamedengan nama kelas driver Anda dari tabel yang muncul sebelumnya di artikel ini.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${connURL}" driverClassName="<insert your driver class name>" username="${dbuser}" password="${dbpassword}" /> </Context>Perbarui aplikasi web.xml untuk menggunakan sumber data di aplikasi Anda.
<resource-env-ref> <resource-env-ref-name>jdbc/dbconnection</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref>
Sumber daya tingkat server bersama
Petunjuk / Saran
Kontainer Linux Tomcat dapat secara otomatis menerapkan file XSLT dengan menggunakan konvensi berikut untuk file yang disalin ke /home/site/wwwroot: Jika server.xml.xsl atau server.xml.xslt ada, file diterapkan ke Tomcat server.xml. Jika context.xml.xsl atau context.xml.xslt ada, file tersebut akan diterapkan pada Tomcat context.xml.
Menambahkan sumber data tingkat server bersama mengharuskan Anda mengedit Tomcat's server.xml. Karena perubahan file di luar /home direktori bersifat sementara, perubahan pada file konfigurasi Tomcat perlu diterapkan secara terprogram, sebagai berikut:
- Unggah skrip startup dan atur jalur ke skrip diKonfigurasi>. Pada tab Pengaturan tumpukan , tambahkan jalur di kotak perintah Startup . Anda dapat mengunggah skrip startup dengan menggunakan FTP.
Skrip startup Anda membuat transformasi XSL ke server.xml file dan menghasilkan file XML yang dihasilkan ke /usr/local/tomcat/conf/server.xml. Skrip startup harus menginstal libxslt atau xlstproc, tergantung pada distribusi versi Tomcat aplikasi web Anda, seperti yang disebutkan dalam komentar dalam contoh skrip berikut. Anda dapat menggunakan FTP untuk mengunggah file XSL dan skrip startup Anda.
# Install the libxslt package on Alpine-based images:
apk add --update libxslt
# Install the xsltproc package on Debian or Ubuntu-based images:
apt install xsltproc
# Also copy the transform file to /home/tomcat/conf/
# Usage: xsltproc --output output.xml style.xsl input.xml
xsltproc --output /home/tomcat/conf/server.xml /home/tomcat/conf/transform.xsl /usr/local/tomcat/conf/server.xml
Contoh file XSL berikut menambahkan simpul konektor baru ke server.xml Tomcat.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()" name="Copy">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()" mode="insertConnector">
<xsl:call-template name="Copy" />
</xsl:template>
<xsl:template match="comment()[not(../Connector[@scheme = 'https']) and
contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="Service[not(Connector[@scheme = 'https'] or
comment()[contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]
)]
">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="insertConnector" />
</xsl:copy>
</xsl:template>
<!-- Add the new connector after the last existing connector if there is one -->
<xsl:template match="Connector[last()]" mode="insertConnector">
<xsl:call-template name="Copy" />
<xsl:call-template name="AddConnector" />
</xsl:template>
<!-- ... or before the first engine if there's no existing connector -->
<xsl:template match="Engine[1][not(preceding-sibling::Connector)]"
mode="insertConnector">
<xsl:call-template name="AddConnector" />
<xsl:call-template name="Copy" />
</xsl:template>
<xsl:template name="AddConnector">
<!-- Add new line -->
<xsl:text>
</xsl:text>
<!-- This is the new connector -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="${{user.home}}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
</xsl:template>
</xsl:stylesheet>
Menyelesaikan konfigurasi
Terakhir, letakkan JAR driver di classpath Tomcat dan mulai ulang aplikasi App Service Anda.
- Pastikan bahwa file driver JDBC tersedia untuk classloader Tomcat dengan menempatkannya di direktori /home/site/lib .
Di Cloud Shell, jalankan
az webapp deploy --type=libuntuk setiap JAR driver:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar
Jika Anda membuat sumber data tingkat server, hidupkan ulang aplikasi Azure App Service Linux. Tomcat mengatur ulang CATALINA_BASE ke /home/tomcat dan menggunakan konfigurasi yang diperbarui.
Petunjuk / Saran
Secara default, kontainer Linux JBoss dapat secara otomatis mengonfigurasi sumber data bersama di server JBoss. Satu-satunya hal yang perlu Anda lakukan adalah menambahkan pengaturan aplikasi yang berisi string koneksi JDBC yang valid ke database Oracle, SQL Server, PostgreSQL, atau MySQL (termasuk info masuk koneksi), dan tambahkan pengaturan aplikasi / variabel WEBSITE_AUTOCONFIGURE_DATABASE lingkungan dengan nilai true. Koneksi JDBC yang dibuat dengan konektor layanan juga didukung. App Service secara otomatis menambahkan sumber data bersama yang sesuai (berdasarkan nama pengaturan aplikasi dan akhiran _DS), menggunakan driver yang sesuai yang tersedia dalam kontainer. Untuk skenario end-to-end yang menggunakan pendekatan ini, lihat Tutorial: Membuat aplikasi web JBoss dengan Azure App Service di Linux dan MySQL.
Ada tiga langkah utama untuk mendaftarkan sumber data dengan JBoss EAP:
- Unggah driver JDBC.
- Tambahkan driver JDBC sebagai modul.
- Tambahkan sumber data dengan modul .
App Service adalah layanan hosting stateless, jadi Anda perlu memasukkan langkah-langkah ini ke dalam skrip startup dan menjalankannya setiap kali kontainer JBoss dimulai. Berikut adalah contoh PostgreSQL, MySQL, dan Azure SQL Database:
Nota
JBoss EAP di App Service mendukung penagihan Bring Your Own License (BYOL). BYOL memungkinkan pelanggan yang memiliki langganan Red Hat yang ada untuk menerapkan lisensi tersebut langsung ke penyebaran JBoss EAP mereka di Azure App Service. Untuk informasi selengkapnya, lihat Dukungan BYOL untuk JBoss EAP.
Masukkan perintah JBoss CLI Anda ke dalam file yang diberi namajboss-cli-commands.cli. Perintah JBoss harus menambah modul dan mendaftarkannya sebagai sumber data. Contoh berikut menunjukkan perintah JBoss CLI untuk membuat sumber data PostgreSQL dengan nama
java:jboss/datasources/postgresDSJNDI .module add --name=org.postgresql --resources=/home/site/libs/postgresql-42.7.4.jar /subsystem=datasources/jdbc-driver=postgresql:add(driver-name="postgresql",driver-module-name="org.postgresql",driver-class-name="org.postgresql.Driver",driver-xa-datasource-class-name="org.postgresql.xa.PGXADataSource") data-source add --name=postgresql --driver-name="postgresql" --jndi-name="java:jboss/datasources/postgresDS" --connection-url="jdbc:postgresql://\${env.DB_HOST}:5432/postgres" --user-name="\${env.DB_USERNAME}" --password="\${env.DB_PASSWORD}" --enabled=true --use-java-context=truePerhatikan bahwa
module addperintah menggunakan tiga variabel lingkungan (DB_HOST, ,DB_USERNAMEdanDB_PASSWORD), yang harus Anda tambahkan di App Service sebagai pengaturan aplikasi. Skrip menambahkannya tanpa--resolve-parameter-valuesbendera sehingga JBoss tidak menyimpan nilainya dalam teks biasa.Buat skrip startup, startup.sh, yang memanggil perintah JBoss CLI. Contoh berikut menunjukkan cara memanggil file jboss-cli-commands.cli Anda. Nantinya, Anda mengonfigurasi App Service untuk menjalankan skrip ini saat kontainer dimulai.
$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/scripts/jboss-cli-commands.cliMenggunakan opsi penyebaran pilihan Anda, unggah driver JDBC, jboss-cli-commands.cli, dan startup.sh ke jalur yang ditentukan dalam skrip masing-masing. Unggah startup.sh sebagai file startup. Contohnya:
export RESOURCE_GROUP_NAME=<resource-group-name> export APP_NAME=<app-name> # The lib type uploads to /home/site/libs by default. az webapp deploy --resource-group $RESOURCE_GROUP_NAME --name $APP_NAME --src-path postgresql-42.7.4.jar --target-path postgresql-42.7.4.jar --type lib az webapp deploy --resource-group $RESOURCE_GROUP_NAME --name $APP_NAME --src-path jboss-cli-commands.cli --target-path /home/site/scripts/jboss-cli-commands.cli --type static # The startup type uploads to /home/site/scripts/startup.sh by default. az webapp deploy --resource-group $RESOURCE_GROUP_NAME --name $APP_NAME --src-path startup.sh --type startupUntuk informasi selengkapnya, lihat Menyebarkan file ke App Service.
Untuk mengonfirmasi bahwa sumber data ditambahkan ke server JBoss, SSH ke aplikasi web Anda dan jalankan $JBOSS_HOME/bin/jboss-cli.sh --connect. Setelah Anda tersambung ke JBoss, jalankan /subsystem=datasources:read-resource untuk mencetak daftar sumber data.
Sesuai definisi dalam jboss-cli-commands.cli, Anda dapat mengakses koneksi PostgreSQL menggunakan nama java:jboss/datasources/postgresDSJNDI .
Konten terkait
- Dokumentasi Azure untuk pengembang Java
- Tanya Jawab Umum App Service Linux
- Variabel lingkungan dan referensi pengaturan aplikasi