Skip to content

Commit 6a77eb5

Browse files
author
eugenp
committed
tracking http sessions with metrics
1 parent 33cc1f2 commit 6a77eb5

3 files changed

Lines changed: 41 additions & 9 deletions

File tree

spring-security-mvc-custom/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,14 @@
9292
<scope>runtime</scope>
9393
</dependency>
9494

95+
<!-- ops -->
96+
97+
<dependency>
98+
<groupId>com.codahale.metrics</groupId>
99+
<artifactId>metrics-core</artifactId>
100+
<version>3.0.1</version>
101+
</dependency>
102+
95103
<!-- test scoped -->
96104

97105
<dependency>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.baeldung.monitoring;
2+
3+
import com.codahale.metrics.MetricRegistry;
4+
5+
public final class MetricRegistrySingleton {
6+
7+
public static final MetricRegistry metrics = new MetricRegistry();
8+
9+
private MetricRegistrySingleton() {
10+
throw new AssertionError();
11+
}
12+
13+
}
Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,43 @@
11
package org.baeldung.web;
22

3+
import java.util.concurrent.atomic.AtomicInteger;
4+
35
import javax.servlet.http.HttpSessionEvent;
46
import javax.servlet.http.HttpSessionListener;
57

8+
import org.baeldung.monitoring.MetricRegistrySingleton;
9+
10+
import com.codahale.metrics.Counter;
11+
612
public class SessionListenerWithMetrics implements HttpSessionListener {
713

8-
private static int totalActiveSessions;
14+
private final AtomicInteger activeSessions;
15+
16+
private final Counter counterOfActiveSessions;
917

1018
public SessionListenerWithMetrics() {
1119
super();
20+
21+
activeSessions = new AtomicInteger();
22+
counterOfActiveSessions = MetricRegistrySingleton.metrics.counter("web.sessions.active.count");
1223
}
1324

1425
// API
1526

16-
public static int getTotalActiveSession() {
17-
return totalActiveSessions;
27+
public final int getTotalActiveSession() {
28+
return activeSessions.get();
1829
}
1930

2031
@Override
21-
public void sessionCreated(final HttpSessionEvent arg0) {
22-
totalActiveSessions++;
23-
System.out.println("sessionCreated - add one session into counter");
32+
public final void sessionCreated(final HttpSessionEvent event) {
33+
activeSessions.incrementAndGet();
34+
counterOfActiveSessions.inc();
2435
}
2536

2637
@Override
27-
public void sessionDestroyed(final HttpSessionEvent arg0) {
28-
totalActiveSessions--;
29-
System.out.println("sessionDestroyed - deduct one session from counter");
38+
public final void sessionDestroyed(final HttpSessionEvent event) {
39+
activeSessions.decrementAndGet();
40+
counterOfActiveSessions.dec();
3041
}
3142

3243
}

0 commit comments

Comments
 (0)