Pengenalan Asas kepada JMX

1. Pengenalan

Rangka kerja Java Management Extensions (JMX) diperkenalkan di Java 1.5 dan telah diterima secara meluas dalam komuniti pengembang Java sejak awal.

Ia menyediakan infrastruktur yang mudah dikonfigurasi, terukur, dipercayai dan lebih kurang mesra untuk menguruskan aplikasi Java sama ada secara tempatan atau jarak jauh. Kerangka ini memperkenalkan konsep MBeans untuk pengurusan aplikasi masa nyata.

Artikel ini adalah panduan langkah demi langkah pemula untuk membuat dan menyiapkan MBean asas dan menguruskannya melalui JConsole.

2. Senibina JMX

Senibina JMX mengikuti pendekatan tiga lapisan:

  1. Lapisan instrumen: MBeans berdaftar dengan ejen JMX melalui mana sumber dikendalikan
  2. Lapisan ejen JMX: komponen teras (MbeanServer) yang mengekalkan pendaftaran MBeans terurus dan menyediakan antara muka untuk mengaksesnya
  3. Lapisan pengurusan jauh: biasanya alat sisi pelanggan seperti JConsole

3. Membuat Kelas MBean

Semasa membuat MBeans, ada corak reka bentuk tertentu yang mesti kita patuhi. Model MBean model HARUS melaksanakan antara muka dengan nama berikut: "nama kelas model" ditambah MBean .

Oleh itu, mari tentukan antara muka MBean kami dan kelas yang melaksanakannya:

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; } }

The Permainan kelas mengatasi kaedah playFootball () antara muka ibu bapa. Selain daripada itu, kelas ini mempunyai nama pemain berubah-ubah anggota dan pengambil / pengatur untuknya.

Perhatikan bahawa getter / setter juga dinyatakan dalam antara muka induk.

4. Berkarya Dengan Ejen JMX

Ejen JMX adalah entiti yang beroperasi sama ada di dalam negara atau dari jauh yang memberikan akses pengurusan kepada MBeans yang berdaftar dengan mereka.

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

Kami akan menggunakan entiti lain - ObjectNam e - untuk mendaftarkan contoh kelas Permainan dengan PlatformMbeanServer ; ini adalah tali yang terdiri daripada dua bahagian:

  • domain : boleh menjadi String sewenang-wenang, tetapi menurut konvensyen penamaan MBean, harus memiliki nama paket Java (mengelakkan konflik penamaan)
  • kunci: senarai pasangan " kunci = nilai " yang dipisahkan dengan koma

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

Kami akan mendapatkan MBeanServer dari kilang 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 }

Akhirnya, untuk dapat mengujinya - kami akan menambahkan gelung sementara untuk mengelakkan aplikasi berhenti sebelum kita dapat mengakses MBean melalui JConsole:

while (true) { }

5. Mengakses MBean

5.1. Bersambung dari Bahagian Pelanggan

  1. Mulakan aplikasi di Eclipse
  2. Mulakan Jconsole (terletak di folder tong direktori pemasangan JDK mesin anda)
  3. Sambungan -> Sambungan baru -> pilih proses Java tempatan tutorial ini -> Sambungkan -> Amaran sambungan SSl tidak selamat -> Teruskan dengan sambungan tidak selamat
  4. Setelah sambungan dibuat, klik pada tab MBeans kanan atas panel Pandangan
  5. Senarai MBeans yang berdaftar akan muncul di ruangan kiri
  6. Klik permainan com.baeldung.tutorial -> basic ->
  7. Di bawah permainan, akan ada dua baris, masing-masing untuk atribut dan operasi

Berikut adalah gambaran ringkas mengenai bahagian proses JConsole:

5.2. Menguruskan MBean

Asas pengurusan MBean mudah:

  • Atribut boleh dibaca atau ditulis
  • Kaedah boleh digunakan dan argumen dapat diberikan kepada mereka atau nilai yang dikembalikan dari mereka

Mari kita lihat apa maksudnya dalam permainan MBean dalam praktiknya:

  • atribut : taipkan nilai baru untuk atribut playerName - misalnya "Messi" dan klik butang Refresh

Log berikut akan muncul di konsol Eclipse:

Tetapkan nama pemain untuk menilai Messi

  • operasi : taipkan nilai untuk argumen String kaedah playFootBall () - misalnya "Barcelona" dan klik pada butang kaedah. A amaran tetingkap untuk doa berjaya akan dipaparkan

Log berikut akan muncul di konsol gerhana:

Messi bermain bola sepak untuk Barcelona

6. Kesimpulannya

Tutorial ini menyentuh asas-asas penyediaan aplikasi berkemampuan JMX dengan menggunakan MBeans. Juga, ia membincangkan tentang menggunakan alat sisi klien seperti JConsole untuk menguruskan MBean yang diinstrumentasi.

Domain teknologi JMX sangat luas dalam jangkauan dan jangkauannya. Tutorial ini boleh dianggap sebagai langkah pemula ke arah itu.

Kod sumber tutorial ini boleh didapati di Github.