Tutorial: Debug aplikasi Java yang digunakan pada kluster Service Fabric lokal

Tutorial ini adalah bagian kedua dari rangkaian tutorial. Anda belajar cara melampirkan debugger jarak jauh menggunakan Eclipse untuk aplikasi Service Fabric. Selain itu, Anda mempelajari cara mengalihkan log dari aplikasi yang sedang berjalan ke lokasi yang nyaman bagi pengembang.

Dalam tutorial ini, Anda akan belajar cara:

Di bagian dua seri tutorial ini, Anda belajar cara:

  • Aplikasi Debug Java menggunakan Eclipse
  • Mengalihkan log ke lokasi yang dapat dikonfigurasi

Prasyarat

Sebelum Anda memulai tutorial ini:

  • Siapkan lingkungan pengembangan Anda untuk Mac atau Linux. Ikuti petunjuk untuk memasang plug-in Eclipse, Gradle, Service Fabric SDK, dan Service Fabric CLI (sfctl).

Unduh aplikasi sampel Voting

Jika Anda tidak membangun aplikasi sampel Voting di bagian satu dari seri tutorial ini, Anda dapat mengunduhnya. Di jendela perintah, jalankan perintah berikut untuk mengkloning repositori aplikasi sampel ke komputer lokal Anda.

git clone https://github.com/Azure-Samples/service-fabric-java-quickstart

Membangun dan menerapkan aplikasi ke kluster pengembangan lokal.

Aplikasi Debug Java menggunakan Eclipse

  1. Buka Eclipse IDE pada komputer dan klik File -> Impor....

  2. Di jendela popup, pilih opsi Umum -> Proyek yang Ada ke dalam Ruang Kerja dan tekan Berikutnya.

  3. Di jendela Impor Proyek, pilih opsi Pilih direktori akar dan pilih direktori Voting. Jika Anda mengikuti seri satu tutorial, direktori Voting berada di direktori Eclipse-workspace.

  4. Perbarui entryPoint.sh layanan yang ingin Anda debug, sehingga akan memulai proses Java dengan parameter debug jarak jauh. Untuk tutorial ini frontend stateless digunakan: Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh. Port 8001 diatur untuk debugging dalam contoh ini.

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar VotingWeb.jar
    
  5. Perbarui Manifes Aplikasi dengan mengatur jumlah instans atau jumlah replika untuk layanan yang sedang di-debug ke satu. Setelan ini menghindari konflik untuk port yang digunakan untuk proses debug. Misalnya, untuk layanan stateless, ditetapkan InstanceCount="1" dan untuk layanan stateful menetapkan target dan min replica menetapkan ukuran ke 1 sebagai berikut: TargetReplicaSetSize="1" MinReplicaSetSize="1".

  6. Di Eclipse IDE, pilih Run -> Debug Configurations -> Remote Java Application, tekan tombol Baru, atur properti sebagai berikut dan klik Terapkan.

    Name: Voting
    Project: Voting
    Connection Type: Standard
    Host: localhost
    Port: 8001
    
  7. Pasang titik henti pada baris 109 dari file Voting/VotingWeb/src/statelessservice/HttpCommunicationListener.java.

  8. Di Package Explorer, klik kanan pada proyek Voting dan klik Service Fabric -> Publish Application ...

  9. Di jendela Terbitkan Aplikasi, pilih Local.json dari menu tarik-turun, dan klik Terbitkan.

  10. Di Eclipse IDE, pilih Run -> Debug Configurations -> Remote Java Application, klik konfigurasi Voting yang Anda buat dan klik Debug.

  11. Buka browser web Anda dan akses localhost:8080. Ini akan secara otomatis mencapai breakpoint dan Eclipse akan memasuki perspektif Debug.

Sekarang Anda dapat menerapkan langkah-langkah yang sama ini untuk men-debug aplikasi Service Fabric apa pun di Eclipse.

Mengalihkan log aplikasi ke lokasi kustom

Langkah-langkah berikut berjalan melalui cara mengalihkan log aplikasi dari lokasi /var/log/syslog default ke lokasi kustom.

  1. Saat ini, aplikasi yang berjalan di kluster Service Fabric Linux hanya mendukung mengambil satu file log. Untuk menyiapkan aplikasi sehingga log selalu masuk ke /tmp/mysfapp0.0.log, buat file bernama logging.properties di lokasi berikut Voting/VotingApplication/VotingWebPkg/Code/logging.properties dan tambahkan konten berikut.

    handlers = java.util.logging.FileHandler
    
    java.util.logging.FileHandler.level = ALL
    java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
    
    # This value specifies your custom location.
    # You will have to ensure this path has read and write access by the process running the SF Application
    java.util.logging.FileHandler.pattern = /tmp/mysfapp0.0.log
    
  2. Tambahkan parameter berikut dalam Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh untuk perintah eksekusi Java:

    -Djava.util.logging.config.file=logging.properties
    

    Contoh berikut menunjukkan eksekusi sampel dengan debugger terpasang, mirip dengan eksekusi di bagian sebelumnya.

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -Djava.util.logging.config.file=logging.properties -jar VotingWeb.jar
    

Pada tahap ini, Anda telah mempelajari cara men-debug dan mengakses log aplikasi ketika mengembangkan aplikasi Service Fabric Java Anda.

Langkah berikutnya

Dalam bagian tutorial ini, Anda belajar cara:

  • Aplikasi Debug Java menggunakan Eclipse
  • Mengalihkan log ke lokasi yang dapat dikonfigurasi

Lanjutkan ke tutorial berikutnya: