package com.github.digital_wonderland.sling_metrics.sling; import com.codahale.metrics.Counter; import com.github.digital_wonderland.sling_metrics.service.MetricService; import org.apache.felix.scr.annotations.*; import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpSessionEvent; @Component(immediate = true, metatype = false) @Service public class HttpSessionListener implements javax.servlet.http.HttpSessionListener { private static final Logger LOG = LoggerFactory.getLogger(HttpSessionListener.class); private static final String OPEN_SESSIONS_METRIC = "sessions"; @Reference protected MetricService metricService; private Counter counter; @Activate protected void activate(final ComponentContext context) { counter = metricService.counter(OPEN_SESSIONS_METRIC); } @Deactivate protected void deactivate() { metricService.remove(OPEN_SESSIONS_METRIC); counter = null; } @Override public void sessionCreated(final HttpSessionEvent httpSessionEvent) { LOG.debug("HTTP session created"); counter.inc(); } @Override public void sessionDestroyed(final HttpSessionEvent httpSessionEvent) { LOG.debug("HTTP session destroyed"); counter.dec(); } }