מבוא בסיסי ל- JMX

1. הקדמה

ה מסגרת Java Management Extensions (JMX) הוצג ב- Java 1.5 ומצא הקבלה רחבה בקהילת מפתחי Java מאז הקמתה.

הוא מספק תשתית ניתנת להגדרה, מדרגית, אמינה וידידותית פחות או יותר לניהול יישומי Java באופן מקומי או מרחוק. המסגרת מציגה את הרעיון של MBeans לניהול יישומים בזמן אמת.

מאמר זה מהווה מדריך צעד אחר צעד למתחילים ליצירת והתקנת MBean בסיסי ולניהולו באמצעות JConsole.

2. אדריכלות JMX

ארכיטקטורת JMX נוקטת גישה תלת-שכבתית:

  1. שכבת מכשור: MBeans שנרשמו בסוכן JMX דרכו מנוהלים משאבים
  2. שכבת סוכן JMX: רכיב הליבה (MbeanServer) שמנהל רישום של MBeans מנוהלים ומספק ממשק לגישה אליהם
  3. שכבת ניהול מרחוק: בדרך כלל כלי צד לקוח כמו JConsole

3. יצירת כיתת MBean

בעת יצירת MBeans, קיים דפוס עיצוב מסוים שעלינו לעמוד בו. המודל MBean בכיתה חייב ליישם ממשק עם השם הבא: "שם כיתת מודל" בתוספת MBean.

אז בואו נגדיר את ממשק ה- MBean שלנו ואת המחלקה המיישמת אותו:

ממשק ציבורי GameMBean {public void playFootball (מחרוזת clubName); מחרוזת ציבורית getPlayerName (); חלל ציבורי setPlayerName (מחרוזת נגן שם); } משחק בכיתה ציבורית מיישם את GameMBean {player String playerName; @Override public void playFootball (מחרוזת clubName) {System.out.println (this.playerName + "משחק כדורגל עבור" + clubName); } @Override ציבורי מחרוזת getPlayerName () {System.out.println ("להחזיר נגן שם" + this.playerName); return playerName; } @Override public void setPlayerName (String playerName) {System.out.println ("הגדר שם שחקן לערך" + נגן שם); this.playerName = נגן שם; }}

ה מִשְׂחָק מחלקה עוקפת שיטה לשחק כדורגל() של ממשק ההורה. מלבד זאת, בכיתה יש משתנה חבר שם שחקן וגטר / קובע על זה.

שים לב ש- getter / setter מוכרזים גם בממשק האב.

4. מכשור עם סוכן JMX

סוכני JMX הם הגופים הפועלים באופן מקומי או מרחוק, ומספקים גישה להנהלה לאמצעי ה- MB הרשומים אצלם.

בואו נשתמש PlatformMbeanServer - מרכיב הליבה של סוכן JMX ורשום את מִשְׂחָק MBean עם זה.

נשתמש בישות אחרת - ObjectName - לרשום את מִשְׂחָק מופע כיתתי עם PlatformMbeanServer; זהו מחרוזת המורכבת משני חלקים:

  • תְחוּם: יכול להיות מחרוזת שרירותית, אך על פי מוסכמות שמות של MBean, עליו להיות בעל שם חבילה של Java (נמנע מעימותי שמות)
  • מַפְתֵחַ: רשימה של "מפתח = ערךזוגות המופרדים בפסיק

בדוגמה זו נשתמש ב: "Com.baledung.tutorial: type = basic, name = game".

נקבל את MBeanServer ממעמד המפעל java.lang.management.ManagementFactory.

לאחר מכן נרשום את דגם MBean באמצעות נוצר ObjectName:

נסה את {ObjectName objectName = ObjectName חדש ("com.baeldung.tutorial: type = basic, name = game"); שרת MBeanServer = ManagementFactory.getPlatformMBeanServer (); server.registerMBean (משחק חדש (), objectName); } לתפוס (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException e) {// להתמודד עם חריגים}

לבסוף, רק כדי להיות מסוגל לבדוק את זה - נוסיף בזמן לולאה כדי למנוע את סיום היישום לפני שנוכל לגשת ל- MBean באמצעות JConsole:

בעוד (נכון) {}

5. גישה ל- MBean

5.1. מתחבר מצד הלקוח

  1. התחל את היישום בליקוי החמה
  2. הפעל את Jconsole (נמצא בתיקיית הפח בספריית ההתקנה של JDK במחשב שלך)
  3. חיבור -> חיבור חדש -> בחר בתהליך Java מקומי של הדרכה זו -> התחבר -> אזהרת חיבור SSl לא מאובטח -> המשך עם חיבור לא מאובטח
  4. לאחר יצירת החיבור, לחץ על הכרטיסיה MBeans הימנית העליונה בחלונית התצוגה
  5. רשימת האמצעים הרשומים תופיע בעמודה השמאלית
  6. לחץ על com.baeldung.tutorial -> בסיסי -> משחק
  7. תחת המשחק, יהיו שתי שורות, אחת כל אחת לתכונות ולפעולות

הנה מבט מהיר על החלק של JConsole בתהליך:

5.2. ניהול ה- MBean

יסודות הניהול של MBean הם פשוטים:

  • תכונות יכולות לקרוא או לכתוב
  • ניתן להפעיל שיטות ולספק להם טיעונים או להחזיר מהם ערכים

בוא נראה מה זה אומר עבור מִשְׂחָק MBean בפועל:

  • תְכוּנָה: הקלד ערך חדש עבור המאפיין שם שחקן - למשל "מסי" ולחץ לחצן רענון

יומן הרישום הבא יופיע במסוף Eclipse:

הגדר playerName לערך מסי

  • פעולות: הקלד ערך עבור הארגומנט String של השיטה לשחק כדורגל() - למשל "ברצלונה" ולחץ על כפתור השיטה. א התראת חלון להפעלה מוצלחת יופיע

יומן היומן הבא יופיע במסוף הליקוי:

מסי משחק כדורגל בברצלונה

6. מסקנה

הדרכה זו נגעה ביסודות הקמת יישום המותאם ל- JMX באמצעות MBeans. כמו כן, הוא דן בשימוש בכלי טיפוסי של צד הלקוח כמו JConsole לניהול מכשיר ה- MBean המאובזר.

התחום של טכנולוגיית JMX הוא רחב מאוד בהיקפו ובהיקפו. מדריך זה יכול להיחשב כצעד למתחילים.

קוד המקור של מדריך זה ניתן למצוא באתר Github.