Bagikan melalui


Tutorial: Membangun aplikasi web JBoss dengan Azure App Service di Linux dan MySQL

Tutorial ini menunjukkan cara membangun, mengonfigurasi, dan menyebarkan aplikasi JBoss aman di Azure App Service yang tersambung ke database MySQL (menggunakan Azure Database for MySQL). Azure App Service adalah layanan patch mandiri dan hosting web yang sangat dapat diskalakan, yang dapat dengan mudah menyebarkan aplikasi di Windows atau Linux. Setelah selesai, Anda akan memiliki aplikasi JBoss yang berjalan di Azure App Service di Linux.

Cuplikan layar aplikasi JBoss yang menyimpan data di MySQL.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat arsitektur aman secara default untuk Azure App Service dan Azure Database for MySQL Flexible Server.
  • Konektivitas database aman menggunakan string koneksi tanpa kata sandi.
  • Verifikasi sumber data JBoss di App Service menggunakan JBoss CLI.
  • Sebarkan aplikasi sampel JBoss ke App Service dari repositori GitHub.
  • Akses pengaturan aplikasi App Service dalam kode aplikasi.
  • Buat pembaruan dan sebarkan ulang kode aplikasi.
  • Streaming log diagnostik dari App Service.
  • Kelola aplikasi di portal Azure.
  • Provisikan arsitektur dan penyebaran yang sama dengan menggunakan Azure Developer CLI.
  • Optimalkan alur kerja pengembangan Anda dengan GitHub Codespaces dan GitHub Copilot.

Prasyarat

  • Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
  • Azure Developer CLI terinstal. Anda dapat mengikuti langkah-langkah dengan Azure Cloud Shell karena sudah menginstal Azure Developer CLI.
  • Pengetahuan tentang Java dengan pengembangan JBoss.
  • (Opsional) Untuk mencoba GitHub Copilot, akun GitHub Copilot. Uji coba gratis 30 hari tersedia.

Lewati ke akhir

Anda dapat dengan cepat menyebarkan aplikasi sampel dalam tutorial ini dan melihatnya berjalan di Azure. Cukup jalankan perintah berikut di Azure Cloud Shell, dan ikuti perintahnya:

mkdir msdocs-jboss-mysql-sample-app
cd msdocs-jboss-mysql-sample-app
azd init --template msdocs-jboss-mysql-sample-app
azd up

1. Jalankan sampel

Pertama, Anda menyiapkan contoh aplikasi berbasis data sebagai titik awal. Untuk kenyamanan Anda, repositori sampel, mencakup konfigurasi kontainer pengembangan. Kontainer dev memiliki semua yang Anda butuhkan untuk mengembangkan aplikasi, termasuk database, cache, dan semua variabel lingkungan yang diperlukan oleh aplikasi sampel. Kontainer dev dapat berjalan di codespace GitHub, yang berarti Anda dapat menjalankan sampel di komputer apa pun dengan browser web.

Langkah 1: Di jendela browser baru:

  1. Masuk ke akun GitHub Anda.
  2. Buka https://github.com/Azure-Samples/msdocs-jboss-mysql-sample-app/fork.
  3. Batal pilih Salin cabang utama saja. Anda ingin semua cabang.
  4. Pilih Buat fork.

Langkah 2: Di fork GitHub:

  1. Pilih starter-no-infra utama>untuk cabang starter. Cabang ini hanya berisi proyek sampel dan tidak ada file atau konfigurasi terkait Azure. Pilih Kode>Buat codespace pada starter-no-infra. Codespace membutuhkan waktu beberapa menit untuk disiapkan.

Langkah 3: Di terminal codespace:

  1. Jalankan mvn clean wildfly:run.
  2. Ketika Anda melihat pemberitahuan Your application running on port 8080 is available., tunggu beberapa detik lebih lama agar server WildFly selesai memuat aplikasi. Lalu, pilih Buka di Browser. Anda akan melihat aplikasi sampel di tab browser baru. Untuk menghentikan server WildFly, ketik Ctrl+C.

Tip

Anda dapat bertanya kepada GitHub Copilot tentang repositori ini. Contohnya:

  • @workspace Apa yang dilakukan proyek ini?
  • @workspace Apa yang dilakukan folder .devcontainer?

Mengalami masalah? Periksa bagian Pemecahan Masalah.

2. Buat App Service dan MySQL

