You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2006/04/10 05:17:28 UTC

svn commit: r392877 - in /geronimo/branches/1.1/applications: console-framework/src/webapp/WEB-INF/data/ console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/ console-standard/src/java/org/apache/geronimo/console/threads/ console-sta...

Author: ammulder
Date: Sun Apr  9 20:17:24 2006
New Revision: 392877

URL: http://svn.apache.org/viewcvs?rev=392877&view=rev
Log:
Add a portlet to show thread pools

Added:
    geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/
    geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/AbstractThreadHandler.java
    geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ListScreenHandler.java
    geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/MonitorScreenHandler.java
    geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ThreadPoolPortlet.java
    geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/
    geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/list.jsp
    geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/monitor.jsp
Modified:
    geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml
    geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml
    geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java
    geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/portlet.xml
    geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/web.xml

Modified: geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml?rev=392877&r1=392876&r2=392877&view=diff
==============================================================================
--- geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml (original)
+++ geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml Sun Apr  9 20:17:24 2006
@@ -178,6 +178,22 @@
                 </fragment>
             </fragment>
         </fragment>
+
+        <fragment name="threads" type="page">
+            <navigation>
+                <title>Thread Pools</title>
+                <description>ico_connect_16x16.gif Monitors and configures thread pools in the server</description>
+            </navigation>
+
+            <fragment name="row1" type="row">
+                <fragment name="col1" type="column">
+                    <fragment name="p1" type="portlet">
+                        <property name="portlet" value="5.80"/>
+                    </fragment>
+                </fragment>
+            </fragment>
+        </fragment>
+
 <!--
         <fragment name="j2ca" type="page">
             <navigation>

Modified: geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml?rev=392877&r1=392876&r2=392877&view=diff
==============================================================================
--- geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml (original)
+++ geronimo/branches/1.1/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml Sun Apr  9 20:17:24 2006
@@ -139,5 +139,10 @@
         <portlet id="67">
             <definition-id>console-standard.JMSWizard</definition-id>
         </portlet>
+
+        <!-- Leave some free numbers for the portlets that are in HEAD but not 1.1 yet -->
+        <portlet id="80">
+            <definition-id>console-standard.ThreadPool</definition-id>
+        </portlet>
     </application>
 </portlet-entity-registry>

Modified: geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java?rev=392877&r1=392876&r2=392877&view=diff
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java (original)
+++ geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java Sun Apr  9 20:17:24 2006
@@ -16,27 +16,14 @@
  */
 package org.apache.geronimo.console.jmsmanager.wizard;
 
-import java.io.IOException;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Iterator;
-import javax.portlet.PortletException;
-import javax.portlet.ActionResponse;
 import javax.portlet.PortletConfig;
-import javax.portlet.RenderResponse;
-import javax.portlet.RenderRequest;
-import javax.portlet.ActionRequest;
-import javax.portlet.WindowState;
+import javax.portlet.PortletException;
 import javax.portlet.PortletRequest;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.geronimo.console.BasePortlet;
-import org.apache.geronimo.console.MultiPagePortlet;
 import org.apache.geronimo.console.MultiPageModel;
+import org.apache.geronimo.console.MultiPagePortlet;
 
 /**
- * A portlet that lets you configure and deploy JDBC connection pools.
+ * A portlet that lets you configure and deploy JMS resources.
  *
  * @version $Rev: 368994 $ $Date: 2006-01-14 02:07:18 -0500 (Sat, 14 Jan 2006) $
  */

