דוגמה HttpSessionListener - ניטור

1. סקירה כללית

מדריך זה יראה כיצד רשום א javax.servlet.http.HttpSessionListener ולעקוב אחר מספר ההפעלות הפעילות ביישום האינטרנט באמצעות מדדים.

2. הגדרת המאזין

אנו יכולים לרשום את מאזין HTTP למפגש ב web.xml:

  com.baeldung.web.SessionListenerWithMetrics 

לחלופין, בסביבת Servlet 3, אנחנו יכולים להשתמש ב- @WebListener לרשום גם את המאזין. במקרה זה עלינו להעלות הערה על העיקרית יישום SpringBoot כיתה עם @ ServletComponentScan.

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

@Bean ציבור ServletListenerRegistrationBean sessionListenerWithMetrics () {ServletListenerRegistrationBean listenerRegBean = ServletListenerRegistrationBean חדש); listenerRegBean.setListener (SessionListenerWithMetrics חדש ()); תשובה מאזין RegBean; }

3. המאזין הבסיסי

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

מעמד ציבורי SessionListenerWithMetrics מיישם HttpSessionListener {private final AtomicInteger activeSessions; Public SessionListenerWithMetrics () {super (); activeSessions = AtomicInteger חדש (); } public int getTotalActiveSession () {return activeSessions.get (); } מושב בטל ציבוריCreated (אירוע HttpSessionEvent סופי) {activeSessions.incrementAndGet (); } מושב בטל ציבורי Destroyed (אירוע HttpSessionEvent סופי) {activeSessions.decrementAndGet (); }}

מאזין ההפעלה יופעל בעת יצירת ההפעלה - מושב נוצר:

הפעלת HttpSession = request.getSession ();

והושמד - מושב נהרס:

session.invalidate ();

מנגנון זה מאפשר לאחזר את ספירת ההפעלות הנוכחית מהמאזין, אך על מנת שיהיה ניטור ושקיפות בזמן אמת, אנו זקוקים להיגיון נוסף בכדי לאחזר את הערך ולפרסם אותו.

כאן נכנסת ספריית המדדים - היא מגיעה עם כמה כתבים מהקופסה המאפשרים פרסום מדד זה במאמץ מועט מאוד.

4. המאזין עם מדדים

לכן, במקום להפיץ את פתרון הניטור המותאם אישית שלנו, ננצל ספריית המדדים; נצטרך להוסיף אותו לפום שלנו:

 com.codahale.metrics מדדי הליבה 3.0.1 

כאשר הליבה של המדדים זמינה בשביל הכיתה, נוכל לכתוב אותה HttpSessionListener באמצעות א דֶלְפֵּק לְהִתְנַגֵד:

מעמד ציבורי SessionListenerWithMetrics מיישם HttpSessionListener {counter final Counter counterOfActiveSessions; Public SessionListenerWithMetrics () {super (); counterOfActiveSessions = MetricRegistrySingleton.metrics.counter ("web.sessions.active.count"); } מושב בטל ציבוריCreated (אירוע HttpSessionEvent סופי) {counterOfActiveSessions.inc (); } מושב בטל ציבורי הרס (אירוע HttpSessionEvent סופי) {counterOfActiveSessions.dec (); }}

ה מטרי רישום - הרישום המרכזי של כל מדדי היישומים - פשוט מוזכר בשדה סטטי רחב יישום:

מחלקה סופית ציבורית MetricRegistrySingleton {metricRegistry final meticsRegistry = מטרי רישום חדש (); }

פרסום מדד זה והפיכתו לזמינות לניטור - למשל למערכת הרישום הרגילה של היישום - היא פשוטה:

לוגר לוגר = LoggerFactory.getLogger ("com.baeldung.monitoring"); כתב Slf4jReporter = Slf4jReporter.forRegistry (מדדים) .outputTo (לוגר). convertRatesTo (TimeUnit.SECONDS) .convertDurationsTo (TimeUnit.MILLISECONDS) .build (); reporter.start (5, TimeUnit.MINUTES);

5. מסקנה

מדריך זה המחיש כיצד לרשום א HttpSessionListener במתאר הפריסה של יישום האינטרנט וכיצד ניתן לעקוב אחר מספר הפעילויות הפעיל באמצעות שני מנגנונים. המנגנון הראשון הוא מונה מגולגל ביד והשני מבוסס על הבוגר מדדים סִפְרִיָה.

את היישום ניתן למצוא בפרויקט GitHub לדוגמא.


$config[zx-auto] not found$config[zx-overlay] not found