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 2005/08/07 00:10:44 UTC

svn commit: r230604 - in /geronimo/trunk/applications: console-core/ console-core/src/java/org/apache/geronimo/console/util/ console-standard/ console-standard/src/java/org/apache/geronimo/console/util/ console-standard/src/java/org/apache/geronimo/con...

Author: ammulder
Date: Sat Aug  6 15:10:37 2005
New Revision: 230604

URL: http://svn.apache.org/viewcvs?rev=230604&view=rev
Log:
Update the web manager portal page to use the management API
Combine the connector management functionality into a single portlet
  (though it's currently living in the AJP portlet)

Added:
    geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/editHTTP.jsp
Modified:
    geronimo/trunk/applications/console-core/project.xml
    geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java
    geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java
    geronimo/trunk/applications/console-standard/project.xml
    geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java
    geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/AJP13ConnectorPortlet.java
    geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java
    geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/WebManagerPortlet.java
    geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml
    geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/ajp13/normal.jsp

Modified: geronimo/trunk/applications/console-core/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/project.xml?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-core/project.xml (original)
+++ geronimo/trunk/applications/console-core/project.xml Sat Aug  6 15:10:37 2005
@@ -16,6 +16,11 @@
         </dependency>
         <dependency>
             <groupId>geronimo</groupId>
+            <artifactId>geronimo-core</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>geronimo</groupId>
             <artifactId>geronimo-deployment</artifactId>
             <version>${pom.currentVersion}</version>
         </dependency>

Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java (original)
+++ geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java Sat Aug  6 15:10:37 2005
@@ -23,8 +23,12 @@
 import javax.management.MalformedObjectNameException;
 import org.apache.geronimo.j2ee.management.geronimo.JVM;
 import org.apache.geronimo.j2ee.management.geronimo.J2EEApplication;
+import org.apache.geronimo.j2ee.management.geronimo.WebContainer;
+import org.apache.geronimo.j2ee.management.geronimo.J2EEServer;
+import org.apache.geronimo.j2ee.management.geronimo.WebConnector;
+import org.apache.geronimo.j2ee.management.geronimo.EJBContainer;
+import org.apache.geronimo.j2ee.management.geronimo.EJBConnector;
 import org.apache.geronimo.j2ee.management.J2EEDomain;
-import org.apache.geronimo.j2ee.management.J2EEServer;
 import org.apache.geronimo.j2ee.management.J2EEDeployedObject;
 import org.apache.geronimo.j2ee.management.AppClientModule;
 import org.apache.geronimo.j2ee.management.WebModule;
@@ -45,8 +49,10 @@
 import org.apache.geronimo.j2ee.management.impl.Util;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.proxy.ProxyManager;
 import org.apache.geronimo.system.logging.SystemLog;
+import org.apache.geronimo.pool.GeronimoExecutor;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -74,7 +80,7 @@
             try {
                 domains[i] = (J2EEDomain)kernel.getProxyManager().createProxy(ObjectName.getInstance(names[i]), J2EEDomain.class);
             } catch (MalformedObjectNameException e) {
-                log.error(e);
+                log.error("Unable to look up related GBean", e);
             }
         }
         return domains;
@@ -84,11 +90,11 @@
         J2EEServer[] servers = new J2EEServer[0];
         try {
             String[] names = domain.getServers();
-            Object[] temp = pm.createProxies(names);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
             servers = new J2EEServer[temp.length];
             System.arraycopy(temp, 0, servers, 0, temp.length);
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return servers;
     }
@@ -97,11 +103,11 @@
         J2EEDeployedObject[] result = new J2EEDeployedObject[0];
         try {
             String[] names = server.getDeployedObjects();
-            Object[] temp = pm.createProxies(names);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
             result = new J2EEDeployedObject[temp.length];
             System.arraycopy(temp, 0, result, 0, temp.length);
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return result;
     }
@@ -114,11 +120,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.J2EE_APPLICATION)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (J2EEApplication[]) list.toArray(new J2EEApplication[list.size()]);
     }
@@ -131,11 +137,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.APP_CLIENT_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (AppClientModule[]) list.toArray(new AppClientModule[list.size()]);
     }
@@ -148,11 +154,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.WEB_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (WebModule[]) list.toArray(new WebModule[list.size()]);
     }
@@ -165,11 +171,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.EJB_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (EJBModule[]) list.toArray(new EJBModule[list.size()]);
     }
@@ -182,11 +188,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.RESOURCE_ADAPTER_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (ResourceAdapterModule[]) list.toArray(new ResourceAdapterModule[list.size()]);
     }
@@ -195,11 +201,11 @@
         J2EEResource[] result = new J2EEResource[0];
         try {
             String[] names = server.getResources();
-            Object[] temp = pm.createProxies(names);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
             result = new J2EEResource[temp.length];
             System.arraycopy(temp, 0, result, 0, temp.length);
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return result;
     }
@@ -215,7 +221,7 @@
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (JCAResource[]) list.toArray(new JCAResource[list.size()]);
     }
