HttpSessionListener-voorbeeld - Monitoring

1. Overzicht

Deze tutorial laat zien hoe registreer een javax.servlet.http.HttpSessionListener en volg het aantal actieve sessies in de webapplicatie met behulp van metrische gegevens.

2. De luisteraar definiëren

We kunnen de HTTP-sessie-listener registreren in het web.xml:

  com.baeldung.web.SessionListenerWithMetrics 

Als alternatief, in een Servlet 3-omgeving, we kunnen de @WebListener om de luisteraar ook te registreren. In dit geval moeten we de main SpringBootApplication les met @BuienRadarNL

Ten slotte kunnen we de luisteraar ook registreren met behulp van Java-configuratie door een ServletListenerRegistrationBean Boon:

@Bean openbare ServletListenerRegistrationBean sessionListenerWithMetrics () {ServletListenerRegistrationBean listenerRegBean = nieuwe ServletListenerRegistrationBean (); listenerRegBean.setListener (nieuwe SessionListenerWithMetrics ()); return listenerRegBean; }

3. De fundamentele luisteraar

De simpele luisteraar zal dat wel doen houd het aantal actieve sessies bij altijd:

openbare klasse SessionListenerWithMetrics implementeert HttpSessionListener {privé finale AtomicInteger activeSessions; openbare SessionListenerWithMetrics () {super (); activeSessions = nieuwe AtomicInteger (); } openbare int getTotalActiveSession () {return activeSessions.get (); } openbare ongeldige sessionCreated (laatste HttpSessionEvent-gebeurtenis) {activeSessions.incrementAndGet (); } openbare ongeldige sessionDestroyed (laatste HttpSessionEvent-gebeurtenis) {activeSessions.decrementAndGet (); }}

De sessieluisteraar wordt geactiveerd wanneer de sessie wordt gemaakt - sessionCreated:

HttpSession-sessie = request.getSession ();

En vernietigd - sessie vernietigd:

session.invalidate ();

Met dit mechanisme kan het huidige aantal sessies van de luisteraar worden opgehaald, maar moet het realtime monitoring en transparantiehebben we aanvullende logica nodig om de waarde daadwerkelijk op te halen en te publiceren.

Dit is waar de metriekbibliotheek om de hoek komt kijken - het wordt geleverd met verschillende kant-en-klare reporters waarmee deze metriek met zeer weinig moeite kan worden gepubliceerd.

4. De luisteraar met meetgegevens

Dus in plaats van onze eigen aangepaste monitoringoplossing uit te rollen, zullen we profiteren de metrische bibliotheek; we moeten het aan onze pom toevoegen:

 com.codahale.metrics metrics-core 3.0.1 

Met metrische kern is beschikbaar op het klassenpad, kunnen we hetzelfde schrijven HttpSessionListener gebruik maken van een Teller voorwerp:

openbare klasse SessionListenerWithMetrics implementeert HttpSessionListener {privé finale Counter counterOfActiveSessions; openbare SessionListenerWithMetrics () {super (); counterOfActiveSessions = MetricRegistrySingleton.metrics.counter ("web.sessions.active.count"); } openbare ongeldige sessionCreated (laatste HttpSessionEvent-gebeurtenis) {counterOfActiveSessions.inc (); } openbare ongeldige sessionDestroyed (laatste HttpSessionEvent-gebeurtenis) {counterOfActiveSessions.dec (); }}

De MetricRegistry - het centrale register van alle applicatiestatistieken - er wordt eenvoudig naar verwezen in een applicatiebreed statisch veld:

openbare laatste klasse MetricRegistrySingleton {openbare statische laatste MetricRegistry metrics = nieuwe MetricRegistry (); }

Het publiceren van deze statistiek en deze direct beschikbaar maken om te worden gecontroleerd - bijvoorbeeld voor het standaard logboeksysteem van de applicatie - is eenvoudig:

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

5. Conclusie

Deze tutorial illustreert hoe je een HttpSessionListener in de implementatiedescriptor van de webtoepassing en hoe u het actieve aantal sessies kunt bewaken met behulp van twee mechanismen. Het eerste mechanisme is een met de hand gerolde toonbank en het tweede is gebaseerd op de volwassenheid statistieken bibliotheek.

De implementatie is te vinden in het voorbeeld GitHub-project.


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