package com.github.digital_wonderland.sling_metrics.reporter; 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; @Component(label = "Sling Metrics :: Reporter :: JMX", metatype = true) public class JmxReporter { private static final Logger LOG = LoggerFactory.getLogger(JmxReporter.class); @Property(label = "Enabled", boolValue = false, description = "Should the JMX reporter be enabled") private static final String JMX_REPORTER_ENABLED = "jmxReporter.enabled"; @Reference private MetricService metricService = null; private com.codahale.metrics.JmxReporter reporter = null; @Activate protected void activate(final ComponentContext context) { final boolean isEnabled = (Boolean) context.getProperties().get(JMX_REPORTER_ENABLED); LOG.info("Metrics JmxReporter is enabled: [{}]", isEnabled); if(isEnabled && metricService.isEnabled()) { reporter = com.codahale.metrics.JmxReporter.forRegistry(metricService.getRegistry()).build(); reporter.start(); } } @Deactivate protected void deactivate() { if(reporter != null) { reporter.stop(); LOG.info("Metrics JmxReporter stopped"); } } }