@@ -232,11 +238,100 @@
         JVM[] result = new JVM[0];
         try {
             String[] names = server.getJavaVMs();
-            Object[] temp = pm.createProxies(names);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
             result = new JVM[temp.length];
             System.arraycopy(temp, 0, result, 0, temp.length);
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public WebContainer getWebContainer(J2EEServer server) {
+        WebContainer result = null;
+        try {
+            String name = server.getWebContainer();
+            Object temp = pm.createProxy(ObjectName.getInstance(name), KernelManagementHelper.class.getClassLoader());
+            result = (WebContainer)temp;
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public WebConnector[] getWebConnectors(WebContainer container, String protocol) {
+        WebConnector[] result = new WebConnector[0];
+        try {
+            String[] names = container.getConnectors(protocol);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+            result = new WebConnector[temp.length];
+            System.arraycopy(temp, 0, result, 0, temp.length);
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public WebConnector[] getWebConnectors(WebContainer container) {
+        WebConnector[] result = new WebConnector[0];
+        try {
+            String[] names = container.getConnectors();
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+            result = new WebConnector[temp.length];
+            System.arraycopy(temp, 0, result, 0, temp.length);
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public EJBContainer getEJBContainer(J2EEServer server) {
+        EJBContainer result = null;
+        try {
+            String name = server.getEJBContainer();
+            Object temp = pm.createProxy(ObjectName.getInstance(name), KernelManagementHelper.class.getClassLoader());
+            result = (EJBContainer)temp;
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public EJBConnector[] getEJBConnectors(EJBContainer container, String protocol) {
+        EJBConnector[] result = new EJBConnector[0];
+        try {
+            String[] names = container.getConnectors(protocol);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+            result = new EJBConnector[temp.length];
+            System.arraycopy(temp, 0, result, 0, temp.length);
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public EJBConnector[] getEJBConnectors(EJBContainer container) {
+        EJBConnector[] result = new EJBConnector[0];
+        try {
+            String[] names = container.getConnectors();
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+            result = new EJBConnector[temp.length];
+            System.arraycopy(temp, 0, result, 0, temp.length);
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public GeronimoExecutor[] getThreadPools(J2EEServer server) {
+        GeronimoExecutor[] result = new GeronimoExecutor[0];
+        try {
+            String[] names = server.getThreadPools();
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
+            result = new GeronimoExecutor[temp.length];
+            System.arraycopy(temp, 0, result, 0, temp.length);
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
         }
         return result;
     }
@@ -245,10 +340,10 @@
         SystemLog result = null;
         try {
             String name = jvm.getSystemLog();
-            Object temp = pm.createProxy(ObjectName.getInstance(name));
+            Object temp = pm.createProxy(ObjectName.getInstance(name), KernelManagementHelper.class.getClassLoader());
             result = (SystemLog)temp;
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return result;
     }
@@ -258,11 +353,11 @@
         J2EEModule[] result = new J2EEModule[0];
         try {
             String[] names = application.getModules();
-            Object[] temp = pm.createProxies(names);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
             result = new J2EEModule[temp.length];
             System.arraycopy(temp, 0, result, 0, temp.length);
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return result;
     }
@@ -275,11 +370,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.APP_CLIENT_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (AppClientModule[]) list.toArray(new AppClientModule[list.size()]);
     }
@@ -292,11 +387,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.WEB_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (WebModule[]) list.toArray(new WebModule[list.size()]);
     }
@@ -309,11 +404,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.EJB_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (EJBModule[]) list.toArray(new EJBModule[list.size()]);
     }
@@ -326,11 +421,11 @@
                 ObjectName name = ObjectName.getInstance(names[i]);
                 String type = name.getKeyProperty(NameFactory.J2EE_TYPE);
                 if(type.equals(NameFactory.RESOURCE_ADAPTER_MODULE)) {
-                    list.add(pm.createProxy(name));
+                    list.add(pm.createProxy(name, KernelManagementHelper.class.getClassLoader()));
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (ResourceAdapterModule[]) list.toArray(new ResourceAdapterModule[list.size()]);
     }
@@ -340,11 +435,11 @@
         J2EEResource[] result = new J2EEResource[0];
         try {
             String[] names = application.getResources();
-            Object[] temp = pm.createProxies(names);
+            Object[] temp = pm.createProxies(names, KernelManagementHelper.class.getClassLoader());
             result = new J2EEResource[temp.length];
             System.arraycopy(temp, 0, result, 0, temp.length);
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return result;
     }
@@ -360,7 +455,7 @@
                 }
             }
         } catch (Exception e) {
-            log.error(e);
+            log.error("Unable to look up related GBean", e);
         }
         return (JCAResource[]) list.toArray(new JCAResource[list.size()]);
     }
@@ -406,6 +501,25 @@
 
     public JCAManagedConnectionFactory getManagedConnectionFactory(JCAConnectionFactory factory) {
         return null;  //todo
+    }
+
+    public Object getObject(String objectName) {
+        try {
+            return kernel.getProxyManager().createProxy(ObjectName.getInstance(objectName), KernelManagementHelper.class.getClassLoader());
+        } catch (MalformedObjectNameException e) {
+            log.error("Unable to look up related GBean", e);
+            return null;
+        }
+    }
+
+    public String getGBeanDescription(String objectName) {
+        try {
+            return kernel.getGBeanInfo(ObjectName.getInstance(objectName)).getName();
+        } catch (GBeanNotFoundException e) {
+            return null;
+        } catch (MalformedObjectNameException e) {
+            return "Invalid object name";
+        }
     }
 
     /**

Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java (original)
+++ geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java Sat Aug  6 15:10:37 2005
@@ -17,7 +17,6 @@
 package org.apache.geronimo.console.util;
 
 import org.apache.geronimo.j2ee.management.J2EEDomain;
-import org.apache.geronimo.j2ee.management.J2EEServer;
 import org.apache.geronimo.j2ee.management.J2EEDeployedObject;
 import org.apache.geronimo.j2ee.management.J2EEResource;
 import org.apache.geronimo.j2ee.management.AppClientModule;
@@ -37,7 +36,13 @@
 import org.apache.geronimo.j2ee.management.ResourceAdapter;
 import org.apache.geronimo.j2ee.management.geronimo.JVM;
 import org.apache.geronimo.j2ee.management.geronimo.J2EEApplication;
+import org.apache.geronimo.j2ee.management.geronimo.J2EEServer;
+import org.apache.geronimo.j2ee.management.geronimo.WebContainer;
+import org.apache.geronimo.j2ee.management.geronimo.WebConnector;
+import org.apache.geronimo.j2ee.management.geronimo.EJBConnector;
+import org.apache.geronimo.j2ee.management.geronimo.EJBContainer;
 import org.apache.geronimo.system.logging.SystemLog;
+import org.apache.geronimo.pool.GeronimoExecutor;
 
 /**
  * A helper interface to navigate between management objects.  This is not
@@ -65,6 +70,13 @@
     JDBCResource[] getJDBCResources(J2EEServer server);
     JMSResource[] getJMSResources(J2EEServer server);
     JVM[] getJavaVMs(J2EEServer server);
+    WebContainer getWebContainer(J2EEServer server);
+    WebConnector[] getWebConnectors(WebContainer container, String protocol);
+    WebConnector[] getWebConnectors(WebContainer container);
+    EJBContainer getEJBContainer(J2EEServer server);
+    EJBConnector[] getEJBConnectors(EJBContainer container, String protocol);
+    EJBConnector[] getEJBConnectors(EJBContainer container);
+    GeronimoExecutor[] getThreadPools(J2EEServer server);
     //todo: repository, embedded database
 
     // JVM properties
@@ -94,4 +106,8 @@
     JDBCDriver[] getDriver(JDBCDataSource dataSource);
     JCAConnectionFactory[] getConnectionFactories(JCAResource resource);
     JCAManagedConnectionFactory getManagedConnectionFactory(JCAConnectionFactory factory);
+
+    // Generic utility methods
+    Object getObject(String objectName);
+    String getGBeanDescription(String objectName);
 }

Modified: geronimo/trunk/applications/console-standard/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/project.xml?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/project.xml (original)
+++ geronimo/trunk/applications/console-standard/project.xml Sat Aug  6 15:10:37 2005
@@ -17,6 +17,11 @@
         </dependency>
         <dependency>
              <groupId>geronimo</groupId>
+             <artifactId>geronimo-core</artifactId>
+             <version>${pom.currentVersion}</version>
+         </dependency>
+        <dependency>
+             <groupId>geronimo</groupId>
              <artifactId>geronimo-connector</artifactId>
              <version>${pom.currentVersion}</version>
          </dependency>

Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java (original)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java Sat Aug  6 15:10:37 2005
@@ -23,9 +23,14 @@
 import org.apache.geronimo.kernel.KernelRegistry;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.j2ee.management.J2EEDomain;
-import org.apache.geronimo.j2ee.management.J2EEServer;
 import org.apache.geronimo.j2ee.management.geronimo.JVM;
+import org.apache.geronimo.j2ee.management.geronimo.J2EEServer;
+import org.apache.geronimo.j2ee.management.geronimo.WebContainer;
+import org.apache.geronimo.j2ee.management.geronimo.WebConnector;
+import org.apache.geronimo.j2ee.management.geronimo.EJBContainer;
+import org.apache.geronimo.j2ee.management.geronimo.EJBConnector;
 import org.apache.geronimo.system.logging.SystemLog;
+import org.apache.geronimo.pool.GeronimoExecutor;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -39,6 +44,8 @@
     private final static String DOMAIN_KEY = "org.apache.geronimo.console.J2EEDomain";
     private final static String SERVER_KEY = "org.apache.geronimo.console.J2EEServer";
     private final static String JVM_KEY = "org.apache.geronimo.console.JVM";
+    private final static String WEB_CONTAINER_KEY = "org.apache.geronimo.console.WebContainer";
+    private final static String EJB_CONTAINER_KEY = "org.apache.geronimo.console.EJBContainer";
     private final static String SYSTEM_LOG_KEY = "org.apache.geronimo.console.SystemLog";
     // The following may change based on the user's selections
         // nothing yet
@@ -95,6 +102,70 @@
             request.getPortletSession().setAttribute(JVM_KEY, jvm, PortletSession.APPLICATION_SCOPE);
         }
         return jvm;
+    }
+
+    public static WebContainer getCurrentWebContainer(PortletRequest request) {
+        WebContainer container = (WebContainer) request.getPortletSession(true).getAttribute(WEB_CONTAINER_KEY, PortletSession.APPLICATION_SCOPE);
+        if(container == null) {
+            ManagementHelper helper = getManagementHelper(request);
+            container = helper.getWebContainer(getCurrentServer(request));
+            request.getPortletSession().setAttribute(WEB_CONTAINER_KEY, container, PortletSession.APPLICATION_SCOPE);
+        }
+        return container;
+    }
+
+    public static WebConnector createWebConnector(PortletRequest request, String name, String protocol, String host, int port) {
+        WebContainer container = getCurrentWebContainer(request);
+        String objectName = container.addConnector(name, protocol, host, port);
+        ManagementHelper helper = getManagementHelper(request);
+        return (WebConnector)helper.getObject(objectName);
+    }
+
+    public static WebConnector[] getWebConnectors(PortletRequest request) {
+        ManagementHelper helper = getManagementHelper(request);
+        return helper.getWebConnectors(getCurrentWebContainer(request));
+    }
+
+    public static WebConnector[] getWebConnectors(PortletRequest request, String protocol) {
+        ManagementHelper helper = getManagementHelper(request);
+        return helper.getWebConnectors(getCurrentWebContainer(request),protocol);
+    }
+
+    public static EJBContainer getCurrentEJBContainer(PortletRequest request) {
+        EJBContainer container = (EJBContainer) request.getPortletSession(true).getAttribute(EJB_CONTAINER_KEY, PortletSession.APPLICATION_SCOPE);
+        if(container == null) {
+            ManagementHelper helper = getManagementHelper(request);
+            container = helper.getEJBContainer(getCurrentServer(request));
+            request.getPortletSession().setAttribute(EJB_CONTAINER_KEY, container, PortletSession.APPLICATION_SCOPE);
+        }
+        return container;
+    }
+
+    public static EJBConnector createEJBConnector(PortletRequest request, String name, String protocol, String threadPoolObjectName, String host, int port) {
+        EJBContainer container = getCurrentEJBContainer(request);
+        String objectName = container.addConnector(name, protocol, threadPoolObjectName, host, port);
+        ManagementHelper helper = getManagementHelper(request);
+        return (EJBConnector)helper.getObject(objectName);
+    }
+
+    public static EJBConnector[] getEJBConnectors(PortletRequest request) {
+        ManagementHelper helper = getManagementHelper(request);
+        return helper.getEJBConnectors(getCurrentEJBContainer(request));
+    }
+
+    public static EJBConnector[] getEJBConnectors(PortletRequest request, String protocol) {
+        ManagementHelper helper = getManagementHelper(request);
+        return helper.getEJBConnectors(getCurrentEJBContainer(request), protocol);
+    }
+
+    public static GeronimoExecutor[] getThreadPools(PortletRequest request) {
+        ManagementHelper helper = getManagementHelper(request);
+        return helper.getThreadPools(getCurrentServer(request));
+    }
+
+    public static String getGBeanDescription(PortletRequest request, String objectName) {
+        ManagementHelper helper = getManagementHelper(request);
+        return helper.getGBeanDescription(objectName);
     }
 
     public static SystemLog getCurrentSystemLog(PortletRequest request) {

Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/AJP13ConnectorPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/AJP13ConnectorPortlet.java?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/AJP13ConnectorPortlet.java (original)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/AJP13ConnectorPortlet.java Sat Aug  6 15:10:37 2005
@@ -19,10 +19,8 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Set;
+import java.util.List;
 
-import javax.management.ObjectName;
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
@@ -32,17 +30,17 @@
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.WindowState;
-
-import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.kernel.KernelRegistry;
-import org.apache.geronimo.kernel.jmx.JMXUtil;
+import javax.portlet.PortletContext;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.j2ee.management.geronimo.WebContainer;
+import org.apache.geronimo.j2ee.management.geronimo.WebConnector;
+import org.apache.geronimo.jetty.JettyContainer;
+import org.apache.geronimo.jetty.JettyWebConnector;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 public class AJP13ConnectorPortlet extends GenericPortlet {
-
-    private static final ObjectName QUERY = JMXUtil
-            .getObjectName("*:type=WebConnector,protocol=AJP13,*");
-
-    private Kernel kernel;
+    private final static Log log = LogFactory.getLog(AJP13ConnectorPortlet.class);
 
     private PortletRequestDispatcher normalView;
 
@@ -50,8 +48,69 @@
 
     private PortletRequestDispatcher helpView;
 
+    protected PortletRequestDispatcher editHttpView;
+    protected PortletRequestDispatcher editHttpsView;
+
     public void processAction(ActionRequest actionRequest,
             ActionResponse actionResponse) throws PortletException, IOException {
+        String mode = actionRequest.getParameter("mode");
+        WebContainer container = PortletManager.getCurrentWebContainer(actionRequest);
+        String server = "generic";
+        if(container instanceof JettyContainer) {
+            server = "jetty";
+        }
+        actionResponse.setRenderParameter("server", server);
+        if(mode.equals("new")) {
+            // User selected to add a new connector, need to show criteria portlet
+            actionResponse.setRenderParameter("mode", "new");
+            String protocol = actionRequest.getParameter("protocol");
+            actionResponse.setRenderParameter("protocol", protocol);
+        } else if(mode.equals("add")) { // User just submitted the form to add a new connector
+            // Get submitted values
+            //todo: lots of validation
+            String protocol = actionRequest.getParameter("protocol");
+            String host = actionRequest.getParameter("host");
+            int port = Integer.parseInt(actionRequest.getParameter("port"));
+            int maxThreads = Integer.parseInt(actionRequest.getParameter("maxThreads"));
+            Integer minThreads = getInteger(actionRequest, "minThreads");
+            String name = actionRequest.getParameter("name");
+            // Create and configure the connector
+            WebConnector connector = PortletManager.createWebConnector(actionRequest, name, protocol, host, port);
+            connector.setMaxThreads(maxThreads);
+            // todo: more configurable HTTP/Jetty values
+            if(connector instanceof JettyWebConnector) {
+                if(minThreads != null) {
+                    ((JettyWebConnector)connector).setMinThreads(minThreads.intValue());
+                }
+            }
+            if(protocol.equals(WebContainer.PROTOCOL_HTTPS)) {
+                //todo: HTTPS values
+            }
+
+            // Start the connector
+            try {
+                connector.startRecursive();
+            } catch (Exception e) {
+                log.error("Unable to start connector", e); //todo: get into rendered page somehow?
+            }
+            actionResponse.setRenderParameter("mode", "list");
+        } else if(mode.equals("edit")) {
+            String objectName = actionRequest.getParameter("name");
+            actionResponse.setRenderParameter("name", objectName);
+            actionResponse.setRenderParameter("mode", "edit");
+        } else if(mode.equals("delete")) { // User chose to delete a connector
+            String objectName = actionRequest.getParameter("name");
+            PortletManager.getCurrentWebContainer(actionRequest).removeConnector(objectName);
+            actionResponse.setRenderParameter("mode", "list");
+        }
+    }
+
+    private Integer getInteger(ActionRequest actionRequest, String key) {
+        String value = actionRequest.getParameter(key);
+        if(value == null || value.equals("")) {
+            return null;
+        }
+        return new Integer(value);
     }
 
     protected void doView(RenderRequest renderRequest,
@@ -59,24 +118,73 @@
         if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
             return;
         }
+        String mode = renderRequest.getParameter("mode");
+        if(mode == null || mode.equals("")) {
+            mode = "list";
+        }
+        renderRequest.setAttribute("server", renderRequest.getParameter("server"));
+        WebContainer container = PortletManager.getCurrentWebContainer(renderRequest);
+        if(mode.equals("new")) {
+            String protocol = renderRequest.getParameter("protocol");
+            renderRequest.setAttribute("maxThreads", "50");
+            if(container instanceof JettyWebConnector) {
+                renderRequest.setAttribute("minThreads", "10");
+            }
+            renderRequest.setAttribute("protocol", protocol);
+            renderRequest.setAttribute("mode", "add");
+            if(protocol.equals(WebContainer.PROTOCOL_HTTPS)) {
+                editHttpsView.include(renderRequest, renderResponse);
+            } else {
+                editHttpView.include(renderRequest, renderResponse);
+            }
+        } else if(mode.equals("edit")) {
+            String objectName = renderRequest.getParameter("name");
+            WebConnector connector = null;
+            WebConnector all[] = PortletManager.getWebConnectors(renderRequest);
+            for (int i = 0; i < all.length; i++) {
+                WebConnector conn = all[i];
+                if(conn.getObjectName().equals(objectName)) {
+                    connector = conn;
+                    break;
+                }
+            }
+            if(connector == null) {
+                doList(renderRequest, container, renderResponse);
+            } else {
+                renderRequest.setAttribute("protocol", connector.getProtocol());
+                renderRequest.setAttribute("port", new Integer(connector.getPort()));
+                renderRequest.setAttribute("host", connector.getHost());
+                renderRequest.setAttribute("maxThreads", "50");
+                if(container instanceof JettyWebConnector) {
+                    renderRequest.setAttribute("minThreads", "10");
+                }
+                renderRequest.setAttribute("mode", "edit");
+                if(connector.getProtocol().equals(WebContainer.PROTOCOL_HTTPS)) {
+                    editHttpsView.include(renderRequest, renderResponse);
+                } else {
+                    editHttpView.include(renderRequest, renderResponse);
+                }
+            }
+        } else if(mode.equals("list")) {
+            doList(renderRequest, container, renderResponse);
+        }
+    }
 
-        Set connectors = kernel.listGBeans(QUERY);
-        ArrayList beans = new ArrayList(connectors.size());
-        for (Iterator i = connectors.iterator(); i.hasNext();) {
-            ObjectName name = (ObjectName) i.next();
+    private void doList(RenderRequest renderRequest, WebContainer container, RenderResponse renderResponse) throws PortletException, IOException {
+        List beans = new ArrayList();
+        WebConnector[] connectors = PortletManager.getWebConnectors(renderRequest);
+        for (int i = 0; i < connectors.length; i++) {
+            WebConnector connector = connectors[i];
             ConnectorInfo info = new ConnectorInfo();
-            info.setObjectName(name);
-            try {
-                info.setState(((Integer) kernel.getAttribute(name, "state"))
-                        .intValue());
-                info.setPort(((Integer) kernel.getAttribute(name, "port"))
-                        .intValue());
-            } catch (Exception e) {
-                throw new PortletException(e);
-            }
+            info.setObjectName(connector.getObjectName());
+            info.setState(connector.getState());
+            info.setPort(connector.getPort());
+            info.setProtocol(connector.getProtocol());
+            info.setDescription(PortletManager.getGBeanDescription(renderRequest, connector.getObjectName()));
             beans.add(info);
         }
         renderRequest.setAttribute("connectors", beans);
+        renderRequest.setAttribute("protocols", container.getSupportedProtocols());
 
         if (WindowState.NORMAL.equals(renderRequest.getWindowState())) {
             normalView.include(renderRequest, renderResponse);
@@ -92,20 +200,17 @@
 
     public void init(PortletConfig portletConfig) throws PortletException {
         super.init(portletConfig);
-        kernel = KernelRegistry.getSingleKernel();
-        normalView = portletConfig.getPortletContext().getRequestDispatcher(
-                "/WEB-INF/view/webmanager/ajp13/normal.jsp");
-        maximizedView = portletConfig.getPortletContext().getRequestDispatcher(
-                "/WEB-INF/view/webmanager/ajp13/maximized.jsp");
-        helpView = portletConfig.getPortletContext().getRequestDispatcher(
-                "/WEB-INF/view/webmanager/ajp13/help.jsp");
+        PortletContext pc = portletConfig.getPortletContext();
+        normalView = pc.getRequestDispatcher("/WEB-INF/view/webmanager/ajp13/normal.jsp");
+        maximizedView = pc.getRequestDispatcher("/WEB-INF/view/webmanager/ajp13/maximized.jsp");
+        helpView = pc.getRequestDispatcher("/WEB-INF/view/webmanager/ajp13/help.jsp");
+        editHttpView = pc.getRequestDispatcher("/WEB-INF/view/webmanager/editHTTP.jsp");
+        editHttpsView = pc.getRequestDispatcher("/WEB-INF/view/webmanager/editHTTP.jsp"); //todo: HTTPS args
     }
 
     public void destroy() {
         normalView = null;
         maximizedView = null;
-        kernel = null;
         super.destroy();
     }
-
 }

Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java (original)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java Sat Aug  6 15:10:37 2005
@@ -24,18 +24,33 @@
 import org.apache.geronimo.kernel.management.State;
 
 public class ConnectorInfo implements Serializable {
+    private String description;
+    private String objectName;
+    private String protocol;
+    private int port;
+    private int state;
 
-    private ObjectName objectName;
+    public String getDescription() {
+        return description;
+    }
 
-    private int port;
+    public void setDescription(String description) {
+        this.description = description;
+    }
 
-    private int state;
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
 
-    public ObjectName getObjectName() {
+    public String getObjectName() {
         return objectName;
     }
 
-    public void setObjectName(ObjectName objectName) {
+    public void setObjectName(String objectName) {
         this.objectName = objectName;
     }
 

Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/WebManagerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/WebManagerPortlet.java?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/WebManagerPortlet.java (original)
+++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/webmanager/WebManagerPortlet.java Sat Aug  6 15:10:37 2005
@@ -19,7 +19,6 @@
 
 import java.io.IOException;
 
-import javax.management.ObjectName;
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
@@ -30,34 +29,32 @@
 import javax.portlet.RenderResponse;
 import javax.portlet.WindowState;
 
-import org.apache.geronimo.console.util.ObjectNameConstants;
-import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.kernel.KernelRegistry;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.j2ee.management.geronimo.WebContainer;
+import org.apache.geronimo.jetty.JettyContainer;
 
 public class WebManagerPortlet extends GenericPortlet {
-
-    private Kernel kernel;
-
     private PortletRequestDispatcher normalView;
 
     private PortletRequestDispatcher maximizedView;
 
     private PortletRequestDispatcher helpView;
 
-    private ObjectName jettyObjectName;
-
     public void processAction(ActionRequest actionRequest,
             ActionResponse actionResponse) throws PortletException, IOException {
         try {
+            WebContainer container = PortletManager.getCurrentWebContainer(actionRequest);
             String action = actionRequest.getParameter("stats");
             if (action != null) {
-                Boolean stats = Boolean.valueOf(action);
-                kernel
-                        .setAttribute(jettyObjectName, "collectStatistics",
-                                stats);
+                boolean stats = action.equals("true");
+                if(container instanceof JettyContainer) {
+                    ((JettyContainer)container).setCollectStatistics(stats);
+                }
             }
             if (actionRequest.getParameter("resetStats") != null) {
-                kernel.invoke(jettyObjectName, "resetStatistics");
+                if(container instanceof JettyContainer) {
+                    ((JettyContainer)container).resetStatistics();
+                }
             }
         } catch (Exception e) {
             throw new PortletException(e);
@@ -70,42 +67,26 @@
             return;
         }
         try {
-            Boolean statsOn = (Boolean) kernel.getAttribute(jettyObjectName,
-                    "collectStatistics");
-            renderRequest.setAttribute("statsOn", statsOn);
-            if (statsOn.booleanValue()) {
-                renderRequest.setAttribute("connections", (Integer) kernel
-                        .getAttribute(jettyObjectName, "connections"));
-                renderRequest.setAttribute("connectionsOpen", (Integer) kernel
-                        .getAttribute(jettyObjectName, "connectionsOpen"));
-                renderRequest.setAttribute("connectionsOpenMax",
-                        (Integer) kernel.getAttribute(jettyObjectName,
-                                "connectionsOpenMax"));
-                renderRequest.setAttribute("connectionsDurationAve",
-                        (Long) kernel.getAttribute(jettyObjectName,
-                                "connectionsDurationAve"));
-                renderRequest.setAttribute("connectionsDurationMax",
-                        (Long) kernel.getAttribute(jettyObjectName,
-                                "connectionsDurationMax"));
-                renderRequest.setAttribute("connectionsRequestsAve",
-                        (Integer) kernel.getAttribute(jettyObjectName,
-                                "connectionsRequestsAve"));
-                renderRequest.setAttribute("connectionsRequestsMax",
-                        (Integer) kernel.getAttribute(jettyObjectName,
-                                "connectionsRequestsMax"));
-                renderRequest.setAttribute("errors", (Integer) kernel
-                        .getAttribute(jettyObjectName, "errors"));
-                renderRequest.setAttribute("requests", (Integer) kernel
-                        .getAttribute(jettyObjectName, "requests"));
-                renderRequest.setAttribute("requestsActive", (Integer) kernel
-                        .getAttribute(jettyObjectName, "requestsActive"));
-                renderRequest.setAttribute("requestsActiveMax",
-                        (Integer) kernel.getAttribute(jettyObjectName,
-                                "requestsActiveMax"));
-                renderRequest.setAttribute("requestsDurationAve", (Long) kernel
-                        .getAttribute(jettyObjectName, "requestsDurationAve"));
-                renderRequest.setAttribute("requestsDurationMax", (Long) kernel
-                        .getAttribute(jettyObjectName, "requestsDurationMax"));
+            WebContainer container = PortletManager.getCurrentWebContainer(renderRequest);
+            if(container instanceof JettyContainer) {
+                JettyContainer jetty = ((JettyContainer)container);
+                boolean statsOn = jetty.getCollectStatistics();
+                renderRequest.setAttribute("statsOn", statsOn ? Boolean.TRUE : Boolean.FALSE);
+                if (statsOn) {
+                    renderRequest.setAttribute("connections", new Integer(jetty.getConnections()));
+                    renderRequest.setAttribute("connectionsOpen", new Integer(jetty.getConnectionsOpen()));
+                    renderRequest.setAttribute("connectionsOpenMax", new Integer(jetty.getConnectionsOpenMax()));
+                    renderRequest.setAttribute("connectionsDurationAve", new Long(jetty.getConnectionsDurationAve()));
+                    renderRequest.setAttribute("connectionsDurationMax", new Long(jetty.getConnectionsDurationMax()));
+                    renderRequest.setAttribute("connectionsRequestsAve", new Integer(jetty.getConnectionsRequestsAve()));
+                    renderRequest.setAttribute("connectionsRequestsMax", new Integer(jetty.getConnectionsRequestsMax()));
+                    renderRequest.setAttribute("errors", new Integer(jetty.getErrors()));
+                    renderRequest.setAttribute("requests", new Integer(jetty.getRequests()));
+                    renderRequest.setAttribute("requestsActive", new Integer(jetty.getRequestsActive()));
+                    renderRequest.setAttribute("requestsActiveMax", new Integer(jetty.getRequestsActiveMax()));
+                    renderRequest.setAttribute("requestsDurationAve", new Long(jetty.getRequestsDurationAve()));
+                    renderRequest.setAttribute("requestsDurationMax", new Long(jetty.getRequestsDurationMax()));
+                }
             }
         } catch (Exception e) {
             throw new PortletException(e);
@@ -124,13 +105,6 @@
 
     public void init(PortletConfig portletConfig) throws PortletException {
         super.init(portletConfig);
-        kernel = KernelRegistry.getSingleKernel();
-        try {
-            jettyObjectName = new ObjectName(
-                    ObjectNameConstants.WEBCONTAINER_OBJECT_NAME);
-        } catch (Exception e) {
-            throw new AssertionError();
-        }
 
         normalView = portletConfig.getPortletContext().getRequestDispatcher(
                 "/WEB-INF/view/webmanager/normal.jsp");
@@ -143,7 +117,6 @@
     public void destroy() {
         normalView = null;
         maximizedView = null;
-        kernel = null;
         super.destroy();
     }
 

Modified: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml (original)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml Sat Aug  6 15:10:37 2005
@@ -265,9 +265,9 @@
     </portlet>
 
     <portlet>
-        <description>Portlet for managing AJP13 connectors</description>
+        <description>Portlet for managing Network Listeners</description>
         <portlet-name>AJP13ConnectorManager</portlet-name>
-        <display-name>AJP13 Connector Mangement Portlet</display-name>
+        <display-name>Network Listener Portlet</display-name>
 
         <portlet-class>org.apache.geronimo.console.webmanager.AJP13ManagerPortlet</portlet-class>
 
@@ -282,9 +282,9 @@
         <supported-locale>en</supported-locale>
 
         <portlet-info>
-            <title>AJP13 Connectors</title>
-            <short-title>AJP13 Connectors</short-title>
-            <keywords>AJP13 Connectors</keywords>
+            <title>Network Listeners</title>
+            <short-title>Listeners</short-title>
+            <keywords>HTTP HTTPS AJP Network Listeners Connectors</keywords>
         </portlet-info>
     </portlet>
 

Modified: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/ajp13/normal.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/ajp13/normal.jsp?rev=230604&r1=230603&r2=230604&view=diff
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/ajp13/normal.jsp (original)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/ajp13/normal.jsp Sat Aug  6 15:10:37 2005
@@ -1,11 +1,50 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
 <portlet:defineObjects/>
-<c:if test="${empty(connectors)}">There are no AJP13 Connectors defined</c:if>
+
+<p>This portlet shows all available network listeners.  It obsoletes the separate HTTP, HTTPS, and AJP portlets.
+The two portlets above should be removed, though the HTTP portlet currently has a nicer appearance that should
+be migrated first.  Also the start/stop actions below need to be implemented.  Finally, the add/edit screen
+should have more fields as they become supported by the Jetty interface, and there should be a separate add/edit
+JSP with additional logic for HTTPS connectors.</p>
+<!-- Show existing connectors -->
+<c:if test="${empty(connectors)}">There are no Connectors defined</c:if>
 <c:if test="${!empty(connectors)}"><table>
-    <tr><th>Connector</th><th>State</th><th>Port</th></tr>
+    <tr><th>Protocol</th><th>Port</th><th>State</th><th>Actions</th><th>Type</th></tr>
 <c:forEach var="info" items="${connectors}">
-    <tr><td>${info.objectName}</td><td>${info.stateName}</td><td>${info.port}</td></tr>
+    <tr>
+      <td>${info.protocol}</td>
+      <td>${info.port}</td>
+      <td>${info.stateName}</td>
+      <td>
+       <c:choose>
+         <c:when test="${info.stateName eq 'running'}">
+           [stop]
+         </c:when>
+         <c:otherwise>
+           [start]
+         </c:otherwise>
+       </c:choose>
+         <a href="<portlet:actionURL portletMode="view">
+           <portlet:param name="mode" value="edit" />
+           <portlet:param name="name" value="${info.objectName}" />
+         </portlet:actionURL>">edit</a>
+         <a href="<portlet:actionURL portletMode="view">
+           <portlet:param name="mode" value="delete" />
+           <portlet:param name="name" value="${info.objectName}" />
+         </portlet:actionURL>">delete</a>
+       </td>
+      <td>${info.description}</td>
+    </tr>
 </c:forEach>
 </table>
 </c:if>
+
+<!-- Links to add new connectors -->
+<c:forEach var="protocol" items="${protocols}">
+<br />
+<a href="<portlet:actionURL portletMode="view">
+           <portlet:param name="mode" value="new" />
+           <portlet:param name="protocol" value="${protocol}" />
+         </portlet:actionURL>">Add new ${protocol} listener</a>
+</c:forEach>

Added: geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/editHTTP.jsp
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/editHTTP.jsp?rev=230604&view=auto
==============================================================================
--- geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/editHTTP.jsp (added)
+++ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/webmanager/editHTTP.jsp Sat Aug  6 15:10:37 2005
@@ -0,0 +1,76 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>
+<portlet:defineObjects/>
+
+<form name="<portlet:namespace/>" action="<portlet:actionURL/>">
+<input type="hidden" name="mode" value="${mode}">
+<input type="hidden" name="protocol" value="${protocol}">
+<table width="100%%"  border="0">
+
+<!-- Name Field -->
+<c:if test="${mode eq 'add'}">
+  <tr>
+    <td><div align="right">Unique Name: </div></td>
+    <td><input name="name" type="text" size="30"></td>
+  </tr>
+  <tr>
+    <td><div align="right"></div></td>
+    <td>A name that is different than the name for any other web connectors in the server</td>
+  </tr>
+</c:if>
+<!-- Host Field -->
+  <tr>
+    <td><div align="right">Host: </div></td>
+    <td>
+      <input name="host" type="text" size="30" value="${host}">
+    </td>
+  </tr>
+  <tr>
+    <td><div align="right"></div></td>
+    <td>The host name or IP to bind to.  The normal values are <tt>0.0.0.0</tt> (all interfaces) or <tt>localhost</tt> (local connections only)</td>
+  </tr>
+<!-- Port Field -->
+  <tr>
+    <td><div align="right">Port: </div></td>
+    <td>
+      <input name="port" type="text" size="5" value="${port}">
+	</td>
+  </tr>
+  <tr>
+    <td><div align="right"></div></td>
+    <td>The network port to bind to.</td>
+  </tr>
+<!-- Min Threads Field (Jetty only) -->
+<c:if test="${server eq 'jetty'}">
+  <tr>
+    <td><div align="right">Min Threads: </div></td>
+    <td>
+      <input name="minThreads" type="text" size="3" value="${minThreads}">
+	</td>
+  </tr>
+  <tr>
+    <td><div align="right"></div></td>
+    <td>The minimum number of threads this connector should use to handle incoming requests</td>
+  </tr>
+</c:if>
+<!-- Max Threads Field -->
+  <tr>
+    <td><div align="right">Max Threads: </div></td>
+    <td>
+      <input name="maxThreads" type="text" size="3" value="${maxThreads}">
+	</td>
+  </tr>
+  <tr>
+    <td><div align="right"></div></td>
+    <td>The maximum number of threads this connector should use to handle incoming requests</td>
+  </tr>
+<!-- Submit Button -->
+  <tr>
+    <td><div align="right"></div></td>
+    <td><input name="submit" type="submit" value="Save"></td>
+  </tr>
+</table>
+</form>
+<a href='<portlet:actionURL portletMode="view">
+           <portlet:param name="mode" value="list" />
+         </portlet:actionURL>'>List connectors</a>
\ No newline at end of file