Added: geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/AbstractThreadHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/AbstractThreadHandler.java?rev=392877&view=auto
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/AbstractThreadHandler.java (added)
+++ geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/AbstractThreadHandler.java Sun Apr  9 20:17:24 2006
@@ -0,0 +1,53 @@
+/**
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.console.threads;
+
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletRequest;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.MultiPageAbstractHandler;
+import org.apache.geronimo.console.MultiPageModel;
+
+/**
+ * Base class for portlet helpers
+ *
+ * @version $Rev: 368994 $ $Date: 2006-01-14 02:07:18 -0500 (Sat, 14 Jan 2006) $
+ */
+public abstract class AbstractThreadHandler extends MultiPageAbstractHandler {
+    private final static Log log = LogFactory.getLog(AbstractThreadHandler.class);
+    protected final static String ABSTRACT_NAME_PARAMETER = "abstractName";
+
+    protected final static String LIST_MODE="list";
+    protected final static String MONITOR_MODE="monitor";
+
+    public AbstractThreadHandler(String mode, String viewName) {
+        super(mode, viewName);
+    }
+
+    public static class ThreadPoolData implements MultiPageModel {
+        // Used for editing an existing thread pool
+        private String abstractName;
+
+        public ThreadPoolData(PortletRequest request) {
+            abstractName = request.getParameter(AbstractThreadHandler.ABSTRACT_NAME_PARAMETER);
+        }
+
+        public void save(ActionResponse response) {
+            if(!isEmpty(abstractName)) response.setRenderParameter(AbstractThreadHandler.ABSTRACT_NAME_PARAMETER, abstractName);
+        }
+    }
+}

Added: geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ListScreenHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ListScreenHandler.java?rev=392877&view=auto
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ListScreenHandler.java (added)
+++ geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ListScreenHandler.java Sun Apr  9 20:17:24 2006
@@ -0,0 +1,93 @@
+/**
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.console.threads;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Arrays;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import org.apache.geronimo.console.MultiPageModel;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.management.geronimo.ThreadPool;
+
+/**
+ * A handles for the front page that lists available thread pools.
+ *
+ * @version $Rev: 368994 $ $Date: 2006-01-14 02:07:18 -0500 (Sat, 14 Jan 2006) $
+ */
+public class ListScreenHandler extends AbstractThreadHandler {
+    public ListScreenHandler() {
+        super(LIST_MODE, "/WEB-INF/view/threads/list.jsp");
+    }
+
+    public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        return getMode();
+    }
+
+    public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException {
+        populateExistingList(request);
+    }
+
+    public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        return getMode();
+    }
+
+    private void populateExistingList(PortletRequest renderRequest) {
+        ThreadPool[] pools = PortletManager.getCurrentServer(renderRequest).getThreadPools();
+        ThreadPoolSummary[] result = new ThreadPoolSummary[pools.length];
+        for (int i = 0; i < pools.length; i++) {
+            result[i] = new ThreadPoolSummary(PortletManager.getNameFor(renderRequest, pools[i]), pools[i].getPoolSize());
+        }
+        Arrays.sort(result);
+        renderRequest.setAttribute("pools", result);
+    }
+
+    public static class ThreadPoolSummary implements Serializable, Comparable {
+        private final String abstractName;
+        private final int maxSize;
+        private final String name;
+
+        public ThreadPoolSummary(AbstractName abstractName, int maxSize) {
+            this.abstractName = abstractName.toString();
+            name = (String) abstractName.getName().get(NameFactory.J2EE_NAME);
+            this.maxSize = maxSize;
+        }
+
+        public String getAbstractName() {
+            return abstractName;
+        }
+
+        public int getPoolSize() {
+            return maxSize;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public int compareTo(Object o) {
+            ThreadPoolSummary other = (ThreadPoolSummary) o;
+            return name.compareTo(other.name);
+        }
+    }
+}

