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 pada layanan yang dikelola sepenuhnya dalam tiga varian:
- Java Standard Edition (SE): Dapat menjalankan aplikasi yang disebarkan sebagai paket Java Archive (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). Didukung untuk aplikasi Linux dalam serangkaian tingkat harga yang mencakup Gratis, Premium v3, dan Terisolasi v2.gti
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 bagian “Konfigurasi” di halaman Azure App Service, atur nama untuk string, tempel string koneksi JDBC Anda ke bidang nilai, dan atur jenisnya ke “Kustom”. Anda dapat secara opsional mengatur string koneksi ini sebagai pengaturan slot.
String koneksi ini dapat diakses oleh aplikasi kami sebagai variabel lingkungan yang diberi nama
CUSTOMCONNSTR_<your-string-name>
. Contohnya,CUSTOMCONNSTR_exampledb
.Dalam file application.properties Anda, referensi string koneksi ini dengan nama variabel lingkungan. Misalnya, kami akan menggunakan kode berikut:
app.datasource.url=${CUSTOMCONNSTR_exampledb}
Untuk informasi selengkapnya, lihat dokumentasi Spring Boot tentang akses data dan konfigurasi eksternal.
Petunjuk / Saran
Secara default, kontainer Linux Tomcat dapat secara otomatis mengonfigurasi sumber data bersama untuk Anda di server Tomcat. 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), dan 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 menggunakan pendekatan ini, lihat Tutorial: Membangun aplikasi web Tomcat dengan Azure App Service di Linux dan MySQL.
Instruksi ini berlaku untuk semua koneksi database. Anda perlu mengisi tempat penampung dengan nama kelas driver dari database pilihan Anda dan file JAR. Disediakan tabel dengan nama kelas dan unduhan driver untuk database umum.
Basis data | Nama Kelas Driver | Pengandar 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 menggunakan Java Database Connectivity (JDBC) atau Java Persistence API (JPA), pertama, kustomisasi variabel lingkungan CATALINA_OPTS
yang dibaca oleh Tomcat saat dalam keadaan start-up. Tetapkan nilai-nilai ini melalui pengaturan aplikasi di plugin Maven Azure App Service:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
Atau atur variabel lingkungan di halaman Pengaturan Aplikasi>Konfigurasi di portal Azure.
Selanjutnya, tentukan apakah sumber data harus tersedia untuk satu aplikasi atau untuk semua aplikasi yang berjalan pada servlet Tomcat.
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
Context
untuk menautkan sumber data ke alamat JNDI. Ganti tempat penampungdriverClassName
dengan nama kelas pengemudi Anda pada tabel di atas.<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
Menambahkan sumber data tingkat server bersama mengharuskan Anda mengedit server.xml Tomcat. Cara yang paling dapat diandalkan untuk melakukan ini adalah sebagai berikut:
- Unggah skrip startup dan atur jalur ke skrip di Konfigurasi>Perintah Startup. Anda dapat mengunggah skrip startup menggunakan FTP.
Skrip startup Anda membuat transformasi XSL ke file server.xml dan menyimpan file XML hasil ke . Skrip startup harus memasang libxslt melalui apk. File xsl dan skrip startup Anda dapat diunggah melalui FTP. Di bawah adalah contoh skrip startup.
# Install libxslt. Also copy the transform file to /home/tomcat/conf/
apk add --update libxslt
# 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's 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
Akhirnya, tempatkan driver JAR di classpath Tomcat dan hidupkan ulang Azure 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=lib
untuk 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 untuk Anda di server JBoss. 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), dan App Service secara otomatis menambahkan sumber data bersama yang sesuai, menggunakan driver yang sesuai yang tersedia dalam kontainer. Untuk skenario end-to-end menggunakan pendekatan ini, lihat Tutorial: Membuat aplikasi web JBoss dengan Azure App Service di Linux dan MySQL.
Ada tiga langkah inti saat 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 harus memasukkan langkah-langkah ini ke dalam skrip startup dan menjalankannya setiap kali kontainer JBoss dimulai. Menggunakan PostgreSQL, MySQL, dan SQL Database sebagai contoh:
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/postgresDS
JNDI .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=true
Perhatikan bahwa
module add
perintah menggunakan tiga variabel lingkungan (DB_HOST
, ,DB_USERNAME
danDB_PASSWORD
), yang harus Anda tambahkan di App Service sebagai pengaturan aplikasi. Skrip menambahkannya tanpa--resolve-parameter-values
bendera sehingga JBoss tidak menyimpan nilainya dalam teks biasa.Buat skrip startup, startup.sh, yang memanggil perintah JBoss CLI. Contoh berikut menunjukkan cara menghubungi
jboss-cli-commands.cli
Anda. Nantinya, Anda akan mengonfigurasi App Service untuk menjalankan skrip ini saat kontainer dimulai.$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/scripts/jboss_cli_commands.cli
Menggunakan opsi penyebaran pilihan Anda, unggah driver JDBC, jboss-cli-commands.cli, dan startup.sh ke jalur yang ditentukan dalam skrip masing-masing. Terutama, 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 startup
Untuk 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.
Seperti yang didefinisikan oleh jboss-cli-commands.cli sebelumnya, Anda dapat mengakses koneksi PostgreSQL menggunakan nama java:jboss/datasources/postgresDS
JNDI .
Langkah berikutnya
Kunjungi pusat sumber daya Azure for Java Developers untuk menemukan panduan cepat Azure, dokumentasi referensi Java, dan tutorial.