geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pmcma...@apache.org
Subject svn commit: r562021 [3/4] - in /geronimo/server/branches/2.0: applications/console/geronimo-console-framework/src/main/webapp/js/ applications/console/geronimo-console-standard/src/main/java/org/apache/geronimo/console/ applications/console/geronimo-co...
Date Thu, 02 Aug 2007 05:51:21 GMT
Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java?view=diff&rev=562021&r1=562020&r2=562021
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java Wed Aug  1 22:51:18 2007
@@ -17,9 +17,16 @@
 package org.apache.geronimo.tomcat;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.net.ssl.KeyManagerFactory;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.gbean.AbstractName;
@@ -41,6 +48,15 @@
 import org.apache.geronimo.management.geronimo.WebContainer;
 import org.apache.geronimo.management.geronimo.WebManager;
 import org.apache.geronimo.system.serverinfo.ServerInfo;
+import org.apache.geronimo.tomcat.connector.AJP13ConnectorGBean;
+import org.apache.geronimo.tomcat.connector.ConnectorGBean;
+import org.apache.geronimo.tomcat.connector.Http11APRConnectorGBean;
+import org.apache.geronimo.tomcat.connector.Http11ConnectorGBean;
+import org.apache.geronimo.tomcat.connector.Http11NIOConnectorGBean;
+import org.apache.geronimo.tomcat.connector.Https11APRConnectorGBean;
+import org.apache.geronimo.tomcat.connector.Https11ConnectorGBean;
+import org.apache.geronimo.tomcat.connector.Https11NIOConnectorGBean;
+import org.apache.geronimo.tomcat.connector.TomcatWebConnector;
 
 /**
  * Tomcat implementation of the WebManager management API.  Knows how to
@@ -51,7 +67,428 @@
 public class TomcatManagerImpl implements WebManager {
     private final static Log log = LogFactory.getLog(TomcatManagerImpl.class);
     private final Kernel kernel;
+    
+    private static final ConnectorType HTTP_BIO = new ConnectorType("Tomcat BIO HTTP Connector");
+    private static final ConnectorType HTTPS_BIO = new ConnectorType("Tomcat BIO HTTPS Connector");
+    private static final ConnectorType HTTP_NIO = new ConnectorType("Tomcat NIO HTTP Connector");
+    private static final ConnectorType HTTPS_NIO = new ConnectorType("Tomcat NIO HTTPS Connector");
+    private static final ConnectorType HTTP_APR = new ConnectorType("Tomcat APR HTTP Connector");
+    private static final ConnectorType HTTPS_APR = new ConnectorType("Tomcat APR HTTPS Connector");
+    private static final ConnectorType AJP = new ConnectorType("Tomcat AJP Connector");
+    private static List<ConnectorType> CONNECTOR_TYPES = Arrays.asList(
+            HTTP_BIO,
+            HTTPS_BIO,
+            HTTP_NIO,
+            HTTPS_NIO,
+            HTTP_APR,
+            HTTPS_APR,
+            AJP
+    );
+    
+    private static Map<ConnectorType, List<ConnectorAttribute>> CONNECTOR_ATTRIBUTES = new HashMap<ConnectorType, List<ConnectorAttribute>>();
+
+    static {
+        //******************* HTTP - BIO CONNECTOR
+        List<ConnectorAttribute> connectorAttributes = new ArrayList<ConnectorAttribute>();
+        //HTTP Attributes
+        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));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptCount", 10, "acceptCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionLinger", -1, "connectionLinger", 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));
+        connectorAttributes.add(new ConnectorAttribute<String>("compressableMimeType", "text/html,text/xml,text/plain", "compressableMimeType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("compression", "off", "compression", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", 60000, "Connection timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", 60000, "Keep alive timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("disableUploadTimeout", true, "disableUploadTimeout", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxHttpHeaderSize", 4096, "Maximum HTTP header size in bytes", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxKeepAliveRequests", 100, "Maximum keep alive requests", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("noCompressionUserAgents", "", "Comma separated list of regular expressions matching user-agents for which compression should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("server", "", "The Server header for the http response.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socketBuffer", 9000, "The size (in bytes) of the buffer to be provided for socket output buffering", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("threadPriority", Thread.NORM_PRIORITY, "The priority of the request processing threads within the JVM", Integer.class));
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+
+        CONNECTOR_ATTRIBUTES.put(HTTP_BIO, connectorAttributes);
+        
+        //******************* HTTPS - BIO CONNECTOR
+        connectorAttributes = new ArrayList<ConnectorAttribute>();
+        
+        //HTTP Attributes
+        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", "", "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", "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, "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, "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, "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));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptCount", 10, "acceptCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionLinger", -1, "connectionLinger", 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));
+        connectorAttributes.add(new ConnectorAttribute<String>("compressableMimeType", "text/html,text/xml,text/plain", "compressableMimeType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("compression", "off", "compression", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", 60000, "Connection timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", 60000, "Keep alive timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("disableUploadTimeout", true, "disableUploadTimeout", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxHttpHeaderSize", 4096, "Maximum HTTP header size in bytes", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxKeepAliveRequests", 100, "Maximum keep alive requests", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("noCompressionUserAgents", "", "Comma separated list of regular expressions matching user-agents for which compression should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("server", null, "The Server header for the http response.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socketBuffer", 9000, "The size (in bytes) of the buffer to be provided for socket output buffering", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("threadPriority", Thread.NORM_PRIORITY, "The priority of the request processing threads within the JVM", Integer.class));
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+        CONNECTOR_ATTRIBUTES.put(HTTPS_BIO, connectorAttributes);
+        
+        //******************* HTTP - NIO CONNECTOR
+        connectorAttributes = new ArrayList<ConnectorAttribute>();
+        //HTTP Attributes
+        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));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptCount", 10, "acceptCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionLinger", -1, "connectionLinger", 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));
+        connectorAttributes.add(new ConnectorAttribute<String>("compressableMimeType", "text/html,text/xml,text/plain", "compressableMimeType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("compression", "off", "compression", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", 60000, "Connection timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", 60000, "Keep alive timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("disableUploadTimeout", true, "disableUploadTimeout", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxHttpHeaderSize", 4096, "Maximum HTTP header size in bytes", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxKeepAliveRequests", 100, "Maximum keep alive requests", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("noCompressionUserAgents", "", "Comma separated list of regular expressions matching user-agents for which compression should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("server", null, "The Server header for the http response.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socketBuffer", 9000, "The size (in bytes) of the buffer to be provided for socket output buffering", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("threadPriority", Thread.NORM_PRIORITY, "The priority of the request processing threads within the JVM", Integer.class));
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+        //NIO Attributes        
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useSendfile", true, "useSendfile", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useExecutor", true, "useExecutor", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptorThreadCount", 1, "acceptorThreadCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("pollerThreadCount", 1, "pollerThreadCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("pollerThreadPriority", Thread.NORM_PRIORITY, "pollerThreadPriority", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptorThreadPriority", Thread.NORM_PRIORITY, "acceptorThreadPriority", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("selectorTimeout", 1000, "selectorTimeout", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useComet", true, "useComet", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("processCache", 200, "processCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_directBuffer", false, "socket_directBuffer", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_rxBufSize", 25188, "socket_rxBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_txBufSize", 43800, "socket_txBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_appReadBufSize", 8192, "socket_appReadBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_appWriteBufSize", 8192, "socket_appWriteBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_processorCache", 500, "socket_processorCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_bufferPoolSize", 104857600, "socket_bufferPoolSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_keyCache", 500, "socket_keyCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_eventCache", 500, "socket_eventCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_tcpNoDelay", false, "socket_tcpNoDelay", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_soKeepAlive", false, "socket_soKeepAlive", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_ooBInline", true, "socket_ooBInline", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_soReuseAddress", false, "socket_soReuseAddress", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_soLingerOn", true, "socket_soLingerOn", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_soLingerTime", 25, "socket_soLingerTime", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_soTimeout", 5000, "socket_soTimeout", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_soTrafficClass", (0x04 | 0x08 | 0x010), "socket_soTrafficClass", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_performanceConnectionTime", 1, "socket_performanceConnectionTime", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_performanceLatency", 0, "socket_performanceLatency", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_performanceBandwidth", 1, "socket_performanceBandwidth", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("selectorPool_maxSelectors", 200, "selectorPool_maxSelectors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("selectorPool_maxSpareSelectors", -1, "selectorPool_maxSpareSelectors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("command_line_options", true, "command_line_options", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("oomParachute", 1048576, "oomParachute", Integer.class));
+        CONNECTOR_ATTRIBUTES.put(HTTP_NIO, connectorAttributes);
+        
+        //******************* HTTPS - NIO CONNECTOR
+        connectorAttributes = new ArrayList<ConnectorAttribute>();
+        //HTTP Attributes
+        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", "", "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", "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, "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, "Set the truststore type. There is normally no reason not to use the default (JKS).", String.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));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptCount", 10, "acceptCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionLinger", -1, "connectionLinger", 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));
+        connectorAttributes.add(new ConnectorAttribute<String>("compressableMimeType", "text/html,text/xml,text/plain", "compressableMimeType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("compression", "off", "compression", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", 60000, "Connection timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", 60000, "Keep alive timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("disableUploadTimeout", true, "disableUploadTimeout", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxHttpHeaderSize", 4096, "Maximum HTTP header size in bytes", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxKeepAliveRequests", 100, "Maximum keep alive requests", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("noCompressionUserAgents", "", "Comma separated list of regular expressions matching user-agents for which compression should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("server", null, "The Server header for the http response.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socketBuffer", 9000, "The size (in bytes) of the buffer to be provided for socket output buffering", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("threadPriority", Thread.NORM_PRIORITY, "The priority of the request processing threads within the JVM", Integer.class));
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+        //NIO Attributes        
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useSendfile", true, "useSendfile", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useExecutor", true, "useExecutor", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptorThreadCount", 1, "acceptorThreadCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("pollerThreadCount", 1, "pollerThreadCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("pollerThreadPriority", Thread.NORM_PRIORITY, "pollerThreadPriority", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptorThreadPriority", Thread.NORM_PRIORITY, "acceptorThreadPriority", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("selectorTimeout", 1000, "selectorTimeout", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useComet", true, "useComet", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("processCache", 200, "processCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_directBuffer", false, "socket_directBuffer", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_rxBufSize", 25188, "socket_rxBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_txBufSize", 43800, "socket_txBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_appReadBufSize", 8192, "socket_appReadBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_appWriteBufSize", 8192, "socket_appWriteBufSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_processorCache", 500, "socket_processorCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_bufferPoolSize", 104857600, "socket_bufferPoolSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_keyCache", 500, "socket_keyCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_eventCache", 500, "socket_eventCache", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_tcpNoDelay", false, "socket_tcpNoDelay", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_soKeepAlive", false, "socket_soKeepAlive", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_ooBInline", true, "socket_ooBInline", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_soReuseAddress", false, "socket_soReuseAddress", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("socket_soLingerOn", true, "socket_soLingerOn", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_soLingerTime", 25, "socket_soLingerTime", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_soTimeout", 5000, "socket_soTimeout", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_soTrafficClass", (0x04 | 0x08 | 0x010), "socket_soTrafficClass", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_performanceConnectionTime", 1, "socket_performanceConnectionTime", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_performanceLatency", 0, "socket_performanceLatency", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socket_performanceBandwidth", 1, "socket_performanceBandwidth", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("selectorPool_maxSelectors", 200, "selectorPool_maxSelectors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("selectorPool_maxSpareSelectors", -1, "selectorPool_maxSpareSelectors", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("command_line_options", true, "command_line_options", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("oomParachute", 1048576, "oomParachute", Integer.class));
+        CONNECTOR_ATTRIBUTES.put(HTTPS_NIO, connectorAttributes);
+        
+        //******************* HTTP - APR CONNECTOR
+        connectorAttributes = new ArrayList<ConnectorAttribute>();        
+        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, "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));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptCount", 10, "acceptCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionLinger", -1, "connectionLinger", 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));
+        connectorAttributes.add(new ConnectorAttribute<String>("compressableMimeType", "text/html,text/xml,text/plain", "compressableMimeType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("compression", "off", "compression", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", 60000, "Connection timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", 60000, "Keep alive timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("disableUploadTimeout", true, "disableUploadTimeout", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxHttpHeaderSize", 4096, "Maximum HTTP header size in bytes", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxKeepAliveRequests", 100, "Maximum keep alive requests", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("noCompressionUserAgents", "", "Comma separated list of regular expressions matching user-agents for which compression should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("server", null, "The Server header for the http response.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socketBuffer", 9000, "The size (in bytes) of the buffer to be provided for socket output buffering", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("threadPriority", Thread.NORM_PRIORITY, "The priority of the request processing threads within the JVM", Integer.class));
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+        CONNECTOR_ATTRIBUTES.put(HTTP_APR, connectorAttributes);
+        
+        //******************* HTTPS - APR CONNECTOR
+        connectorAttributes = new ArrayList<ConnectorAttribute>();
+        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, "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));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("acceptCount", 10, "acceptCount", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionLinger", -1, "connectionLinger", 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));
+        connectorAttributes.add(new ConnectorAttribute<String>("compressableMimeType", "text/html,text/xml,text/plain", "compressableMimeType", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("compression", "off", "compression", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("connectionTimeout", 60000, "Connection timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("keepAliveTimeout", 60000, "Keep alive timeout in milliseconds", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("disableUploadTimeout", true, "disableUploadTimeout", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxHttpHeaderSize", 4096, "Maximum HTTP header size in bytes", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxKeepAliveRequests", 100, "Maximum keep alive requests", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("noCompressionUserAgents", "", "Comma separated list of regular expressions matching user-agents for which compression should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("restrictedUserAgents", "", "Comma separated list of regular expressions matching user-agents for which which HTTP/1.1 or HTTP/1.0 keep alive should not be used", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("server", null, "The Server header for the http response.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("socketBuffer", 9000, "The size (in bytes) of the buffer to be provided for socket output buffering", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("threadPriority", Thread.NORM_PRIORITY, "The priority of the request processing threads within the JVM", Integer.class));
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+        //APR SSL specific values
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCertificateFile", "", "Name of the file that contains the server certificate. The format is PEM-encoded.", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslPassword", null, "Pass phrase for the encrypted private key.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "all", "Protocol which may be used for communicating with clients.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCipherSuite", "ALL", "Ciphers which may be used for communicating with clients.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCertificateKeyFile", null, "Name of the file that contains the server private key.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslVerifyClient", "none", "Ask client for certificate.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("sslVerifyDepth", 10, "Maximum verification depth for client certificates.", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCACertificateFile", null, "File of concatenated PEM-encoded CA Certificates for Client Auth.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCACertificatePath", null, "Directory of PEM-encoded CA Certificates for Client Auth.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCertificateChainFile", null, "File of PEM-encoded Server CA Certificates.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCARevocationFile", null, "File of concatenated PEM-encoded CA CRLs for Client Auth.", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("sslCARevocationPath", null, "Directory of PEM-encoded CA CRLs for Client Auth.", String.class));
+        CONNECTOR_ATTRIBUTES.put(HTTPS_APR, connectorAttributes);
+        
+        //******************* AJP CONNECTOR
+        connectorAttributes = new ArrayList<ConnectorAttribute>();
+        //APR Attributes
+        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, "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));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("tomcatAuthentication", true, "If set to true, the authetication will be done in Geronimo. Otherwise, the authenticated principal will be propagated from the native webaserver and used for authorization in Geronimo.", Boolean.class));
+        
+        //Common attributes
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("allowTrace", false, "Used to enable or disable the TRACE HTTP method.", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("emptySessionPath", false, "emptySessionPath", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("enableLookups", true, "enableLookups", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxPostSize", 2097152, "maxPostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("maxSavePostSize", 4096, "maxSavePostSize", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("proxyName", null, "proxyName", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("proxyPort", 0, "proxyPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("redirectPort", 8443, "redirectPort", Integer.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("uriEncoding", "ISO-8859-1", "uriEncoding", String.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useBodyEncodingForURI", false, "useBodyEncodingForURI", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("useIPVHosts", false, "useIPVHosts", Boolean.class));
+        connectorAttributes.add(new ConnectorAttribute<Boolean>("xpoweredBy", false, "xpoweredBy", Boolean.class));
+        CONNECTOR_ATTRIBUTES.put(AJP, connectorAttributes);
+    }
+    
+    private static Map<ConnectorType, GBeanInfo> CONNECTOR_GBEAN_INFOS = new HashMap<ConnectorType, GBeanInfo>();
 
+    static {
+        CONNECTOR_GBEAN_INFOS.put(HTTP_BIO, Http11ConnectorGBean.GBEAN_INFO);
+        CONNECTOR_GBEAN_INFOS.put(HTTPS_BIO, Https11ConnectorGBean.GBEAN_INFO);
+        CONNECTOR_GBEAN_INFOS.put(HTTP_NIO, Http11NIOConnectorGBean.GBEAN_INFO);
+        CONNECTOR_GBEAN_INFOS.put(HTTPS_NIO, Https11NIOConnectorGBean.GBEAN_INFO);
+        CONNECTOR_GBEAN_INFOS.put(HTTP_APR, Http11APRConnectorGBean.GBEAN_INFO);
+        CONNECTOR_GBEAN_INFOS.put(HTTPS_APR, Https11APRConnectorGBean.GBEAN_INFO);
+        CONNECTOR_GBEAN_INFOS.put(AJP, AJP13ConnectorGBean.GBEAN_INFO);
+    }
+    
     public TomcatManagerImpl(Kernel kernel) {
         this.kernel = kernel;
     }
@@ -75,25 +512,29 @@
     public WebConnector addConnector(WebContainer container, String uniqueName, String protocol, String host, int port) {
         AbstractName containerName = kernel.getAbstractNameFor(container);
         AbstractName name = kernel.getNaming().createSiblingName(containerName, uniqueName, NameFactory.GERONIMO_SERVICE);
+        //Get the server info
+        AbstractNameQuery query = new AbstractNameQuery(ServerInfo.class.getName());
+        Set set = kernel.listGBeans(query);
+        AbstractName serverInfo = (AbstractName)set.iterator().next();
         GBeanData connector;
         if(protocol.equals(PROTOCOL_HTTP)) {
-            connector = new GBeanData(name, ConnectorGBean.GBEAN_INFO);
+            connector = new GBeanData(name, Http11ConnectorGBean.GBEAN_INFO);
+            connector.setReferencePattern("ServerInfo", serverInfo);
         } else if(protocol.equals(PROTOCOL_HTTPS)) {
-            connector = new GBeanData(name, HttpsConnectorGBean.GBEAN_INFO);
-            AbstractNameQuery query = new AbstractNameQuery(ServerInfo.class.getName());
-            Set set = kernel.listGBeans(query);
-            connector.setReferencePattern("ServerInfo", (AbstractName)set.iterator().next());
+            connector = new GBeanData(name, Https11ConnectorGBean.GBEAN_INFO);
+            connector.setReferencePattern("ServerInfo", serverInfo);
             //todo: default HTTPS settings
         } else if(protocol.equals(PROTOCOL_AJP)) {
-            connector = new GBeanData(name, ConnectorGBean.GBEAN_INFO);
+            connector = new GBeanData(name, AJP13ConnectorGBean.GBEAN_INFO);
+            connector.setReferencePattern("ServerInfo", serverInfo);
         } else {
             throw new IllegalArgumentException("Invalid protocol '"+protocol+"'");
         }
-        connector.setAttribute("protocol", protocol);
+//        connector.setAttribute("protocol", protocol);
         connector.setAttribute("host", host);
         connector.setAttribute("port", new Integer(port));
         connector.setAttribute("maxThreads", new Integer(50));
-        connector.setAttribute("acceptQueueSize", new Integer(100));
+        connector.setAttribute("acceptCount", new Integer(100));
         connector.setReferencePattern(ConnectorGBean.CONNECTOR_CONTAINER_REFERENCE, containerName);
         connector.setAttribute("name", uniqueName);
         EditableConfigurationManager mgr = ConfigurationUtil.getEditableConfigurationManager(kernel);
@@ -211,6 +652,46 @@
         return (WebAccessLog) kernel.getProxyManager().createProxy((AbstractName)names.iterator().next(), TomcatLogManager.class.getClassLoader());
     }
 
+    public List<ConnectorType> getConnectorTypes() {
+        return CONNECTOR_TYPES;
+    }
+
+    public List<ConnectorAttribute> getConnectorAttributes(ConnectorType connectorType) {
+        return ConnectorAttribute.copy(CONNECTOR_ATTRIBUTES.get(connectorType));
+    }
+
+    public AbstractName getConnectorConfiguration(ConnectorType connectorType, List<ConnectorAttribute> connectorAttributes, WebContainer container, String uniqueName) {
+        GBeanInfo gbeanInfo = CONNECTOR_GBEAN_INFOS.get(connectorType);
+        AbstractName containerName = kernel.getAbstractNameFor(container);
+        AbstractName name = kernel.getNaming().createSiblingName(containerName, uniqueName, NameFactory.GERONIMO_SERVICE);
+        GBeanData gbeanData = new GBeanData(name, gbeanInfo);
+        gbeanData.setAttribute("name", uniqueName);
+        gbeanData.setReferencePattern(ConnectorGBean.CONNECTOR_CONTAINER_REFERENCE, containerName);
+        for (ConnectorAttribute connectorAttribute : connectorAttributes) {
+            gbeanData.setAttribute(connectorAttribute.getAttributeName(), connectorAttribute.getValue());
+        }
+        AbstractNameQuery query = new AbstractNameQuery(ServerInfo.class.getName());
+        Set set = kernel.listGBeans(query);
+        AbstractName serverInfo = (AbstractName)set.iterator().next();
+        gbeanData.setReferencePattern("ServerInfo", serverInfo);
+
+        EditableConfigurationManager mgr = ConfigurationUtil.getEditableConfigurationManager(kernel);
+        if (mgr != null) {
+            try {
+                mgr.addGBeanToConfiguration(containerName.getArtifact(), gbeanData, false);
+            } catch (InvalidConfigException e) {
+                log.error("Unable to add GBean", e);
+                return null;
+            } finally {
+                ConfigurationUtil.releaseConfigurationManager(kernel, mgr);
+            }
+        } else {
+            log.warn("The ConfigurationManager in the kernel does not allow editing");
+            return null;
+        }
+        return name;
+    }
+
     /**
      * Gets the ObjectNames of any existing connectors associated with this network technology.
      */
