You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2010/10/01 08:26:45 UTC

svn commit: r1003403 - in /myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main: java/org/apache/myfaces/tobago/example/demo/activity/ webapp/

Author: lofwyr
Date: Fri Oct  1 06:26:45 2010
New Revision: 1003403

URL: http://svn.apache.org/viewvc?rev=1003403&view=rev
Log:
Monitoring of user sessions and activity. Can be helpful for performance tests.

Added:
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/Activity.java
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityList.java
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityPhaseListener.java
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityServletContextListener.java
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivitySessionListener.java
Modified:
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/server-info.jsp

Added: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/Activity.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/Activity.java?rev=1003403&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/Activity.java (added)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/Activity.java Fri Oct  1 06:26:45 2010
@@ -0,0 +1,67 @@
+package org.apache.myfaces.tobago.example.demo.activity;
+
+import javax.servlet.http.HttpSession;
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lofwyr
+ * Date: 30.09.2010
+ * Time: 16:47:47
+ * To change this template use File | Settings | File Templates.
+ */
+public class Activity {
+
+  private String sessionId;
+
+  private Date creationDate;
+
+  private int jsfRequest;
+
+  private int ajaxRequest;
+
+  public Activity(HttpSession session) {
+    this.sessionId = session.getId();
+    this.creationDate = new Date(session.getCreationTime());
+  }
+
+  public void jsfRequest() {
+    jsfRequest++;
+  }
+
+  public void ajaxRequest() {
+      ajaxRequest++;
+  }
+
+  public String getSessionId() {
+    return sessionId;
+  }
+
+  public void setSessionId(String sessionId) {
+    this.sessionId = sessionId;
+  }
+
+  public Date getCreationDate() {
+    return creationDate;
+  }
+
+  public void setCreationDate(Date creationDate) {
+    this.creationDate = creationDate;
+  }
+
+  public int getJsfRequest() {
+    return jsfRequest;
+  }
+
+  public void setJsfRequest(int jsfRequest) {
+    this.jsfRequest = jsfRequest;
+  }
+
+  public int getAjaxRequest() {
+    return ajaxRequest;
+  }
+
+  public void setAjaxRequest(int ajaxRequest) {
+    this.ajaxRequest = ajaxRequest;
+  }
+}

Added: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityList.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityList.java?rev=1003403&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityList.java (added)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityList.java Fri Oct  1 06:26:45 2010
@@ -0,0 +1,51 @@
+package org.apache.myfaces.tobago.example.demo.activity;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lofwyr
+ * Date: 30.09.2010
+ * Time: 16:47:47
+ * To change this template use File | Settings | File Templates.
+ */
+public class ActivityList {
+
+  private static final Log LOG = LogFactory.getLog(ActivityList.class);
+
+  public static final String NAME = "activities";
+
+  private Map<String, Activity> data = new ConcurrentHashMap<String, Activity>();
+  
+  public void add(Activity activity) {
+    LOG.info("Adding session id: " + activity.getSessionId());
+    data.put(activity.getSessionId(),activity);
+  }
+
+  public void remove(String sessionId) {
+    LOG.info("Removing session id: " + sessionId);
+    final Activity activity = data.remove(sessionId);
+  }
+
+  public List<Activity> getValues() {
+    final Collection<Activity> values = data.values();
+    ArrayList<Activity> result = new ArrayList<Activity>();
+    result.addAll(values);
+    return result;
+  }
+
+  public void jsfRequest(String sessionId) {
+    data.get(sessionId).jsfRequest();
+  }
+
+  public void ajaxRequest(String sessionId) {
+    data.get(sessionId).ajaxRequest();
+  }
+}

Added: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityPhaseListener.java?rev=1003403&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityPhaseListener.java (added)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityPhaseListener.java Fri Oct  1 06:26:45 2010
@@ -0,0 +1,37 @@
+package org.apache.myfaces.tobago.example.demo.activity;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.tobago.ajax.api.AjaxUtils;
+import org.apache.myfaces.tobago.util.VariableResolverUtil;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import javax.servlet.http.HttpSession;
+
+public class ActivityPhaseListener implements PhaseListener {
+
+  private static final Log LOG = LogFactory.getLog(ActivityPhaseListener.class);
+
+  public void afterPhase(PhaseEvent event) {
+  }
+
+  public void beforePhase(PhaseEvent event) {
+    final FacesContext facesContext = event.getFacesContext();
+    final ActivityList activityList
+        = (ActivityList) VariableResolverUtil.resolveVariable(facesContext, ActivityList.NAME);
+    String sessionId = ((HttpSession) facesContext.getExternalContext().getSession(true)).getId();
+
+    if (AjaxUtils.isAjaxRequest(facesContext)) {
+      activityList.ajaxRequest(sessionId);
+    } else {
+      activityList.jsfRequest(sessionId);
+    }
+  }
+
+  public PhaseId getPhaseId() {
+    return PhaseId.RENDER_RESPONSE;
+  }
+}