Pertama, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for MySQL. Untuk proses pembuatan, Anda menentukan:

  • Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS untuk aplikasi Anda dalam bentuk https://<app-name>-<hash>.<region>.azurewebsites.net.
  • Wilayah tempat menjalankan aplikasi secara fisik di dunia. Ini juga digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
  • Tumpukan runtime untuk aplikasi. Di sinilah Anda memilih versi Java yang akan digunakan untuk aplikasi Anda.
  • Paket hosting untuk aplikasi. Ini adalah tingkat harga yang mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
  • Resource Group untuk aplikasi. Grup sumber daya memungkinkan Anda mengelompokkan (dalam kontainer logika) semua sumber daya Azure yang diperlukan untuk aplikasi.

Masuk ke portal Microsoft Azure dan ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.

Langkah 1: Di portal Azure:

  1. Di bilah pencarian atas, ketik layanan aplikasi.
  2. Pilih item berlabel App Service di bawah judul Layanan .
  3. Pilih Buat>Aplikasi Web. Anda juga dapat menavigasi ke wizard pembuatan secara langsung.

Langkah 2: Di halaman Buat Aplikasi Web, isi formulir sebagai berikut.

  1. Nama: msdocs-jboss-mysql. Grup sumber daya bernama msdocs-jboss-mysql_group akan dibuat untuk Anda.
  2. Tumpukan runtime: Java 17.
  3. Tumpukan server web Java: Red Hat JBoss EAP 8. Jika Anda sudah mengonfigurasi langganan Red Hat dengan Azure, pilih Lisensi Red Hat JBoss EAP 8 BYO.
  4. Wilayah: Wilayah Azure apa pun di dekat Anda.
  5. Paket Linux: Buat baru dan gunakan nama msdocs-jboss-mysql.
  6. Paket harga: Premium V3 P0V3. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga yang berbeda.
  7. Menyebarkan dengan aplikasi Anda: Pilih Database. Azure Database for MySQL - Server Fleksibel dipilih untuk Anda secara default. Ini adalah database MySQL yang dikelola sepenuhnya sebagai layanan di Azure, kompatibel dengan edisi komunitas terbaru.
  8. Pilih Tinjau + buat.
  9. Setelah validasi selesai, pilih Buat.

Langkah 3: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Setelah penyebaran selesai, pilih tombol Buka sumber daya. Anda diarahkan ke aplikasi App Service, tetapi sumber daya berikut dibuat:

  • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
  • Paket App Service: Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat Dasar dibuat.
  • App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
  • Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
  • Server Fleksibel Azure Database for MySQL: Hanya dapat diakses dari jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
  • Zona DNS privat: Aktifkan resolusi DNS server database di jaringan virtual.
  • Titik akhir privat: Titik akhir akses untuk server database di jaringan virtual.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

3. Buat koneksi tanpa kata sandi

Dalam langkah ini, Anda menghasilkan koneksi layanan berbasis identitas terkelola, yang nantinya dapat Anda gunakan untuk membuat sumber data di server JBoss Anda. Dengan menggunakan identitas terkelola untuk terhubung ke database MySQL, kode Anda aman dari kebocoran rahasia yang tidak disengaja.

Langkah 1: Buat identitas terkelola.

  1. Di bilah pencarian atas, ketik identitas terkelola.
  2. Pilih item berlabel Identitas Terkelola di bawah judul Layanan.
  3. Pilih Buat.
  4. Di Grup sumber daya, pilih msdocs-jboss-mysql_group.
  5. Di Wilayah, pilih wilayah yang sama dengan yang Anda gunakan untuk aplikasi web Anda.
  6. Di Nama, ketik msdocs-jboss-mysql-server-identity.
  7. Pilih Tinjau + buat.
  8. Pilih Buat.

Langkah 2: Aktifkan autentikasi Microsoft Entra di server MySQL.

  1. Di bilah pencarian atas, ketik msdocs-jboss-mysql-server.
  2. Pilih sumber daya Server Fleksibel Azure Database for MySQL yang disebut msdocs-jboss-mysql-server.
  3. Dari menu sebelah kiri, pilih Autentikasi Keamanan>.
  4. Di Tetapkan akses ke, pilih autentikasi Microsoft Entra saja.
  5. Di Identitas terkelola yang ditetapkan pengguna, pilih Pilih.
  6. Pilih msdocs-jboss-mysql-server-identity, lalu pilih Tambahkan. Dibutuhkan waktu sejenak agar identitas ditetapkan ke server MySQL.
  7. Di Nama Admin Microsoft Entra, pilih Pilih.
  8. Temukan akun Azure Anda dan pilih akun tersebut, lalu pilih Pilih.
  9. Pilih Simpan dan tunggu operasi selesai.