Added: geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/MonitorScreenHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/MonitorScreenHandler.java?rev=392877&view=auto
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/MonitorScreenHandler.java (added)
+++ geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/MonitorScreenHandler.java Sun Apr  9 20:17:24 2006
@@ -0,0 +1,88 @@
+/**
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.console.threads;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.net.URI;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import org.apache.geronimo.console.MultiPageModel;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.management.StatisticsProvider;
+import org.apache.geronimo.management.geronimo.stats.ThreadPoolStats;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+
+/**
+ * A handles for the page that gives statistics about a particular thread pool.
+ *
+ * @version $Rev: 368994 $ $Date: 2006-01-14 02:07:18 -0500 (Sat, 14 Jan 2006) $
+ */
+public class MonitorScreenHandler extends AbstractThreadHandler {
+    public MonitorScreenHandler() {
+        super(MONITOR_MODE, "/WEB-INF/view/threads/monitor.jsp");
+    }
+
+    public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        response.setRenderParameter(ABSTRACT_NAME_PARAMETER, request.getParameter(ABSTRACT_NAME_PARAMETER));
+        return getMode();
+    }
+
+    public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException {
+        AbstractName name = new AbstractName(URI.create(request.getParameter(ABSTRACT_NAME_PARAMETER)));
+        StatisticsProvider pool = (StatisticsProvider) PortletManager.getManagedBean(request, name);
+        ThreadPoolStats stats = (ThreadPoolStats) pool.getStats();
+        String[] consumers = stats.getThreadConsumers();
+        ClientStats[] result = new ClientStats[consumers.length];
+        for (int i = 0; i < result.length; i++) {
+            result[i] = new ClientStats(consumers[i], (int)stats.getCountForConsumer(consumers[i]).getCount());
+        }
+        request.setAttribute("poolName", name.getName().get(NameFactory.J2EE_NAME));
+        request.setAttribute("stats", stats);
+        request.setAttribute("consumers", result);
+    }
+
+    public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        return getMode();
+    }
+
+    public static class ClientStats implements Serializable, Comparable {
+        private final String name;
+        private final int threadCount;
+
+        public ClientStats(String name, int threadCount) {
+            this.name = name;
+            this.threadCount = threadCount;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public int getThreadCount() {
+            return threadCount;
+        }
+
+        public int compareTo(Object o) {
+            ClientStats other = (ClientStats) o;
+            return name.compareTo(other.name);
+        }
+    }
+}

Added: geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ThreadPoolPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ThreadPoolPortlet.java?rev=392877&view=auto
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ThreadPoolPortlet.java (added)
+++ geronimo/branches/1.1/applications/console-standard/src/java/org/apache/geronimo/console/threads/ThreadPoolPortlet.java Sun Apr  9 20:17:24 2006
@@ -0,0 +1,39 @@
+/**
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.console.threads;
+
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import org.apache.geronimo.console.MultiPagePortlet;
+import org.apache.geronimo.console.MultiPageModel;
+
+/**
+ * A portlet that lets you configure and deploy thread pools.
+ *
+ * @version $Rev: 368994 $ $Date: 2006-01-14 02:07:18 -0500 (Sat, 14 Jan 2006) $
+ */
+public class ThreadPoolPortlet extends MultiPagePortlet {
+    public void init(PortletConfig config) throws PortletException {
+        super.init(config);
+        addHelper(new ListScreenHandler(), config);
+        addHelper(new MonitorScreenHandler(), config);
+    }
+
+    protected MultiPageModel getModel(PortletRequest request) {
+        return new AbstractThreadHandler.ThreadPoolData(request);
+    }
+}

Modified: geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/portlet.xml?rev=392877&r1=392876&r2=392877&view=diff
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/portlet.xml (original)
+++ geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/portlet.xml Sun Apr  9 20:17:24 2006
@@ -385,6 +385,30 @@
     </portlet>
 
     <portlet>
+        <description>Portlet for configuring Thread Pools</description>
+        <portlet-name>ThreadPool</portlet-name>
+        <display-name>Thread Pool Portlet</display-name>
+
+        <portlet-class>org.apache.geronimo.console.threads.ThreadPoolPortlet</portlet-class>
+
+        <expiration-cache>-1</expiration-cache>
+
+        <supports>
+            <mime-type>text/html</mime-type>
+            <portlet-mode>VIEW</portlet-mode>
+<!--            <portlet-mode>HELP</portlet-mode>-->
+        </supports>
+
+        <supported-locale>en</supported-locale>
+
+        <portlet-info>
+            <title>Thread Pool Configuration</title>
+            <short-title>Thread Pools</short-title>
+            <keywords>Thread Pool</keywords>
+        </portlet-info>
+    </portlet>
+
+    <portlet>
         <description>Portlet for displaying J2CA server info</description>
         <portlet-name>J2CAServer</portlet-name>
         <display-name>J2CA Server Portlet</display-name>