Added: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityServletContextListener.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityServletContextListener.java?rev=1003403&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityServletContextListener.java (added)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivityServletContextListener.java Fri Oct  1 06:26:45 2010
@@ -0,0 +1,23 @@
+package org.apache.myfaces.tobago.example.demo.activity;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+public class ActivityServletContextListener implements ServletContextListener {
+
+  private static final Log LOG = LogFactory.getLog(ActivityServletContextListener.class);
+
+  public void contextInitialized(ServletContextEvent event) {
+    final ServletContext application = event.getServletContext();
+    application.setAttribute(ActivityList.NAME, new ActivityList());
+  }
+
+  public void contextDestroyed(ServletContextEvent event) {
+    final ServletContext application = event.getServletContext();
+    application.removeAttribute(ActivityList.NAME);
+  }
+}

Added: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivitySessionListener.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivitySessionListener.java?rev=1003403&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivitySessionListener.java (added)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/activity/ActivitySessionListener.java Fri Oct  1 06:26:45 2010
@@ -0,0 +1,30 @@
+package org.apache.myfaces.tobago.example.demo.activity;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionEvent;
+import javax.servlet.http.HttpSessionListener;
+
+public class ActivitySessionListener implements HttpSessionListener {
+
+  private static final Log LOG = LogFactory.getLog(ActivitySessionListener.class);
+
+  private static final String SESSION_MAP = ActivitySessionListener.class.getName() + ".SESSION_MAP";
+
+  public void sessionCreated(HttpSessionEvent event) {
+    final HttpSession session = event.getSession();
+    final ServletContext application = session.getServletContext();
+    final ActivityList activityList = (ActivityList) application.getAttribute(ActivityList.NAME);
+    activityList.add(new Activity(session));
+  }
+
+  public void sessionDestroyed(HttpSessionEvent event) {
+    final HttpSession session = event.getSession();
+    final ServletContext application = session.getServletContext();
+    final ActivityList activityList = (ActivityList) application.getAttribute(ActivityList.NAME);
+    activityList.remove(session.getId());
+  }
+}

Modified: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/server-info.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/server-info.jsp?rev=1003403&r1=1003402&r2=1003403&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/server-info.jsp (original)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/server-info.jsp Fri Oct  1 06:26:45 2010
@@ -23,22 +23,38 @@
   <jsp:body>
     <tc:box label="Server Info">
       <f:facet name="layout">
-        <tc:gridLayout rows="fixed;fixed;fixed;fixed;*" />
+        <tc:gridLayout rows="fixed;fixed;fixed;fixed;*"/>
       </f:facet>
 
       <tx:in value="#{info.version}" readonly="true"
-          label="Tobago Version" />
+             label="Tobago Version"/>
 
       <tx:in value="#{info.serverInfo}" readonly="true"
-          label="Server Info" />
+             label="Server Info"/>
 
-      <tx:in value="#{info.systemProperties['java.runtime.version']} - #{info.systemProperties['java.vm.vendor']}" readonly="true"
-          label="Java" />
-
-      <tx:in value="#{info.systemProperties['os.name']} - #{info.systemProperties['os.version']} - #{info.systemProperties['os.arch']}" readonly="true"
-          label="Operating System" />
-
-      <tc:cell/>
+      <tx:in value="#{info.systemProperties['java.runtime.version']} - #{info.systemProperties['java.vm.vendor']}"
+             readonly="true"
+             label="Java"/>
+
+      <tx:in
+          value="#{info.systemProperties['os.name']} - #{info.systemProperties['os.version']} - #{info.systemProperties['os.arch']}"
+          readonly="true"
+          label="Operating System"/>
+
+      <tc:sheet value="#{activities.values}" var="activity">
+        <tc:column label="Session Id" sortable="true">
+          <tc:out value="#{activity.sessionId}"/>
+        </tc:column>
+        <tc:column label="Creation Date" sortable="true">
+          <tc:out value="#{activity.creationDate}"/>
+        </tc:column>
+        <tc:column label="Jsf Request Count" sortable="true">
+          <tc:out value="#{activity.jsfRequest}"/>
+        </tc:column>
+        <tc:column label="Ajax Request Count" sortable="true">
+          <tc:out value="#{activity.ajaxRequest}"/>
+        </tc:column>
+      </tc:sheet>
 
     </tc:box>
   </jsp:body>