Langkah 3: Tambahkan konektor layanan berbasis identitas terkelola.

  1. Di bilah pencarian atas, ketik msdocs-jboss-mysql.
  2. Pilih sumber daya App Service yang disebut msdocs-jboss-mysql.
  3. Di halaman App Service, di menu sebelah kiri, pilih Pengaturan > Konektor Layanan.
  4. Pilih Buat.
  5. Di tab Dasar:
  6. Atur Jenis layanan ke DB untuk server fleksibel MySQL.
  7. Atur server fleksibel MySQL ke msdocs-jboss-mysql-server.
  8. Atur database MySQL ke msdocs-jboss-mysql-database.
  9. Atur Jenis klien ke Java.
  10. Pilih tab Autentikasi .
  11. Pilih Identitas terkelola yang ditetapkan sistem.
  12. Pilih tab Tinjau + Buat .
  13. Saat validasi selesai, pilih Buat di Cloud Shell dan tunggu hingga operasi selesai di Cloud Shell.
  14. Saat Anda melihat output JSON, Anda dapat menutup Cloud Shell. Selain itu , tutup dialog Buat koneksi .
  15. Pilih Refresh untuk memperlihatkan konektor layanan baru.

Langkah 4: Tambahkan plugin autentikasi ke string koneksi.

  1. Dari menu sebelah kiri, pilih Variabel lingkungan.
  2. Pilih AZURE_MYSQL_CONNECTIONSTRING. Bidang Nilai harus berisi user tetapi tidak ada password. Pengguna adalah identitas terkelola.
  3. Server JBoss di aplikasi App Service Anda memiliki plugin autentikasi yang mengautentikasi identitas terkelola, tetapi Anda masih perlu menambahkannya ke string koneksi. Gulir ke akhir nilai dan tambahkan &defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin.
  4. Pilih Terapkan.
  5. Pilih Terapkan, lalu Konfirmasi.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

4. Konfirmasi sumber data JNDI

Jika Anda menambahkan pengaturan aplikasi yang berisi string koneksi JDBC yang valid untuk Oracle, SQL Server, PostgreSQL, atau MySQL, App Service menambahkan sumber data Java Naming and Directory Interface (JNDI) untuknya di server JBoss. Dalam langkah ini, Anda menggunakan koneksi SSH ke kontainer aplikasi untuk memverifikasi sumber data JNDI. Dalam prosesnya, Anda mempelajari cara mengakses shell SSH dan menjalankan JBoss CLI.

Langkah 1: Kembali ke halaman App Service:

  1. Di menu sebelah kiri, pilih Alat > Pengembangan SSH.
  2. Pilih Buka.

Langkah 2: Di terminal SSH:

  1. Jalankan $JBOSS_HOME/bin/jboss-cli.sh --connect.
  2. Di koneksi JBoss CLI, jalankan ls subsystem=datasources/data-source. Anda akan melihat sumber data yang dihasilkan secara otomatis yang disebut AZURE_MYSQL_CONNECTIONSTRING_DS.
  3. Dapatkan nama JNDI sumber data dengan /subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name). Anda sekarang memiliki nama java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DSJNDI , yang dapat Anda gunakan dalam kode aplikasi Anda nanti.

Catatan

Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Misalnya, jika Anda mengedit /opt/eap/standalone/configuration/standalone.xml atau mengubah konfigurasi server di JBoss CLI, perubahan tidak akan bertahan di luar mulai ulang aplikasi. Untuk mempertahankan perubahan Anda, gunakan skrip startup, seperti yang ditunjukkan di Mengonfigurasi sumber data untuk aplikasi Tomcat, JBoss, atau Java SE di Azure App Service

Mengalami masalah? Periksa bagian Pemecahan Masalah.

5. Menyebarkan kode sampel

Dalam langkah ini, Anda mengonfigurasi penyebaran GitHub menggunakan GitHub Actions. Ini hanya salah satu dari banyak cara untuk menyebarkan ke App Service, tetapi juga cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penyebaran Anda. Secara default, setiap git push repositori GitHub Anda memulai tindakan build dan deploy.

Seperti konvensi JBoss, jika Anda ingin menyebarkan ke konteks akar JBoss, beri nama artefak bawaan Anda ROOT.war.

Langkah 1: Kembali ke halaman App Service, di menu sebelah kiri, pilih Pusat Penyebaran Penyebaran>.

