HttpSessionListener Eksempel - Overvåking

1. Oversikt

Denne opplæringen viser hvordan du gjør det registrer en javax.servlet.http.HttpSessionListener og spore antall aktive økter i webapplikasjonen ved hjelp av beregninger.

2. Definere lytteren

Vi kan registrere HTTP-øktlytteren i web.xml:

  com.baeldung.web.SessionListenerWithMetrics 

Alternativt, i et Servlet 3-miljø, vi kan bruke @WebListener å registrere lytteren også. I dette tilfellet må vi kommentere hoveddelen SpringBootApplication klasse med @ServletComponentScan.

Til slutt kan vi også registrere lytteren ved hjelp av Java-konfigurasjon ved å erklære en ServletListenerRegistrationBean bønne:

@Bean public ServletListenerRegistrationBean sessionListenerWithMetrics () {ServletListenerRegistrationBean listenerRegBean = new ServletListenerRegistrationBean (); listenerRegBean.setListener (ny SessionListenerWithMetrics ()); tilbake lytterRegBean; }

3. Den grunnleggende lytteren

Den enkle lytteren vil holde oversikt over antall aktive økter til alle tider:

offentlig klasse SessionListenerWithMetrics implementerer HttpSessionListener {private final AtomicInteger activeSessions; offentlig SessionListenerWithMetrics () {super (); activeSessions = nytt AtomicInteger (); } public int getTotalActiveSession () {return activeSessions.get (); } public void sessionCreated (final HttpSessionEvent event) {activeSessions.incrementAndGet (); } public void sessionDestroyed (final HttpSessionEvent event) {activeSessions.decrementAndGet (); }}

Øktens lytter vil bli utløst når økten er opprettet - økt Opprettet:

HttpSession session = request.getSession ();

Og ødelagt - økt Ødelagt:

session.invalidate ();

Denne mekanismen gjør det mulig å hente gjeldende øktantall fra lytteren, men for å ha det sanntidsovervåking og gjennomsiktighet, trenger vi ekstra logikk for å faktisk hente verdien og publisere den.

Dette er hvor beregningsbiblioteket kommer inn - det kommer med flere utenom journalister som tillater at denne beregningen blir publisert med svært liten innsats.

4. Lytteren med beregninger

Så, i stedet for å rulle ut vår egen tilpassede overvåkingsløsning, vil vi utnytte beregningsbiblioteket; vi må legge det til pom:

 com.codahale.metrics metrics-core 3.0.1 

Med beregninger kjernen er tilgjengelig på klassestien, kan vi skrive det samme HttpSessionListener bruker en Disk gjenstand:

offentlig klasse SessionListenerWithMetrics implementerer HttpSessionListener {private final Counter counterOfActiveSessions; public SessionListenerWithMetrics () {super (); counterOfActiveSessions = MetricRegistrySingleton.metrics.counter ("web.sessions.active.count"); } public void sessionCreated (final HttpSessionEvent event) {counterOfActiveSessions.inc (); } public void sessionDestroyed (final HttpSessionEvent event) {counterOfActiveSessions.dec (); }}

De MetricRegistry - det sentrale registeret for alle applikasjonsberegninger - er bare referert i et statisk felt for hele applikasjonen:

public final class MetricRegistrySingleton {public static final MetricRegistry metrics = new MetricRegistry (); }

Å publisere denne beregningen og gjøre den lett tilgjengelig for overvåking - for eksempel for standardloggingssystemet til applikasjonen - er grei:

Logger logger = LoggerFactory.getLogger ("com.baeldung.monitoring"); Slf4jReporter reporter = Slf4jReporter.forRegistry (metrics) .outputTo (logger). convertRatesTo (TimeUnit.SECONDS) .convertDurationsTo (TimeUnit.MILLISECONDS) .build (); reporter.start (5, TimeUnit.MINUTES);

5. Konklusjon

Denne opplæringen illustrerte hvordan du registrerer en HttpSessionListener i distribusjonsbeskrivelsen til webapplikasjonen og hvordan du overvåker det aktive antall økter ved hjelp av to mekanismer. Den første mekanismen er en håndrullet teller, og den andre er basert på den modne beregninger bibliotek.

Implementeringen finner du i eksemplet med GitHub-prosjektet.


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