You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/03/28 09:27:46 UTC
wicket git commit: WiCKET-6127 WICKET-6128 Use IInitializer and
ServletContext to store the MetricRegistry
Repository: wicket
Updated Branches:
refs/heads/master 22df12f14 -> 6078966e6
WiCKET-6127 WICKET-6128 Use IInitializer and ServletContext to store the MetricRegistry
WIP
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6078966e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6078966e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6078966e
Branch: refs/heads/master
Commit: 6078966e604e6b61846a182cd3af0c729e45106d
Parents: 22df12f
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Mar 28 09:26:51 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Mar 28 09:26:51 2016 +0200
----------------------------------------------------------------------
.../org/apache/wicket/metrics/Initializer.java | 40 ++++++++++++++++++++
.../aspects/session/SessionCountListener.java | 32 ++++++++++++----
.../services/org.apache.wicket.IInitializer | 1 +
3 files changed, 65 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/6078966e/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java
new file mode 100644
index 0000000..7c3a451
--- /dev/null
+++ b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java
@@ -0,0 +1,40 @@
+package org.apache.wicket.metrics;
+
+import javax.servlet.ServletContext;
+
+import com.codahale.metrics.MetricRegistry;
+import org.apache.wicket.Application;
+import org.apache.wicket.IInitializer;
+import org.apache.wicket.MetaDataKey;
+import org.apache.wicket.protocol.http.WebApplication;
+
+/**
+ * Creates an instance of {@link MetricRegistry} and saves it in the
+ * {@link Application#getMetaData(MetaDataKey) meta data} and in the
+ * {@link ServletContext}
+ */
+public class Initializer implements IInitializer
+{
+ public static final String METRICS_SERVLET_REGISTRY = "com.codahale.metrics.servlets.MetricsServlet.registry";
+
+ @Override
+ public void init(Application application)
+ {
+ WebApplication webApplication = (WebApplication) application;
+ MetricRegistry metricRegistry = new MetricRegistry();
+ application.setMetaData(WicketMetrics.METRIC_REGISTRY, metricRegistry);
+
+ ServletContext servletContext = webApplication.getServletContext();
+ servletContext.setAttribute(METRICS_SERVLET_REGISTRY, metricRegistry);
+ }
+
+ @Override
+ public void destroy(Application application)
+ {
+ WebApplication webApplication = (WebApplication) application;
+ webApplication.setMetaData(WicketMetrics.METRIC_REGISTRY, null);
+
+ ServletContext servletContext = webApplication.getServletContext();
+ servletContext.setAttribute(METRICS_SERVLET_REGISTRY, null);
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/6078966e/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
index 6aacfee..3f89ca3 100644
--- a/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
+++ b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
@@ -16,10 +16,15 @@
*/
package org.apache.wicket.metrics.aspects.session;
+import static org.apache.wicket.metrics.Initializer.METRICS_SERVLET_REGISTRY;
+
+import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
+import com.codahale.metrics.MetricRegistry;
+
/**
* Listener that counts the current active sessions
@@ -30,36 +35,47 @@ import javax.servlet.http.HttpSessionListener;
@WebListener
public class SessionCountListener implements HttpSessionListener
{
-
@Override
public void sessionDestroyed(HttpSessionEvent event)
{
- dec(event);
+ ServletContext servletContext = event.getSession().getServletContext();
+ MetricRegistry metricRegistry = (MetricRegistry) servletContext.getAttribute(METRICS_SERVLET_REGISTRY);
+ if (metricRegistry != null)
+ {
+ dec(event, metricRegistry);
+ }
}
@Override
public void sessionCreated(HttpSessionEvent event)
{
- inc(event);
+ ServletContext servletContext = event.getSession().getServletContext();
+ MetricRegistry metricRegistry = (MetricRegistry) servletContext.getAttribute(METRICS_SERVLET_REGISTRY);
+ if (metricRegistry != null)
+ {
+ inc(event, metricRegistry);
+ }
}
/**
* Used to wire an aspect around
- *
+ *
* @param event the http session event
+ * @param metricRegistry
*/
- public void dec(HttpSessionEvent event)
+ public void dec(HttpSessionEvent event, MetricRegistry metricRegistry)
{
// NOOP for aspect usage
}
/**
* Used to wire an aspect around
- *
+ *
* @param event the http session event
+ * @param metricRegistry
*/
- public void inc(HttpSessionEvent event)
+ public void inc(HttpSessionEvent event, MetricRegistry metricRegistry)
{
// NOOP for aspect usage
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/6078966e/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
new file mode 100644
index 0000000..70dfbbd
--- /dev/null
+++ b/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
@@ -0,0 +1 @@
+org.apache.wicket.metrics.Initializer