Langkah 2: Di halaman Pusat Penyebaran:

  1. Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
  2. Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
  3. Di Organisasi, pilih akun Anda.
  4. Di Repositori, pilih msdocs-jboss-mysql-sample-app.
  5. Di Cabang, pilih starter-no-infra. Ini adalah cabang yang sama dengan tempat Anda bekerja dengan aplikasi sampel Anda, tanpa file atau konfigurasi terkait Azure.
  6. Untuk Jenis autentikasi, pilih Identitas yang ditetapkan pengguna.
  7. Di menu atas, pilih Simpan. App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori .github/workflows. Secara default, pusat penyebaran membuat identitas yang ditetapkan pengguna untuk alur kerja guna mengautentikasi menggunakan Microsoft Entra (autentikasi OIDC). Untuk opsi autentikasi alternatif, lihat Menyebarkan ke App Service menggunakan GitHub Actions.

Langkah 3: Kembali ke ruang kode GitHub dari fork sampel Anda, jalankan git pull origin starter-no-infra. Ini menarik file alur kerja yang baru diterapkan ke ruang kode Anda. Anda dapat memodifikasinya sesuai dengan kebutuhan Anda di .github/workflows/starter-no-infra_msdocs-jboss-mysql.yml.

Langkah 4 (Opsi 1: dengan GitHub Copilot):

  1. Mulai sesi obrolan baru dengan mengklik tampilan Obrolan , lalu klik +.
  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang sumber data dan bagaimana sumber data dikonfigurasi java:jboss/MySQLDS .
  3. Katakanlah, "Sumber data di JBoss di Azure menggunakan nama JNDI java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan di kelas . GitHub Copilot tidak memberi Anda respons yang sama setiap kali, Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

Langkah 4 (Opsi 2: tanpa GitHub Copilot):

  1. Buka src/main/resources/META-INF/persistence.xml di penjelajah. Ketika aplikasi dimulai, aplikasi memuat pengaturan database dalam file ini.
  2. Ubah nilai dari <jta-data-source> ke java:jboss/MySQLDSjava:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS, yang merupakan sumber data yang Anda temukan dengan JBoss CLI sebelumnya di shell SSH.

Langkah 5:

  1. Pilih ekstensi Kontrol Sumber.
  2. Di kotak teks, ketik pesan penerapan seperti Configure Azure JNDI name.
  3. Pilih Terapkan, lalu konfirmasi dengan Ya.
  4. Pilih Sinkronkan perubahan 1, lalu konfirmasi dengan OK.

Langkah 6: Kembali ke halaman Pusat Penyebaran di portal Azure:

  1. Pilih Log. Eksekusi penyebaran baru sudah dimulai dari perubahan yang Anda lakukan.
  2. Di item log untuk eksekusi penyebaran, pilih entri Bangun/Sebarkan Log dengan tanda waktu terbaru.

Langkah 7: Anda dibawa ke repositori GitHub Anda dan melihat bahwa tindakan GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan. Tunggu hingga eksekusi GitHub menampilkan status Selesai. Dibutuhkan sekitar 5 menit.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

6. Menelusuri aplikasi

Langkah 1: Di halaman App Service:

  1. Dari menu kiri, pilih Ringkasan.
  2. Di Domain default, pilih URL aplikasi Anda.

Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for MySQL.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

7. Mengalirkan log diagnostik

Azure App Service mengambil semua output pesan ke konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel mencakup pernyataan pengelogan Log4j standar untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut:

private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());

@PersistenceContext
private EntityManager entityManager;

public List<Task> getAllTasks() {
    logger.log(Level.INFO, "Finding all tasks. ");

    return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}

Di halaman App Service, dari menu sebelah kiri, pilih Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.

Pelajari selengkapnya tentang pengelogan di aplikasi Java dalam seri di Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

8. Membersihkan sumber daya

Setelah selesai, Anda dapat menghapus semua sumber daya dari langganan Azure dengan menghapus grup sumber daya.

Langkah 1: Di bilah pencarian di bagian atas portal Azure:

  1. Masukkan nama grup sumber daya msdocs-jboss-mysql_group.
  2. Pilih grup sumber daya.

Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.

Langkah 3:

  1. Konfirmasikan penghapusan Anda dengan mengetik nama grup sumber daya.
  2. Pilih Hapus.
  3. Konfirmasi dengan Hapus lagi.

2. Buat sumber daya Azure dan sebarkan aplikasi sampel

Dalam langkah ini, Anda membuat sumber daya Azure dan menyebarkan aplikasi sampel ke App Service di Linux. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for MySQL.

