Pengantar Dasar JMX

1. Perkenalan

Kerangka kerja Java Management Extensions (JMX) diperkenalkan di Java 1.5 dan telah diterima secara luas di komunitas pengembang Java sejak awal.

Ini menyediakan infrastruktur yang mudah dikonfigurasi, terukur, andal, dan lebih atau kurang ramah untuk mengelola aplikasi Java baik secara lokal maupun jarak jauh. Kerangka kerja ini memperkenalkan konsep MBeans untuk manajemen aplikasi secara real-time.

Artikel ini adalah panduan langkah demi langkah pemula untuk membuat dan menyiapkan MBean dasar dan mengelolanya melalui JConsole.

2. Arsitektur JMX

Arsitektur JMX mengikuti pendekatan tiga lapis:

  1. Lapisan instrumentasi: MBeans terdaftar dengan agen JMX tempat sumber daya dikelola
  2. Lapisan agen JMX: komponen inti (MbeanServer) yang memelihara registri MBeans yang dikelola dan menyediakan antarmuka untuk mengaksesnya
  3. Lapisan manajemen jarak jauh: biasanya alat sisi klien seperti JConsole

3. Membuat Kelas MBean

Saat membuat MBeans, ada pola desain tertentu yang harus kita sesuaikan. Model kelas MBean HARUS mengimplementasikan antarmuka dengan nama berikut: "nama kelas model" ditambah MBean .

Jadi mari kita definisikan antarmuka MBean kita dan kelas yang mengimplementasikannya:

public interface GameMBean { public void playFootball(String clubName); public String getPlayerName(); public void setPlayerName(String playerName); } public class Game implements GameMBean { private String playerName; @Override public void playFootball(String clubName) { System.out.println( this.playerName + " playing football for " + clubName); } @Override public String getPlayerName() { System.out.println("Return playerName " + this.playerName); return playerName; } @Override public void setPlayerName(String playerName) { System.out.println("Set playerName to value " + playerName); this.playerName = playerName; } }

Kelas Game mengganti metode playFootball () dari antarmuka induk. Selain itu, kelas memiliki variabel anggota playerName dan pengambil / penyetel untuk itu.

Perhatikan bahwa pengambil / penyetel juga dideklarasikan di antarmuka induk.

4. Menginstruksikan Dengan Agen JMX

Agen JMX adalah entitas yang berjalan secara lokal atau jarak jauh yang memberikan akses manajemen ke MBeans yang terdaftar dengan mereka.

Mari gunakan PlatformMbeanServer - komponen inti dari agen JMX dan daftarkan Game MBean dengannya.

Kami akan menggunakan entitas lain - ObjectNam e - untuk mendaftarkan instance kelas Game dengan PlatformMbeanServer ; ini adalah String yang terdiri dari dua bagian:

  • domain : dapat berupa String arbitrer, tetapi menurut konvensi penamaan MBean, domain tersebut harus memiliki nama paket Java (menghindari konflik penamaan)
  • key: daftar pasangan “ key = value ” yang dipisahkan dengan koma

Dalam contoh ini, kita akan menggunakan: "com.baledung.tutorial: type = basic, name = game".

Kita akan mendapatkan MBeanServer dari kelas pabrik java.lang.management.ManagementFactory.

Kemudian kita akan mendaftarkan model MBean menggunakan ObjectName yang dibuat :

try { ObjectName objectName = new ObjectName("com.baeldung.tutorial:type=basic,name=game"); MBeanServer server = ManagementFactory.getPlatformMBeanServer(); server.registerMBean(new Game(), objectName); } catch (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) { // handle exceptions }

Terakhir, hanya untuk dapat mengujinya - kami akan menambahkan loop sementara untuk mencegah aplikasi berhenti sebelum kami dapat mengakses MBean melalui JConsole:

while (true) { }

5. Mengakses MBean

5.1. Menghubungkan dari Sisi Klien

  1. Mulai aplikasi di Eclipse
  2. Mulai Jconsole (terletak di folder bin dari direktori instalasi JDK mesin Anda)
  3. Koneksi -> Koneksi baru -> pilih proses Java lokal dari tutorial ini -> Hubungkan -> Peringatan koneksi SSl tidak aman -> Lanjutkan dengan koneksi tidak aman
  4. Setelah koneksi dibuat, klik pada tab MBeans kanan atas dari panel View
  5. Daftar MBeans terdaftar akan muncul di kolom kiri
  6. Klik com.baeldung.tutorial -> basic -> game
  7. Di bawah permainan, akan ada dua baris, masing-masing untuk atribut dan operasi

Berikut sekilas tentang bagian JConsole dari proses tersebut:

5.2. Mengelola MBean

Dasar-dasar manajemen MBean sederhana:

  • Atribut dapat dibaca atau ditulis
  • Metode dapat dipanggil dan argumen dapat diberikan kepadanya atau nilai yang dikembalikan darinya

Mari kita lihat apa artinya untuk Game MBean dalam praktiknya:

  • atribut : ketik nilai baru untuk atribut playerName - misalnya "Messi" dan klik tombol Refresh

Log berikut akan muncul di konsol Eclipse:

Setel playerName untuk menghargai Messi

  • operasi : ketik nilai untuk argumen String metode playFootBall () - misalnya "Barcelona" dan klik tombol metode. Sebuah peringatan jendela untuk doa sukses akan muncul

Log berikut akan muncul di konsol gerhana:

Messi bermain sepak bola untuk Barcelona

6. Kesimpulan

Tutorial ini menyentuh dasar-dasar menyiapkan aplikasi berkemampuan JMX dengan menggunakan MBeans. Juga, itu membahas tentang menggunakan alat sisi klien yang khas seperti JConsole untuk mengelola MBean berinstrumen.

Domain teknologi JMX memiliki cakupan dan jangkauan yang sangat luas. Tutorial ini dapat dianggap sebagai langkah pemula menuju itu.

Kode sumber dari tutorial ini dapat ditemukan di Github.