@@ -300,5 +781,36 @@
 
     public static GBeanInfo getGBeanInfo() {
         return GBEAN_INFO;
+    }
+
+    public ConnectorType getConnectorType(AbstractName connectorName) {
+        ConnectorType connectorType = null; 
+        try {
+            GBeanInfo info = kernel.getGBeanInfo(connectorName);
+            boolean found = false;
+            Set intfs = info.getInterfaces();
+            for (Iterator it = intfs.iterator(); it.hasNext() && !found;) {
+                String intf = (String) it.next();
+                if (intf.equals(TomcatWebConnector.class.getName())) {
+                    found = true;
+                }
+            }
+            if (!found) {
+                throw new GBeanNotFoundException(connectorName);
+            }
+            String searchingFor = info.getName();
+            for (Entry<ConnectorType, GBeanInfo> entry : CONNECTOR_GBEAN_INFOS.entrySet() ) {
+                String candidate = entry.getValue().getName();
+                if (candidate.equals(searchingFor)) {
+                    return entry.getKey();
+                }
+            }
+        } catch (GBeanNotFoundException e) {
+            log.warn("No such GBean '" + connectorName + "'");
+        } catch (Exception e) {
+            log.error(e);
+        }
+            
+        return connectorType;
     }
 }

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java?view=diff&rev=562021&r1=562020&r2=562021
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java Wed Aug  1 22:51:18 2007
@@ -65,6 +65,7 @@
 import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
 import org.apache.geronimo.security.jacc.RunAsSource;
 import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