Kontainer pengembangan sudah memiliki Azure Developer CLI (AZD).

  1. Dari akar repositori, jalankan azd init.

    azd init --template jboss-app-service-mysql-infra
    
  2. Saat diminta, berikan jawaban berikut:

    Pertanyaan Jawaban
    Lanjutkan menginisialisasi aplikasi di '<your-directory>'? Y
    Apa yang ingin Anda lakukan dengan file-file ini? Jaga agar file saya yang ada tidak berubah
    Masukkan nama lingkungan baru Ketik nama unik. Templat AZD menggunakan nama ini sebagai bagian dari nama DNS aplikasi web Anda di Azure (<app-name>-<hash>.azurewebsites.net). Karakter alfanumerik dan tanda hubung diperbolehkan.
  3. Masuk ke Azure dengan menjalankan azd auth login perintah dan ikuti perintah:

    azd auth login
    
  4. Buat sumber daya Azure yang diperlukan dan sebarkan kode aplikasi dengan azd up perintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.

    azd up
    

    Perintah azd up membutuhkan waktu sekitar 15 menit untuk diselesaikan (cache Redis membutuhkan waktu paling lama). Ini juga mengkompilasi dan menyebarkan kode aplikasi Anda, tetapi Anda akan memodifikasi kode nanti untuk bekerja dengan App Service. Saat sedang berjalan, perintah menyediakan pesan tentang proses provisi dan penyebaran, termasuk tautan ke penyebaran di Azure. Setelah selesai, perintah juga menampilkan tautan ke aplikasi penyebaran.

    Templat AZD ini berisi file (azure.yaml dan direktori infra ) yang menghasilkan arsitektur aman secara default dengan sumber daya Azure berikut:

    • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
    • Paket App Service: Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat B1 dibuat.
    • App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
    • Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
    • Server Fleksibel Azure Database for MySQL: Hanya dapat diakses dari jaringan virtual. Database dibuat untuk Anda di server.
    • Azure Cache for Redis: Hanya dapat diakses dari dalam jaringan virtual.
    • Titik akhir privat: Titik akhir akses untuk brankas kunci dan cache Redis di jaringan virtual.
    • Zona DNS privat: Aktifkan resolusi DNS brankas kunci, server database, dan cache Redis di jaringan virtual.
    • Ruang kerja Analitik Log: Bertindak sebagai kontainer target untuk aplikasi Anda untuk mengirimkan lognya, di mana Anda juga dapat mengkueri log.
    • Brankas kunci: Digunakan untuk menjaga kata sandi database Anda tetap sama saat Anda menyebarkan ulang dengan AZD.

    Setelah perintah selesai membuat sumber daya dan menyebarkan kode aplikasi untuk pertama kalinya, aplikasi sampel yang disebarkan belum berfungsi karena Anda harus membuat perubahan kecil untuk membuatnya terhubung ke database di Azure.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

3. Verifikasi string koneksi

Templat AZD yang Anda gunakan menghasilkan variabel konektivitas untuk Anda sudah sebagai pengaturan aplikasi dan mengeluarkannya ke terminal untuk kenyamanan Anda. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda.

  1. Dalam output AZD, temukan pengaturan AZURE_MYSQL_CONNECTIONSTRINGaplikasi . Hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam output AZD:

     App Service app has the following app settings:
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
             - AZURE_MYSQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
     

    AZURE_MYSQL_CONNECTIONSTRINGberisi string koneksi ke database MySQL di Azure. Anda perlu menggunakannya dalam kode Anda nanti.

  2. Demi kenyamanan Anda, templat AZD menunjukkan tautan langsung ke halaman pengaturan aplikasi aplikasi. Temukan tautan dan buka di tab browser baru.

    Jika Anda menambahkan pengaturan aplikasi yang berisi oracle, SQL Server, PostgreSQL, atau mySQL yang valid string koneksi, App Service menambahkannya sebagai sumber data Java Naming and Directory Interface (JNDI) dalam file context.xml server JBoss.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

4. Konfirmasi sumber data JNDI

Dalam langkah ini, Anda menggunakan koneksi SSH ke kontainer aplikasi untuk memverifikasi sumber data JNDI di server JBoss. Dalam prosesnya, Anda mempelajari cara mengakses shell SSH untuk kontainer JBoss.

  1. Dalam output AZD, temukan URL untuk sesi SSH dan navigasikan ke dalamnya di browser. Ini terlihat seperti ini dalam output:

     Open SSH session to App Service container at: https://<app-name>-<hash>.scm.azurewebsites.net/webssh/host
     
  2. Di terminal SSH, jalankan $JBOSS_HOME/bin/jboss-cli.sh --connect.

  3. Di koneksi JBoss CLI, jalankan ls subsystem=datasources/data-source. Anda akan melihat sumber data yang dihasilkan secara otomatis yang disebut AZURE_MYSQL_CONNECTIONSTRING_DS.

  4. Dapatkan nama JNDI sumber data dengan /subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name). Anda sekarang memiliki nama java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DSJNDI , yang dapat Anda gunakan dalam kode aplikasi Anda nanti.

    Cuplikan layar yang menampilkan perintah untuk menjalankan shell SSH dan keluarannya.

Catatan

Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Misalnya, jika Anda mengedit /opt/eap/standalone/configuration/standalone.xml atau mengubah konfigurasi server di JBoss CLI, perubahan tidak akan bertahan di luar mulai ulang aplikasi. Untuk mempertahankan perubahan Anda, gunakan skrip startup, seperti yang ditunjukkan di Mengonfigurasi sumber data untuk aplikasi Tomcat, JBoss, atau Java SE di Azure App Service

Mengalami masalah? Periksa bagian Pemecahan Masalah.

5. Ubah kode sampel dan sebarkan ulang

  1. Di ruang kode GitHub, mulai sesi obrolan baru dengan mengklik tampilan Obrolan , lalu klik +.

  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang sumber data dan bagaimana sumber data dikonfigurasi java:jboss/MySQLDS .

  3. Tanyakan, "@workspace saya ingin mengganti sumber data yang ditentukan dalam persistence.xml dengan sumber data JNDI yang ada di JBoss." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Langkah 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file persistence.xml .

  4. Buka src/main/resources/META-INF/persistence.xml di explorer dan buat perubahan JNDI yang disarankan.

    GitHub Copilot tidak memberi Anda respons yang sama setiap kali, Anda mungkin perlu mengajukan pertanyaan lain untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

  5. Di terminal codespace, jalankan azd deploy.

    azd deploy
    

Tip

Anda juga dapat menggunakan azd up selalu, yang melakukan semua azd package, azd provision, dan azd deploy.

Untuk mengetahui bagaimana file Perang dibungkus, Anda dapat menjalankan azd package --debug dengan sendirinya.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

6. Menelusuri aplikasi

  1. Di output AZD, temukan URL aplikasi Anda dan navigasikan ke url tersebut di browser. URL terlihat seperti ini dalam output AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
     
  2. Tambahkan beberapa tugas ke dalam daftar.

    Cuplikan layar aplikasi web JBoss dengan MySQL yang berjalan di Azure memperlihatkan tugas.

    Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for MySQL.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

7. Mengalirkan log diagnostik

Azure App Service dapat mengambil log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Untuk kenyamanan, templat AZD sudah mengaktifkan pengelogan ke sistem file lokal dan mengirimkan log ke ruang kerja Analitik Log.

Aplikasi sampel mencakup pernyataan pengelogan Log4j standar untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut:

private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());

@PersistenceContext
private EntityManager entityManager;

public List<Task> getAllTasks() {
    logger.log(Level.INFO, "Finding all tasks. ");

    return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}

Dalam output AZD, temukan tautan untuk mengalirkan log App Service dan navigasikan ke log tersebut di browser. Tautan terlihat seperti ini dalam output AZD:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Pelajari selengkapnya tentang pengelogan di aplikasi Java dalam seri di Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

8. Membersihkan sumber daya

Untuk menghapus semua sumber daya Azure di lingkungan penyebaran saat ini, jalankan azd down dan ikuti perintahnya.

azd down

Pemecahan Masalah

Saya melihat kesalahan 'tidak berhak menggunakan fitur Bawa Lisensi Anda Sendiri' di wizard pembuatan.

Jika Anda melihat kesalahan: The subscription '701ea799-fb46-4407-bb67-9cbcf289f1c7' is not entitled to use the Bring Your Own License feature when creating the application, artinya Anda memilih Lisensi BYO Red Hat JBoss EAP 7/8 di tumpukan server web Java tetapi belum menyiapkan akun Azure Anda di Red Hat Cloud Access atau tidak memiliki lisensi JBoss EAP aktif di Red Hat Cloud Access.

Tampilan penyebaran portal untuk Server Fleksibel Azure Database for MySQL memperlihatkan status Konflik.

Bergantung pada langganan dan wilayah yang Anda pilih, Anda mungkin melihat status penyebaran untuk Azure Database for MySQL Flexible Server menjadi Conflict, dengan pesan berikut dalam Detail operasi:

InternalServerError: An unexpected error occured while processing the request.

Kesalahan ini kemungkinan besar disebabkan oleh batas langganan Anda untuk wilayah yang Anda pilih. Coba pilih wilayah yang berbeda untuk penyebaran Anda.

Dialog Buat koneksi memperlihatkan tombol Buat Di Cloud Shell tetapi tidak diaktifkan.

Anda mungkin juga melihat pesan kesalahan dalam dialog: The database server is in Virtual Network and Cloud Shell can't connect to it. Please copy the commands and execute on an environment which can connect to the database server in Virtual Network.