Added: geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/list.jsp
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/list.jsp?rev=392877&view=auto
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/list.jsp (added)
+++ geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/list.jsp Sun Apr  9 20:17:24 2006
@@ -0,0 +1,27 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p>This page lists the thread pools defined in the Geronimo server.  <i>Note: Currently
+not all threads used by Geronimo come from one of these thread pools.  We're working
+on migrating the different components of Geronimo toward these thread pools.</i></p>
+
+<table width="100%">
+  <tr>
+    <td class="DarkBackground">Name</td>
+    <td class="DarkBackground" align="center">Size</td>
+    <td class="DarkBackground" align="center">Actions</td>
+  </tr>
+<c:forEach var="pool" items="${pools}">
+  <tr>
+    <td>${pool.name}</td>
+    <td>${pool.poolSize}</td>
+    <td>
+      <a href="<portlet:actionURL portletMode="view">
+        <portlet:param name="mode" value="monitor-before" />
+        <portlet:param name="abstractName" value="${pool.abstractName}" />
+      </portlet:actionURL>">monitor</a>
+    </td>
+  </tr>
+</c:forEach>
+</table>

Added: geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/monitor.jsp
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/monitor.jsp?rev=392877&view=auto
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/monitor.jsp (added)
+++ geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/view/threads/monitor.jsp Sun Apr  9 20:17:24 2006
@@ -0,0 +1,41 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<portlet:defineObjects/>
+
+<p>Thread pools statistics for ${poolName}:</p>
+
+<table>
+  <tr>
+    <th align="right">Pool Max:</th>
+    <td>${stats.threadsInUse.upperBound}</td>
+  </tr>
+  <tr>
+    <th align="right">Lowest Recorded:</th>
+    <td>${stats.threadsInUse.lowWaterMark}</td>
+  </tr>
+  <tr>
+    <th align="right">Highest Recorded:</th>
+    <td>${stats.threadsInUse.highWaterMark}</td>
+  </tr>
+  <tr>
+    <th align="right">Threads in Use:</th>
+    <td>${stats.threadsInUse.current}</td>
+  </tr>
+</table>
+
+<c:if test="${! empty consumers}">
+<p>Current consumers of threads in this pool:</p>
+
+<table>
+  <tr>
+    <th>Description</th>
+    <th># of Threads</th>
+  </tr>
+<c:forEach var="client" items="${consumers}">
+  <tr>
+    <td>${client.name}</td>
+    <td>${client.threadCount}</td>
+  </tr>
+</c:forEach>
+</table>
+</c:if>
\ No newline at end of file

Modified: geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/web.xml?rev=392877&r1=392876&r2=392877&view=diff
==============================================================================
--- geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/web.xml (original)
+++ geronimo/branches/1.1/applications/console-standard/src/webapp/WEB-INF/web.xml Sun Apr  9 20:17:24 2006
@@ -205,6 +205,19 @@
             <param-value>console-standard.Keystore</param-value>
         </init-param>
     </servlet>
+    <servlet>
+        <display-name>Pluto Wrapper for Thread Pool Portlet</display-name>
+        <servlet-name>ThreadPool</servlet-name>
+        <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
+        <init-param>
+            <param-name>portlet-class</param-name>
+            <param-value>org.apache.geronimo.console.threads.ThreadPoolPortlet</param-value>
+        </init-param>
+        <init-param>
+            <param-name>portlet-guid</param-name>
+            <param-value>console-standard.ThreadPool</param-value>
+        </init-param>
+    </servlet>
 
 
     <servlet>
@@ -763,6 +776,10 @@
     <servlet-mapping>
         <servlet-name>Keystore</servlet-name>
         <url-pattern>/Keystore/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>ThreadPool</servlet-name>
+        <url-pattern>/ThreadPool/*</url-pattern>
     </servlet-mapping>