+import org.apache.geronimo.tomcat.connector.TomcatWebConnector;
 import org.apache.geronimo.tomcat.stats.ModuleStats;
 import org.apache.geronimo.tomcat.util.SecurityHolder;
 import org.apache.geronimo.transaction.GeronimoUserTransaction;
@@ -387,30 +388,6 @@
 
     public void setContext(Context context) {
         this.context = context;
-    }
-
-    public URL getURLFor() {
-        WebConnector[] connectors = (WebConnector[]) container.getConnectors();
-        Map map = new HashMap();
-        for (int i = 0; i < connectors.length; i++) {
-            WebConnector connector = connectors[i];
-            map.put(connector.getProtocol(), connector.getConnectUrl());
-        }
-        String urlPrefix;
-        if((urlPrefix = (String) map.get("HTTP")) == null) {
-            if((urlPrefix = (String) map.get("HTTPS")) == null) {
-                urlPrefix = (String) map.get("AJP");
-            }
-        }
-        if(urlPrefix == null) {
-            return null;
-        }
-        try {
-            return new URL(urlPrefix + getContextPath());
-        } catch (MalformedURLException e) {
-            log.error("Bad URL to connect to web app", e);
-            return null;
-        }
     }
 
     public String getContextPath() {

Copied: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java (from r559530, geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java?view=diff&rev=562021&p1=geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java&r1=559530&p2=geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java&r2=562021
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java Wed Aug  1 22:51:18 2007
@@ -19,20 +19,35 @@
 package org.apache.geronimo.tomcat.connector;
 
 import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.util.Map;
+
+import javax.management.j2ee.statistics.Stats;
 
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.management.StatisticsProvider;
+import org.apache.geronimo.management.geronimo.WebManager;
 import org.apache.geronimo.system.serverinfo.ServerInfo;
 import org.apache.geronimo.tomcat.TomcatContainer;
+import org.apache.geronimo.tomcat.stats.ConnectorStats;
+
+public class AJP13ConnectorGBean extends ConnectorGBean implements Ajp13Protocol, StatisticsProvider {
+    
+    // JSR77 stats
+    private ConnectorStats connStatsProvider = new ConnectorStats();
 
-public class AJP13ConnectorGBean extends ConnectorGBean implements Ajp13Protocol{
+    private boolean reset = true;
 
-    public AJP13ConnectorGBean(String name, String address, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception {
-        super(name, "AJP/1.3", container, serverInfo);
+    protected String connectHost;
+    
+    public AJP13ConnectorGBean(String name, Map initParams, String host, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception {
+        super(name, initParams, "AJP/1.3", container, serverInfo);
         
         // Default the host to listen on all address is one was not specified
-        if (address == null) {
-            address = "0.0.0.0";
+        if (host == null) {
+            host = "0.0.0.0";
         }
 
         // Must have a port
@@ -40,11 +55,50 @@
             throw new IllegalArgumentException("Must declare a port.");
         }
 
-        connector.setAttribute("address", address);
-        connector.setAttribute("port", port);
+        connector.setAttribute("host", host);
+        connector.setPort(port);
 
     }
-
+    
+    public String getGeronimoProtocol(){
+        return WebManager.PROTOCOL_AJP;
+    }
+    
+    public String getConnectUrl() {
+        if(connectHost == null) {
+            String host = getAddress();
+            if(host == null || host.equals("0.0.0.0") || host.equals("0:0:0:0:0:0:0:1")) {
+                InetAddress address = null;
+                try {
+                    address = InetAddress.getLocalHost();
+                } catch (UnknownHostException e) {
+                    host = "unknown-host";
+                }
+                if(address != null) {
+                    host = address.getCanonicalHostName();
+                    if(host == null || host.equals("")) {
+                        host = address.getHostAddress();
+                    }
+                }
+            }
+            // this host address could be in IPv6 format, 
+            // which means we need to wrap it in brackets
+            if (host.indexOf(":") >= 0) {
+                host = "[" + host + "]"; 
+            }
+            connectHost = host;
+        }
+        return getScheme().toLowerCase()+"://"+connectHost+(getPort() == getDefaultPort() ? "" : ":"+getPort());
+    }
+    
+    public int getDefaultPort() {
+        return -1; 
+    }  
+    
+    public InetSocketAddress getListenAddress() {
+        return new InetSocketAddress(getHost(), getPort());
+    }
+    
     public String getAddress() {
         Object value = connector.getAttribute("address");
         if (value == null) {
@@ -55,8 +109,8 @@
             return value.toString();
     } 
 
-    public int getBackLog() {
-        Object value = connector.getAttribute("backLog");
+    public int getBacklog() {
+        Object value = connector.getAttribute("backlog");
         return value == null ? 10 : Integer.parseInt(value.toString());
     }
 
@@ -73,6 +127,10 @@
     public String getExecutor() {
         return (String) connector.getAttribute("Executor");
     }
+    
+    public String getHost() {
+        return getAddress();
+    }
 
     public int getKeepAliveTimeout() {
         Object value = connector.getAttribute("keepAliveTimeout");
@@ -83,7 +141,17 @@
         Object value = connector.getAttribute("maxThreads");
         return value == null ? 200 : Integer.parseInt(value.toString());
     }
-
+    
+    public int getMaxSpareThreads() {
+        Object value = connector.getAttribute("maxSpareThreads");
+        return value == null ? 100 : Integer.parseInt(value.toString());
+    }
+    
+    public int getMinSpareThreads() {
+        Object value = connector.getAttribute("minSpareThreads");
+        return value == null ? 10 : Integer.parseInt(value.toString());
+    }
+    
     public int getPort() {
         return connector.getPort();
     }
@@ -102,8 +170,8 @@
         connector.setAttribute("address", address);
     }
 
-    public void setBackLog(int backLog) {
-        connector.setAttribute("backLog", new Integer(backLog));
+    public void setBacklog(int backlog) {
+        connector.setAttribute("backlog", new Integer(backlog));
     }
 
     public void setBufferSize(int bufferSize) {
@@ -117,6 +185,10 @@
     public void setExecutor(String executor) {
         connector.setAttribute("executor", executor);
     }
+    
+    public void setHost(String host) {
+        setAddress(host);
+    }
 
     public void setKeepAliveTimeout(int keepAliveTimeout) {
         connector.setAttribute("keepAliveTimeout", keepAliveTimeout);        
@@ -125,6 +197,18 @@
     public void setMaxThreads(int maxThreads) {
         connector.setAttribute("maxThreads", maxThreads);        
     }
+    
+    public void setMaxSpareThreads(int maxSpareThreads) {
+        connector.setAttribute("maxSpareThreads", new Integer(maxSpareThreads));
+    }
+    
+    public void setMinSpareThreads(int minSpareThreads) {
+        connector.setAttribute("minSpareThreads", new Integer(minSpareThreads));
+    }
+
+    public void setNoCompressionUserAgents(String noCompressionUserAgents) {
+        connector.setAttribute("noCompressionUserAgents", noCompressionUserAgents);
+    }
 
     public void setPort(int port) {
         connector.setPort(port);
@@ -138,11 +222,26 @@
         connector.setAttribute("tomcatAuthentication", new Boolean(tomcatAuthentication));
     }
     
+    // Statistics Provider
+
+    public Stats getStats() {
+        String port = String.valueOf(getPort());
+        if (reset) {
+            reset = false;
+            return connStatsProvider.getStats(port);
+        } else
+            return connStatsProvider.updateStats(port);
+    }
+
+    public void resetStats() {
+        reset = true;
+    }
+    
     public static final GBeanInfo GBEAN_INFO;
 
     static {
-        GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Tomcat Connector", AJP13ConnectorGBean.class, ConnectorGBean.GBEAN_INFO);
-        infoFactory.addInterface(Http11Protocol.class, 
+        GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Tomcat Connector AJP", AJP13ConnectorGBean.class, ConnectorGBean.GBEAN_INFO);
+        infoFactory.addInterface(Ajp13Protocol.class, 
                 new String[] {
                     //AJP Attributes
                     "address", 
@@ -150,7 +249,11 @@
                     "bufferSize", 
                     "connectionTimeout", 
                     "executor", 
+                    "host",
                     "keepAliveTimeout", 
+                    "maxThreads",
+                    "maxSpareThreads",
+                    "minSpareThreads",
                     "port", 
                     "tcpNoDelay", 
                     "tomcatAuthentication", 
@@ -162,13 +265,17 @@
                     "bufferSize", 
                     "connectionTimeout", 
                     "executor", 
+                    "host",
                     "keepAliveTimeout", 
+                    "maxThreads",
+                    "maxSpareThreads",
+                    "minSpareThreads",
                     "port", 
                     "tcpNoDelay", 
                     "tomcatAuthentication", 
                 }
         );
-        infoFactory.setConstructor(new String[] { "name", "address", "port", "TomcatContainer", "ServerInfo"});
+        infoFactory.setConstructor(new String[] { "name", "initParams", "host", "port", "TomcatContainer", "ServerInfo"});
         GBEAN_INFO = infoFactory.getBeanInfo();
     }
     

Copied: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java (from r560394, geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java?view=diff&rev=562021&p1=geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java&r1=560394&p2=geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java&r2=562021
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java Wed Aug  1 22:51:18 2007
@@ -35,8 +35,8 @@
 
     private String algorithm;
     
-    public AbstractHttp11ConnectorGBean(String name, Map initParams, String tomcatProtocol, String address, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception {
-        super(name, initParams, tomcatProtocol, address, port, container, serverInfo);
+    public AbstractHttp11ConnectorGBean(String name, Map initParams, String tomcatProtocol, String host, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception {
+        super(name, initParams, tomcatProtocol, host, port, container, serverInfo);
     }
 
     @Override
@@ -87,6 +87,14 @@
         return (String) connector.getAttribute("truststoreType");
     }
 
+    public String getTruststorePass() {
+        return (String) connector.getAttribute("truststorePass");
+    }
+    
+    public String getKeystorePass() {
+        return (String) connector.getAttribute("keystorePass");
+    }
+    
     public void setAlgorithm(String algorithm) {
         this.algorithm = algorithm;
         if ("default".equalsIgnoreCase(algorithm)) {
@@ -104,36 +112,58 @@
     }
 
     public void setKeyAlias(String keyAlias) {
+        if (keyAlias.equals(""))
+            keyAlias = null;
         connector.setAttribute("keyAlias", keyAlias);
     }
 
     public void setKeystoreFile(String keystoreFile) {
+        if (keystoreFile!= null && keystoreFile.equals("")) 
+            keystoreFile = null;
         keystoreFileName = keystoreFile;
-        connector.setAttribute("keystoreFile", serverInfo.resolveServerPath(keystoreFileName));
+        if (keystoreFileName == null)
+            connector.setAttribute("keystoreFile", null);
+        else
+            connector.setAttribute("keystoreFile", serverInfo.resolveServerPath(keystoreFileName));
     }
 
     public void setKeystorePass(String keystorePass) {
+        if (keystorePass!= null && keystorePass.equals("")) 
+            keystorePass = null;
         connector.setAttribute("keystorePass", keystorePass);
     }
 
     public void setKeystoreType(String keystoreType) {
+        if (keystoreType!= null && keystoreType.equals("")) 
+            keystoreType = null;
         connector.setAttribute("keystoreType", keystoreType);
     }
 
     public void setSslProtocol(String sslProtocol) {
+        if (sslProtocol!= null && sslProtocol.equals("")) 
+            sslProtocol = null;
         connector.setAttribute("sslProtocol", sslProtocol);
     }
 
     public void setTruststoreFile(String truststoreFile) {
+        if (truststoreFile!= null && truststoreFile.equals("")) 
+            truststoreFile = null;
         truststoreFileName = truststoreFile;
-        connector.setAttribute("truststoreFile", serverInfo.resolveServerPath(truststoreFileName));
+        if (truststoreFileName == null)
+            connector.setAttribute("truststoreFile", null);
+        else
+            connector.setAttribute("truststoreFile", serverInfo.resolveServerPath(truststoreFileName));
     }
 
     public void setTruststorePass(String truststorePass) {
+        if (truststorePass!= null && truststorePass.equals("")) 
+            truststorePass = null;
         connector.setAttribute("truststorePass", truststorePass);
     }
 
     public void setTruststoreType(String truststoreType) {
+        if (truststoreType!= null && truststoreType.equals("")) 
+            truststoreType = null;
         connector.setAttribute("truststoreType", truststoreType);
     }
 
@@ -171,7 +201,7 @@
                     "truststoreType"
                 }
         );
-        infoFactory.setConstructor(new String[] { "name", "initParams", "tomcatProtocol", "address", "port", "TomcatContainer", "ServerInfo"});
+        infoFactory.setConstructor(new String[] { "name", "initParams", "tomcatProtocol", "host", "port", "TomcatContainer", "ServerInfo"});
         GBEAN_INFO = infoFactory.getBeanInfo();
     }
     

Copied: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java (from r559530, geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java)
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java?view=diff&rev=562021&p1=geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java&r1=559530&p2=geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java&r2=562021
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java Wed Aug  1 22:51:18 2007
@@ -22,18 +22,24 @@
     //AJP
     public String getAddress();
     public void setAddress(String address);
-    public int getBackLog();
-    public void setBackLog(int backLog);
+    public int getBacklog();
+    public void setBacklog(int backlog);
     public int getBufferSize();
     public void setBufferSize(int bufferSize);
     public int getConnectionTimeout();
     public void setConnectionTimeout(int connectionTimeout);
     public String getExecutor();
     public void setExecutor(String executor);
+    public String getHost();
+    public void setHost(String address);
     public int getKeepAliveTimeout();
     public void setKeepAliveTimeout(int keepAliveTimeout);
     public int getMaxThreads();
     public void setMaxThreads(int maxThreads);
+    public int getMaxSpareThreads();
+    public void setMaxSpareThreads(int maxSpareThreads);
+    public int getMinSpareThreads();
+    public void setMinSpareThreads(int minSpareThreads);
     public int getPort();
     public void setPort(int port);
     public boolean getTcpNoDelay();



Mime
View raw message