Otomatisasi konektor layanan memerlukan akses jaringan ke server MySQL. Lihat pengaturan jaringan sumber daya server MySQL Anda dan pastikan Izinkan akses publik ke sumber daya ini melalui internet menggunakan alamat IP publik dipilih minimal. Konektor Layanan dapat mengambilnya dari sana.

Jika Anda tidak melihat kotak centang ini, Anda mungkin telah membuat penyebaran menggunakan wizard Aplikasi Web + Database sebagai gantinya, dan penyebaran mengunci semua akses jaringan publik ke server MySQL. Tidak ada cara untuk mengubah konfigurasi. Karena kontainer Linux aplikasi dapat mengakses MySQL melalui integrasi jaringan virtual, Anda dapat menginstal Azure CLI di sesi SSH aplikasi dan menjalankan perintah Cloud Shell yang disediakan di sana.

Aplikasi sampel yang disebarkan tidak menampilkan aplikasi daftar tugas.

Jika Anda melihat halaman percikan JBoss alih-alih aplikasi daftar tugas, App Service kemungkinan besar masih memuat kontainer yang diperbarui dari penyebaran kode terbaru Anda. Tunggu beberapa menit dan refresh halaman.

Aplikasi saya gagal dimulai, dan saya melihat 'Akses ditolak untuk pengguna... (menggunakan kata sandi: TIDAK)' di log.

Kesalahan ini kemungkinan besar karena Anda tidak menambahkan plugin autentikasi tanpa kata sandi ke string koneksi (lihat kode sampel Java untuk Mengintegrasikan Azure Database for MySQL dengan Konektor Layanan). Ubah string koneksi MySQL dengan mengikuti instruksi di 3. Membuat koneksi tanpa kata sandi.

Saya melihat kesalahan "Tabel 'Tugas' sudah ada" di log diagnostik.

Anda dapat mengabaikan kesalahan Hibernate ini karena menunjukkan bahwa kode aplikasi tersambung ke database MySQL. Aplikasi dikonfigurasi untuk membuat tabel yang diperlukan saat dimulai (lihat src/main/resources/META-INF/persistence.xml). Ketika aplikasi dimulai pertama kali, aplikasi harus berhasil membuat tabel, tetapi pada mulai ulang berikutnya, Anda akan melihat kesalahan ini karena tabel sudah ada.

Tanya jawab umum

Berapa biaya untuk penyiapan ini?

Harga untuk sumber daya yang dibuat adalah sebagai berikut:

  • Paket App Service dibuat di tingkat P0v3 dan dapat ditingkatkan atau diturunkan skalanya. Lihat Harga App Service.
  • Server fleksibel MySQL dibuat di tingkat D2ds dan dapat ditingkatkan atau diturunkan skalanya. Lihat Harga Azure Database for MySQL.
  • Azure Cache for Redis dibuat di tingkat Dasar dengan ukuran cache minimum. Ada biaya kecil yang terkait dengan tingkat ini. Anda dapat meningkatkannya ke tingkat performa yang lebih tinggi untuk ketersediaan, pengklusteran, dan fitur lainnya yang lebih tinggi. Lihat Harga Azure Cache for Redis.
  • Jaringan virtual tidak dikenakan biaya kecuali Anda mengonfigurasi fungsionalitas tambahan, seperti peering. Lihat Harga Azure Virtual Network.
  • Zona DNS privat dikenakan biaya kecil. Lihat Harga Azure DNS.

Bagaimana cara menyambungkan ke server MySQL di belakang jaringan virtual dengan alat lain?

Dalam tutorial ini, aplikasi App Service sudah memiliki konektivitas jaringan ke server MySQL dan dapat mengautentikasi dengan Microsoft Entra dengan menggunakan identitas terkelola yang ditetapkan sistemnya. Anda dapat terhubung ke MySQL langsung dari dalam kontainer aplikasi dengan menjalankan perintah berikut dalam sesi SSH (dapatkan nilai , , <user>dan <database> Anda <server>dari AZURE_MYSQL_CONNECTIONSTRING pengaturan aplikasi):

apt-get update
apt-get install curl less mysql-client jq -y
mysql -h <server> --user <user> --database <database> --enable-cleartext-plugin --password=`curl "${IDENTITY_ENDPOINT}?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01" -H "X-IDENTITY-HEADER: $IDENTITY_HEADER" -s | jq -r '.access_token'`

