geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pmcma...@apache.org
Subject svn commit: r561983 - in /geronimo/server/trunk: applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/ modu...
Date Wed, 01 Aug 2007 22:48:14 GMT
Author: pmcmahan
Date: Wed Aug  1 15:48:08 2007
New Revision: 561983

URL: http://svn.apache.org/viewvc?view=rev&rev=561983
Log:
GERONIMO-3350 final touches on administration for web connectors

Modified:
    geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java
    geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorPortlet.java
    geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/editConnector.jsp
    geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/normal.jsp
    geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java
    geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java

Modified: geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java (original)
+++ geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorInfo.java Wed Aug  1 15:48:08 2007
@@ -23,7 +23,7 @@
 
 public class ConnectorInfo implements Serializable {
     private String description;
-    private String displayName;
+    private String uniqueName;
     private String connectorURI;
     private String protocol;
     private int port;
@@ -49,16 +49,16 @@
         return connectorURI;
     }
 
-    public String getDisplayName() {
-        return displayName;
+    public String getUniqueName() {
+        return uniqueName;
     }
 
     public void setConnectorURI(String connectorURI) {
         this.connectorURI = connectorURI;
     }
 
-    public void setDisplayName(String displayName) {
-        this.displayName = displayName;
+    public void setUniqueName(String uniqueName) {
+        this.uniqueName = uniqueName;
     }
 
     public int getPort() {

Modified: geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorPortlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorPortlet.java?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorPortlet.java (original)
+++ geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/webmanager/ConnectorPortlet.java Wed Aug  1 15:48:08 2007
@@ -22,7 +22,6 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
@@ -67,7 +66,7 @@
     public static final String PARM_MODE = "mode";
     public static final String PARM_CONNECTOR_TYPE = "connectorType";
     public static final String PARM_CONNECTOR_ATTRIBUTES = "connectorAttributes";
-    public static final String PARM_DISPLAY_NAME = "displayName";
+    public static final String PARM_DISPLAY_NAME = "uniqueName";
     public static final String PARM_SERVER = "server";
 
     private PortletRequestDispatcher normalView;
@@ -75,37 +74,6 @@
     private PortletRequestDispatcher helpView;
     private PortletRequestDispatcher editConnectorView;
 
-    // TODO: move these attributes to the ConnectorAttribute for tomcat's WebManager
-//    private final static HashMap<String, Object> TOMCAT_DEFAULTS;
-//    static {
-//        TOMCAT_DEFAULTS = new HashMap<String, Object>();
-//        TOMCAT_DEFAULTS.put("allowTrace", Boolean.FALSE);
-//        TOMCAT_DEFAULTS.put("emptySessionPath", Boolean.FALSE);
-//        TOMCAT_DEFAULTS.put("enableLookups", Boolean.TRUE);
-//        TOMCAT_DEFAULTS.put("maxPostSize", 2097152);
-//        TOMCAT_DEFAULTS.put("maxSavePostSize", 4096);
-//        TOMCAT_DEFAULTS.put("useBodyEncodingForURI", Boolean.FALSE);
-//        TOMCAT_DEFAULTS.put("useIPVHosts", Boolean.FALSE);
-//        TOMCAT_DEFAULTS.put("xpoweredBy", Boolean.FALSE);
-//        TOMCAT_DEFAULTS.put("acceptCount", 10);
-//        TOMCAT_DEFAULTS.put("bufferSize", 2048);
-//        TOMCAT_DEFAULTS.put("compressableMimeType", "text/html,text/xml,text/plain");
-//        TOMCAT_DEFAULTS.put("compression", "off");
-//        TOMCAT_DEFAULTS.put("connectionLinger", -1);
-//        TOMCAT_DEFAULTS.put("connectionTimeout", 60000);
-//        TOMCAT_DEFAULTS.put("disableUploadTimeout", true);
-//        TOMCAT_DEFAULTS.put("maxHttpHeaderSize", 4096);
-//        TOMCAT_DEFAULTS.put("maxKeepAliveRequests", 100);
-//        TOMCAT_DEFAULTS.put("maxSpareThreads", 50);
-//        TOMCAT_DEFAULTS.put("minSpareThreads", 4);
-//        TOMCAT_DEFAULTS.put("noCompressionUserAgents", "");
-//        TOMCAT_DEFAULTS.put("restrictedUserAgents", "");
-//        TOMCAT_DEFAULTS.put("socketBuffer", 9000);
-//        TOMCAT_DEFAULTS.put("strategy", "lf");
-//        TOMCAT_DEFAULTS.put("tcpNoDelay", true);
-//        TOMCAT_DEFAULTS.put("threadPriority", Thread.NORM_PRIORITY);
-//    }
-
     public void processAction(ActionRequest actionRequest,
                               ActionResponse actionResponse) throws PortletException, IOException {
         String submit = actionRequest.getParameter("submit");
@@ -139,24 +107,35 @@
             WebManager manager = PortletManager.getWebManager(actionRequest, new AbstractName(URI.create(managerURI)));
             ConnectorType connectorType = new ConnectorType(actionRequest.getParameter(PARM_CONNECTOR_TYPE));
             
-            String displayName = actionRequest.getParameter(PARM_DISPLAY_NAME);
-            actionResponse.setRenderParameter(PARM_DISPLAY_NAME, displayName);
+            String uniqueName = actionRequest.getParameter(PARM_DISPLAY_NAME);
+            actionResponse.setRenderParameter(PARM_DISPLAY_NAME, uniqueName);
             // set the connector attributes from the form post
             List<ConnectorAttribute> connectorAttributes = manager.getConnectorAttributes(connectorType);
             for (ConnectorAttribute attribute : connectorAttributes) {
                 String name = attribute.getAttributeName();
                 String value = actionRequest.getParameter(name);
-                if (value != null && value.trim().length() > 0) {
-                    // browser sends value of checked checkbox as "on"
-                    if (attribute.getAttributeClass().equals(Boolean.class)) {
-                        if ("on".equals(value)) {
-                            value=Boolean.toString(true);
-                        }
+                
+                // handle booelan type special
+                if (attribute.getAttributeClass().equals(Boolean.class)) {
+                    // browser sends value of checked checkbox as "on" or "checked"
+                    if ("on".equalsIgnoreCase(value) || "checked".equalsIgnoreCase(value)) {
+                        value=Boolean.toString(true);
+                    } else {
+                        value=Boolean.toString(false);
+                    }
+                }
+                // set the string form of the attribute's value as submitted by the browser
+                if (value == null || value.trim().length()<1) {
+                    // special case for KeystoreManager gbean
+                    if ("trustStore".equals(attribute.getAttributeName())) {
+                        attribute.setValue(null);
                     }
+                } else {
                     attribute.setStringValue(value.trim());
                 }
             }
-            AbstractName newConnectorName = manager.getConnectorConfiguration( connectorType, connectorAttributes, webContainer, displayName);
+            // create the connector gbean based on the configuration data
+            AbstractName newConnectorName = manager.getConnectorConfiguration(connectorType, connectorAttributes, webContainer, uniqueName);
             
             // set the keystore properties if its a secure connector
             setKeystoreProperties(actionRequest, newConnectorName);
@@ -184,13 +163,23 @@
                 for (ConnectorAttribute attribute : manager.getConnectorAttributes(connectorType)) {
                     String name = attribute.getAttributeName();
                     String value = actionRequest.getParameter(name);
-                    if (value != null && value.trim().length() > 0) {
-                        // browser sends value of checked checkbox as "on"
-                        if (attribute.getAttributeClass().equals(Boolean.class)) {
-                            if ("on".equals(value)) {
-                                value=Boolean.toString(true);
-                            }
+                    
+                    // handle booelan type special
+                    if (attribute.getAttributeClass().equals(Boolean.class)) {
+                        // browser sends value of checked checkbox as "on" or "checked"
+                        if ("on".equalsIgnoreCase(value) || "checked".equalsIgnoreCase(value)) {
+                            value=Boolean.toString(true);
+                        } else {
+                            value=Boolean.toString(false);
                         }
+                    }
+                    // set the string form of the attribute's value as submitted by the browser
+                    if (value == null || value.trim().length()<1) {
+                        // special case for KeystoreManager gbean
+                        if ("trustStore".equals(attribute.getAttributeName())) {
+                            setProperty(connector,name,null);
+                        }
+                    } else {
                         // set the string value on the ConnectorAttribute so 
                         // it can handle type conversion via getValue()
                         try {
@@ -289,8 +278,8 @@
                     doList(renderRequest, renderResponse);
                 } else {
                     AbstractName connectorName = new AbstractName(URI.create(connectorURI));
-                    String displayName = connectorName.getName().get("name").toString();
-                    renderRequest.setAttribute(PARM_DISPLAY_NAME, displayName);
+                    String uniqueName = connectorName.getName().get("name").toString();
+                    renderRequest.setAttribute(PARM_DISPLAY_NAME, uniqueName);
                     WebManager webManager = PortletManager.getWebManager(renderRequest, new AbstractName(URI.create(managerURI)));
                     ConnectorType connectorType = webManager.getConnectorType(connectorName);
                     List<ConnectorAttribute> connectorAttributes = webManager.getConnectorAttributes(connectorType);
@@ -344,7 +333,7 @@
                     AbstractName connectorName = PortletManager.getNameFor(renderRequest, connector);
                     info.setConnectorURI(connectorName.toString());
                     info.setDescription(PortletManager.getGBeanDescription(renderRequest, connectorName));
-                    info.setDisplayName((String)connectorName.getName().get(NameFactory.J2EE_NAME));
+                    info.setUniqueName((String)connectorName.getName().get(NameFactory.J2EE_NAME));
                     info.setState(((GeronimoManagedBean)connector).getState());
                     info.setPort(connector.getPort());
                     try {
@@ -486,9 +475,12 @@
             return;
         }
         
-        SecureConnector secure = (SecureConnector) connector;
+        // right now only jetty supports the KeystoreManager
         if (server.equals(WEB_SERVER_JETTY)) {
             String keyStore = request.getParameter("keyStore");
+            
+            // get the unlocked keystore object from the keystore managaer
+            // gbean and set its keyalias directly on the connector 
             try {
                 KeystoreInstance[] keystores = PortletManager.getCurrentServer(request)
                         .getKeystoreManager().getKeystores();
@@ -501,7 +493,7 @@
                     }
                 }
                 if (keys != null && keys.length == 1) {
-                    setProperty(secure, "keyAlias", keys[0]);
+                    setProperty(connector, "keyAlias", keys[0]);
                 } else {
                     throw new PortletException("Cannot handle keystores with anything but 1 unlocked private key");
                 }
@@ -509,6 +501,5 @@
                 throw new PortletException(e);
             }
         }
-        // TODO: what about Tomcat?
     }
 }

Modified: geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/editConnector.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/editConnector.jsp?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/editConnector.jsp (original)
+++ geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/editConnector.jsp Wed Aug  1 15:48:08 2007
@@ -26,16 +26,16 @@
     var attributeName;
     var element;
 
-    element = document.forms['<portlet:namespace/>Form'].elements['displayName'];
+    element = document.forms['<portlet:namespace/>Form'].elements['uniqueName'];
     if(element.value.length < 1){
-        alert("displayName must not be empty.");
+        alert("uniqueName must not be empty.");
         return false;
     }
     
 <c:forEach var="connectorAttribute" items="${connectorAttributes}">
     attributeName = '${connectorAttribute.attributeName}';
     element = document.forms['<portlet:namespace/>Form'].elements[attributeName];
-    <c:if test="${connectorAttribute.required}">
+    <c:if test="${connectorAttribute.required && connectorAttribute.attributeClass.simpleName ne 'Boolean'}">
     //validate the required attribute has a value
     if(element.value.length < 1){
         alert(attributeName + " must not be empty.");
@@ -69,7 +69,7 @@
     Add a new ${connectorType}
   </c:when>
   <c:otherwise>
-    Edit connector ${displayName}
+    Edit connector ${uniqueName}
   </c:otherwise>
 </c:choose>
 <p>
@@ -82,18 +82,19 @@
   <th class="DarkBackground">Description</th>
 </tr>
 <tr>
-  <td class="LightBackground"><strong>*displayName</strong></td>
+  <td class="LightBackground"><strong>*uniqueName</strong></td>
   <td>String</td>
   <td><c:choose>
         <c:when test="${empty connectorURI}">
-            <input name="displayName" type="text" size="30">
+            <input name="uniqueName" type="text" size="30">
         </c:when>
         <c:otherwise>
-            <c:out escapeXml="true" value="${displayName}"/>
+            <input name="uniqueName" type="hidden" value='<c:out escapeXml="true" value="${uniqueName}"/>'>
+            <c:out escapeXml="true" value="${uniqueName}"/>
         </c:otherwise>
       </c:choose>
   </td>
-  <td>A unique name for this connector</td>
+  <td>A name that is different than the name for any other web connectors in the server (no spaces in the name please)</td>
 </tr>
 <c:forEach var="connectorAttribute" items="${connectorAttributes}" varStatus="status">
   <c:set var="style" value="${status.index % 2 == 0 ? 'MediumBackground' : 'LightBackground'}"/>
@@ -109,10 +110,17 @@
         <c:when test="${enumValues != null}">
     	    <td class="${style}">
     	    <select name="${connectorAttribute.attributeName}">
-                <c:forEach var="enumValue" items="${enumValues}">
-                    <option <c:if test="${connectorAttribute.value eq enumValue}"> selected</c:if>>
-                      <c:out escapeXml="true" value="${enumValue}"/>
+                <c:if test="${fn:length(connectorAttribute.value) > 0}">
+                    <option selected>
+                      <c:out escapeXml="true" value="${connectorAttribute.value}"/>
                     </option>
+                </c:if>
+                <c:forEach var="enumValue" items="${enumValues}">
+                    <c:if test="${connectorAttribute.value ne enumValue}">
+                        <option>
+                          <c:out escapeXml="true" value="${enumValue}"/>
+                        </option>
+                    </c:if>
                 </c:forEach>
     	    </select>
     	     </td>

Modified: geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/normal.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/normal.jsp?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/normal.jsp (original)
+++ geronimo/server/trunk/applications/console/geronimo-console-standard/src/main/webapp/WEB-INF/view/webmanager/connector/normal.jsp Wed Aug  1 15:48:08 2007
@@ -48,7 +48,7 @@
           </c:otherwise>
       </c:choose>
           <tr>
-            <td class="${backgroundClass}">${info.displayName}</td>
+            <td class="${backgroundClass}">${info.uniqueName}</td>
             <td class="${backgroundClass}">${info.protocol}</td>
             <td class="${backgroundClass}">${info.port}</td>
             <td class="${backgroundClass}">${info.stateName}</td>
@@ -61,7 +61,7 @@
                  <portlet:param name="managerURI" value="${container.managerURI}" />
                  <portlet:param name="containerURI" value="${container.containerURI}" />
                </portlet:actionURL>"
-                 <c:if test="${info.port eq serverPort}"> onClick="return confirm('Console application will not be available if ${info.displayName} is stopped.  Stop ${info.displayName}?');"</c:if>>
+                 <c:if test="${info.port eq serverPort}"> onClick="return confirm('Console application will not be available if ${info.uniqueName} is stopped.  Stop ${info.uniqueName}?');"</c:if>>
                  stop</a>
                </c:when>
                <c:otherwise>
@@ -84,7 +84,7 @@
                  <portlet:param name="connectorURI" value="${info.connectorURI}" />
                  <portlet:param name="managerURI" value="${container.managerURI}" />
                  <portlet:param name="containerURI" value="${container.containerURI}" />
-               </portlet:actionURL>" onClick="return confirm('Are you sure you want to delete ${info.displayName}?');">delete</a>
+               </portlet:actionURL>" onClick="return confirm('Are you sure you want to delete ${info.uniqueName}?');">delete</a>
             </td>
             <td class="${backgroundClass}">${info.description}</td>
           </tr>

Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java (original)
+++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java Wed Aug  1 15:48:08 2007
@@ -84,9 +84,9 @@
     //"host", "port", "minThreads", "maxThreads", "bufferSizeBytes", "acceptQueueSize", "lingerMillis", "protocol", "redirectPort", "connectUrl", "maxIdleTimeMs"
     static {
         List<ConnectorAttribute> connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "Maximum number of acceptors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSizeBytes", 8096, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("acceptQueueSize", 10, "acceptQueueSize", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("lingerMillis", 30000, "lingerMillis", Integer.class));
@@ -96,16 +96,16 @@
         CONNECTOR_ATTRIBUTES.put(HTTP_NIO, connectorAttributes);
 
         connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "Maximum number of acceptors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSizeBytes", 8096, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("acceptQueueSize", 10, "acceptQueueSize", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("lingerMillis", 30000, "lingerMillis", Integer.class));
         //connectorAttributes.add(new ConnectorAttribute<Boolean>("tcpNoDelay", false, "tcpNoDelay", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
         //connectorAttributes.add(new ConnectorAttribute<Integer>("maxIdleTimeMs", 30000, "maxIdleTimeMs", Integer.class));
-        connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuthRequested", false, "clientAuthRequested", Boolean.class));
+        //connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuthRequested", false, "clientAuthRequested", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuthRequired", false, "If set, then clients connecting through this connector must supply a valid client certificate.", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<String>("keyStore", "", "The keystore to use for accessing the server's private key", String.class, true));
         connectorAttributes.add(new ConnectorAttribute<String>("trustStore", "", "The keystore containing the trusted certificate entries, including Certification Authority (CA) certificates", String.class));
@@ -115,9 +115,9 @@
         CONNECTOR_ATTRIBUTES.put(HTTPS_NIO, connectorAttributes);
 
         connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "Maximum number of acceptors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSizeBytes", 8096, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("acceptQueueSize", 10, "acceptQueueSize", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("lingerMillis", 30000, "lingerMillis", Integer.class));
@@ -127,16 +127,16 @@
         CONNECTOR_ATTRIBUTES.put(HTTP_BIO, connectorAttributes);
 
         connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "Maximum number of acceptors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSizeBytes", 8096, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("acceptQueueSize", 10, "acceptQueueSize", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("lingerMillis", 30000, "lingerMillis", Integer.class));
         //connectorAttributes.add(new ConnectorAttribute<Boolean>("tcpNoDelay", false, "tcpNoDelay", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
         //connectorAttributes.add(new ConnectorAttribute<Integer>("maxIdleTimeMs", 30000, "maxIdleTimeMs", Integer.class));
-        connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuthRequested", false, "clientAuthRequested", Boolean.class));
+        //connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuthRequested", false, "clientAuthRequested", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuthRequired", false, "If set, then clients connecting through this connector must supply a valid client certificate.", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<String>("keyStore", "", "The keystore to use for accessing the server's private key", String.class, true));
         connectorAttributes.add(new ConnectorAttribute<String>("trustStore", "", "The keystore containing the trusted certificate entries, including Certification Authority (CA) certificates", String.class));
@@ -146,9 +146,9 @@
         CONNECTOR_ATTRIBUTES.put(HTTPS_BIO, connectorAttributes);
 
         connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "Maximum number of acceptors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSizeBytes", 8096, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("acceptQueueSize", 10, "acceptQueueSize", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("lingerMillis", 30000, "lingerMillis", Integer.class));
@@ -158,9 +158,9 @@
         CONNECTOR_ATTRIBUTES.put(HTTP_BLOCKING_NIO, connectorAttributes);
 
         connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8009, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "Maximum number of acceptors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8009, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 10, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSizeBytes", 8096, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("acceptQueueSize", 10, "acceptQueueSize", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("lingerMillis", 30000, "lingerMillis", Integer.class));
@@ -358,6 +358,13 @@
                 gbeanData.setAttribute(connectorAttribute.getAttributeName(), connectorAttribute.getValue());
             }
         }
+        
+        // provide a reference to KeystoreManager gbean for HTTPS connectors
+        if (connectorType.equals(HTTPS_NIO) || connectorType.equals(HTTPS_BIO)) {
+            AbstractNameQuery query = new AbstractNameQuery(KeystoreManager.class.getName());
+            gbeanData.setReferencePattern("KeystoreManager", query);
+        }
+        
         EditableConfigurationManager mgr = ConfigurationUtil.getEditableConfigurationManager(kernel);
         if (mgr != null) {
             try {

Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java (original)
+++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java Wed Aug  1 15:48:08 2007
@@ -30,7 +30,7 @@
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.system.threads.ThreadPool;
-import org.mortbay.jetty.bio.SocketConnector;
+import org.mortbay.jetty.nio.SelectChannelConnector;
 
 /**
  * Implementation of a HTTPS connector based on Jetty's SslConnector (which uses pure JSSE).
@@ -123,7 +123,7 @@
 
     //TODO does this make sense???
     public void setRedirectPort(int port) {
-        SocketConnector socketListener = (SocketConnector) listener;
+        SelectChannelConnector socketListener = (SelectChannelConnector) listener;
         socketListener.setConfidentialPort(port);
         socketListener.setIntegralPort(port);
         socketListener.setIntegralScheme("https");

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java?view=diff&rev=561983&r1=561982&r2=561983
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java Wed Aug  1 15:48:08 2007
@@ -91,9 +91,9 @@
         //******************* HTTP - BIO CONNECTOR
         List<ConnectorAttribute> connectorAttributes = new ArrayList<ConnectorAttribute>();
         //HTTP Attributes
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
@@ -132,22 +132,22 @@
         connectorAttributes = new ArrayList<ConnectorAttribute>();
         
         //HTTP Attributes
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "The network port to bind to.", Integer.class, true));
         //SSL
-        connectorAttributes.add(new ConnectorAttribute<String>("keystoreFile", "", "keystoreFile", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<String>("keystorePass", null, "keystorePass", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("keystoreType", "JKS", "keystoreType", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("algorithm", KeyManagerFactory.getDefaultAlgorithm(), "Algorithm", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("keystoreFile", "", "The file that holds the keystore (relative to the Geronimo install dir)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("keystorePass", null, "Set the password used to access the keystore file. This is also the password used to access the server private key within the keystore (so the two passwords must be set to be the same on the keystore).", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("keystoreType", "JKS", "Set the keystore type. There is normally no reason not to use the default (JKS).", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("algorithm", KeyManagerFactory.getDefaultAlgorithm(), "Set the HTTPS algorithm. This should normally be set to match the JVM vendor.", String.class));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuth", false, "clientAuth", Boolean.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "TLS", "sslProtocol", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "TLS", "Set the HTTPS protocol. This should normally be set to TLS, though some (IBM) JVMs don't work properly with popular browsers unless it is changed to SSL.", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("ciphers", "", "Ciphers", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("keyAlias", null, "keyAlias", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreFile", null, "truststoreFile", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("truststoreFile", null, "The file that holds the truststore (relative to the Geronimo install dir)", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("truststorePass", null, "truststorePass", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", null, "truststoreType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", null, "Set the truststore type. There is normally no reason not to use the default (JKS).", String.class));
         //HTTP
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
@@ -185,9 +185,9 @@
         //******************* HTTP - NIO CONNECTOR
         connectorAttributes = new ArrayList<ConnectorAttribute>();
         //HTTP Attributes
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "The network port to bind to.", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
@@ -259,22 +259,22 @@
         //******************* HTTPS - NIO CONNECTOR
         connectorAttributes = new ArrayList<ConnectorAttribute>();
         //HTTP Attributes
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "The network port to bind to.", Integer.class, true));
         //SSL
-        connectorAttributes.add(new ConnectorAttribute<String>("keystoreFile", "", "keystoreFile", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<String>("keystorePass", null, "keystorePass", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("keystoreType", "JKS", "keystoreType", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("algorithm", KeyManagerFactory.getDefaultAlgorithm(), "Algorithm", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("keystoreFile", "", "The file that holds the keystore (relative to the Geronimo install dir)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("keystorePass", null, "Set the password used to access the keystore file. This is also the password used to access the server private key within the keystore (so the two passwords must be set to be the same on the keystore).", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("keystoreType", "JKS", "Set the keystore type. There is normally no reason not to use the default (JKS).", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("algorithm", KeyManagerFactory.getDefaultAlgorithm(), "Set the HTTPS algorithm. This should normally be set to match the JVM vendor.", String.class));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuth", false, "clientAuth", Boolean.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "TLS", "sslProtocol", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "TLS", "Set the HTTPS protocol. This should normally be set to TLS, though some (IBM) JVMs don't work properly with popular browsers unless it is changed to SSL.", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("ciphers", "", "Ciphers", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("keyAlias", null, "keyAlias", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreFile", null, "truststoreFile", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("truststoreFile", null, "The file that holds the truststore (relative to the Geronimo install dir)", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("truststorePass", null, "truststorePass", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", null, "truststoreType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", null, "Set the truststore type. There is normally no reason not to use the default (JKS).", String.class));
 
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
@@ -345,15 +345,15 @@
         
         //******************* HTTP - APR CONNECTOR
         connectorAttributes = new ArrayList<ConnectorAttribute>();        
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "Port", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8080, "The network port to bind to.", Integer.class, true));
         //APR Attributes
         connectorAttributes.add(new ConnectorAttribute<Integer>("pollTime", 2000, "Duration of a poll call. Lowering this value will slightly decrease latency of connections being kept alive in some cases, but will use more CPU as more poll calls are being made.", Integer.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("pollerSize", 8192, "Amount of sockets that the poller responsible for polling kept alive connections can hold at a given time.", Integer.class, true));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("useSendfile", true, "Use kernel level sendfile for certain static files.", Boolean.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("sendfileSize", 1024, "Amount of sockets that the poller responsible for sending static files asynchronously can hold at a given time.", Integer.class, true));
         //HTTP
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
@@ -390,15 +390,15 @@
         
         //******************* HTTPS - APR CONNECTOR
         connectorAttributes = new ArrayList<ConnectorAttribute>();
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "The network port to bind to.", Integer.class, true));
         //APR Attributes
         connectorAttributes.add(new ConnectorAttribute<Integer>("pollTime", 2000, "Duration of a poll call. Lowering this value will slightly decrease latency of connections being kept alive in some cases, but will use more CPU as more poll calls are being made.", Integer.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("pollerSize", 8192, "Amount of sockets that the poller responsible for polling kept alive connections can hold at a given time.", Integer.class, true));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("useSendfile", true, "Use kernel level sendfile for certain static files.", Boolean.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("sendfileSize", 1024, "Amount of sockets that the poller responsible for sending static files asynchronously can hold at a given time.", Integer.class, true));
         //HTTP
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
@@ -449,13 +449,13 @@
         //******************* AJP CONNECTOR
         connectorAttributes = new ArrayList<ConnectorAttribute>();
         //APR Attributes
-        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "Host", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8009, "Port", Integer.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("host", "0.0.0.0", "The host name or IP to bind to. The normal values are 0.0.0.0 (all interfaces) or localhost (local connections only)", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8009, "The network port to bind to.", Integer.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("backlog", 10, "The maximum queue length for incoming connection requests when all possible request processing threads are in use.", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("bufferSize", 2048, "Buffer size", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", org.apache.coyote.ajp.Constants.DEFAULT_CONNECTION_TIMEOUT, "Connection timeout in milliseconds", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", org.apache.coyote.ajp.Constants.DEFAULT_CONNECTION_TIMEOUT, "Keep alive timeout in milliseconds", Integer.class));
-        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "The maximum number of threads this connector should use to handle incoming requests", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxSpareThreads", 100, "Maximum spare threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Boolean>("tcpNoDelay", true, "If set to true, the TCP_NO_DELAY option will be set on the server socket, which improves performance under most circumstances.", Boolean.class));



Mime
View raw message