Beberapa pertimbangan:

  • Alat yang Anda instal di sesi SSH tidak bertahan di seluruh mulai ulang aplikasi.
  • Jika Anda mengikuti langkah-langkah portal dan mengonfigurasi MySQL menggunakan pengguna Microsoft Entra Anda sebagai administrator, Anda dapat tersambung ke MySQL menggunakan pengguna Microsoft Entra.
  • Untuk terhubung dari alat desktop seperti MySQL Workbench, komputer Anda harus berada dalam jaringan virtual, seperti Azure VM yang disebarkan ke jaringan virtual yang sama. Anda juga harus mengonfigurasi autentikasi secara terpisah, baik dengan identitas terkelola atau dengan pengguna Microsoft Entra.
  • Untuk menyambungkan dari komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure, Anda tidak dapat mengonfigurasi autentikasi dengan identitas terkelola, tetapi Anda dapat mengonfigurasi autentikasi dengan menggunakan pengguna Microsoft Entra.
  • Anda juga dapat mengintegrasikan Azure Cloud Shell dan menyambungkan menggunakan Azure CLI atau MySQL CLI. Untuk mengautentikasi, Anda dapat mengonfigurasi pengguna Microsoft Entra.

Bagaimana cara mendapatkan token akses yang valid untuk koneksi MySQL menggunakan autentikasi Microsoft Entra?

Untuk pengguna Microsoft Entra, identitas terkelola yang ditetapkan sistem, atau identitas terkelola yang ditetapkan pengguna yang berwenang untuk mengakses database MySQL, Azure CLI dapat membantu Anda menghasilkan token akses. Dalam kasus identitas terkelola, identitas harus dikonfigurasi pada aplikasi App Service atau VM tempat Anda menjalankan Azure CLI.

# Sign in as a Microsoft Entra user
az login
# Sign in as the system-assigned managed identity
az login --identity
# Sign in as a user-assigned managed identity
az login --identity --username <client-id-of-user-assigned-identity>

# Get an access token
az account get-access-token --resource-type oss-rdbms

Jika mau, Anda juga dapat menggunakan perintah az mysql flexible-server connect Azure CLI untuk menyambungkan ke MySQL. Saat diminta, gunakan token akses sebagai kata sandi.

az mysql flexible-server connect -n <server-name-only> -u <user> -d <database> --interactive

Untuk informasi selengkapnya, lihat:

Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?

Menggunakan file alur kerja yang dibuat secara otomatis dari App Service sebagai contoh, masing-masing git push memulai eksekusi build dan penyebaran baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan dan mendorong ke GitHub. Contohnya:

git add .
git commit -m "<some-message>"
git push origin starter-no-infra

Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna

Lihat Menyiapkan penyebaran GitHub Actions dari Pusat Penyebaran.

Apa yang dapat saya lakukan dengan GitHub Copilot di codespace saya?

Anda mungkin melihat bahwa tampilan obrolan GitHub Copilot sudah ada untuk Anda saat membuat codespace. Untuk kenyamanan Anda, kami menyertakan ekstensi obrolan GitHub Copilot dalam definisi kontainer (lihat .devcontainer/devcontainer.json). Namun, Anda memerlukan akun GitHub Copilot (uji coba gratis 30 hari tersedia).

Beberapa tips untuk Anda ketika Anda berbicara dengan GitHub Copilot:

  • Dalam satu sesi obrolan, pertanyaan dan jawaban dibangun satu sama lain dan Anda dapat menyesuaikan pertanyaan Anda untuk menyempurnakan jawaban yang Anda dapatkan.
  • Secara default, GitHub Copilot tidak memiliki akses ke file apa pun di repositori Anda. Untuk mengajukan pertanyaan tentang file, buka file di editor terlebih dahulu.
  • Untuk membiarkan GitHub Copilot memiliki akses ke semua file di repositori saat menyiapkan jawabannya, mulai pertanyaan Anda dengan @workspace. Untuk informasi selengkapnya, lihat Use the @workspace agent .
  • Dalam sesi obrolan, GitHub Copilot dapat menyarankan perubahan dan (dengan @workspace) bahkan tempat untuk membuat perubahan, tetapi tidak diizinkan untuk membuat perubahan untuk Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.

Berikut adalah beberapa hal lain yang dapat Anda katakan untuk menyempurnakan jawaban yang Anda dapatkan:

  • Ubah kode ini untuk menggunakan sumber data jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS.
  • Beberapa impor dalam kode Anda menggunakan javax tetapi saya memiliki aplikasi Jakarta.
  • Saya ingin kode ini berjalan hanya jika variabel lingkungan AZURE_MYSQL_CONNECTIONSTRING diatur.
  • Saya ingin kode ini hanya berjalan di Azure App Service dan bukan secara lokal.

Langkah berikutnya

Pelajari selengkapnya tentang menjalankan aplikasi Java di App Service di panduan pengembang.

Pelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.