geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jgenen...@apache.org
Subject svn commit: r561610 - in /geronimo/server/trunk: configs/j2ee-server/src/plan/ modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/ modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/
Date Wed, 01 Aug 2007 00:41:59 GMT
Author: jgenender
Date: Tue Jul 31 17:41:58 2007
New Revision: 561610

URL: http://svn.apache.org/viewvc?view=rev&rev=561610
Log:
Connectors are in and done ;-)

Modified:
    geronimo/server/trunk/configs/j2ee-server/src/plan/plan.xml
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatManagerImpl.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/BaseHttp11ConnectorGBean.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/ConnectorGBean.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11APRConnectorGBean.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOConnectorGBean.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOProtocol.java

Modified: geronimo/server/trunk/configs/j2ee-server/src/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/j2ee-server/src/plan/plan.xml?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/configs/j2ee-server/src/plan/plan.xml (original)
+++ geronimo/server/trunk/configs/j2ee-server/src/plan/plan.xml Tue Jul 31 17:41:58 2007
@@ -91,10 +91,8 @@
            javax.xml.soap.SOAPFactory=org.apache.geronimo.webservices.saaj.GeronimoSOAPFactory
            javax.xml.soap.SOAPConnectionFactory=org.apache.geronimo.webservices.saaj.GeronimoSOAPConnectionFactory
            javax.xml.soap.MetaFactory=org.apache.geronimo.webservices.saaj.GeronimoMetaFactory
-
            org.apache.cxf.jaxws.checkPublishEndpointPermission=true
-
-             
+           java.net.preferIPv4Stack=true
          </attribute>
     </gbean>
 

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=561610&r1=561609&r2=561610
==============================================================================
--- 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 Tue Jul 31 17:41:58 2007
@@ -68,12 +68,12 @@
     private final static Log log = LogFactory.getLog(TomcatManagerImpl.class);
     private final Kernel kernel;
     
-    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 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_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,
@@ -88,6 +88,7 @@
     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", "Host", String.class, true));
@@ -98,7 +99,7 @@
         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, "tcpNoDelay", Boolean.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));
@@ -117,7 +118,7 @@
         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", "", "proxyName", String.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));
@@ -127,30 +128,32 @@
 
         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", "Host", String.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<String>("algorithm", KeyManagerFactory.getDefaultAlgorithm(), "Algorithm", String.class));
-        connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuth", false, "clientAuth", Boolean.class));
+        //SSL
         connectorAttributes.add(new ConnectorAttribute<String>("keystoreFile", "", "keystoreFile", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<String>("keystorePass", "", "keystorePass", String.class));
+        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<Boolean>("clientAuth", false, "clientAuth", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "TLS", "sslProtocol", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("ciphers", "", "Ciphers", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("keyAlias", "", "keyAlias", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreFile", "", "truststoreFile", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststorePass", "", "truststorePass", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", "", "truststoreType", 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>("truststorePass", null, "truststorePass", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", null, "truststoreType", String.class));
+        //HTTP
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", 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, "tcpNoDelay", Boolean.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));
@@ -161,7 +164,7 @@
         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", "", "The Server header for the http response.", 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
@@ -170,16 +173,16 @@
         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", "", "proxyName", String.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", "Host", String.class, true));
@@ -190,7 +193,7 @@
         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, "tcpNoDelay", Boolean.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));
@@ -201,7 +204,7 @@
         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", "", "The Server header for the http response.", 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
@@ -210,30 +213,66 @@
         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", "", "proxyName", String.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", "Host", String.class, true));
         connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", Integer.class, true));
-        connectorAttributes.add(new ConnectorAttribute<String>("algorithm", KeyManagerFactory.getDefaultAlgorithm(), "Algorithm", String.class));
-        connectorAttributes.add(new ConnectorAttribute<Boolean>("clientAuth", false, "clientAuth", Boolean.class));
+        //SSL
         connectorAttributes.add(new ConnectorAttribute<String>("keystoreFile", "", "keystoreFile", String.class, true));
-        connectorAttributes.add(new ConnectorAttribute<String>("keystorePass", "", "keystorePass", String.class));
+        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<Boolean>("clientAuth", false, "clientAuth", Boolean.class));
         connectorAttributes.add(new ConnectorAttribute<String>("sslProtocol", "TLS", "sslProtocol", String.class));
         connectorAttributes.add(new ConnectorAttribute<String>("ciphers", "", "Ciphers", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("keyAlias", "", "keyAlias", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreFile", "", "truststoreFile", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststorePass", "", "truststorePass", String.class));
-        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", "", "truststoreType", 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>("truststorePass", null, "truststorePass", String.class));
+        connectorAttributes.add(new ConnectorAttribute<String>("truststoreType", null, "truststoreType", String.class));
 
         connectorAttributes.add(new ConnectorAttribute<Integer>("maxThreads", 40, "Maximum number of threads", Integer.class));
         connectorAttributes.add(new ConnectorAttribute<Integer>("minSpareThreads", 10, "Minimum spare threads", Integer.class));
@@ -241,7 +280,7 @@
         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, "tcpNoDelay", Boolean.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));
@@ -252,7 +291,7 @@
         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", "", "The Server header for the http response.", 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
@@ -261,22 +300,180 @@
         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", "", "proxyName", String.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);
         
-        connectorAttributes = new ArrayList<ConnectorAttribute>();
+        //******************* 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));
+        //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>("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", "Host", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8443, "Port", 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>("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", "Host", String.class, true));
+        connectorAttributes.add(new ConnectorAttribute<Integer>("port", 8009, "Port", 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>("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);
     }
     
@@ -468,10 +665,16 @@
         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.getStringValue());
+            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 {

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AJP13ConnectorGBean.java Tue Jul 31 17:41:58 2007
@@ -41,7 +41,7 @@
     private boolean reset = true;
 
     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);
         
@@ -109,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());
     }
 
@@ -170,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) {

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/AbstractHttp11ConnectorGBean.java Tue Jul 31 17:41:58 2007
@@ -104,36 +104,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);
     }
 

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Ajp13Protocol.java Tue Jul 31 17:41:58 2007
@@ -22,8 +22,8 @@
     //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();

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/BaseHttp11ConnectorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/BaseHttp11ConnectorGBean.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/BaseHttp11ConnectorGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/BaseHttp11ConnectorGBean.java Tue Jul 31 17:41:58 2007
@@ -137,7 +137,14 @@
     }
 
     public String getExecutor() {
-        return (String) connector.getAttribute("Executor");
+        Object value = connector.getAttribute("executor");
+        if (value == null)
+            return null;
+        
+        if (value instanceof String)
+            return (String)value;
+        
+        return (String) value.getClass().getName();
     }
     
     public String getHost() {
@@ -286,6 +293,8 @@
     }
 
     public void setServer(String server) {
+        if (server.equals(""))
+            server = null;
         connector.setAttribute("server", server);
     }
 

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/ConnectorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/ConnectorGBean.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/ConnectorGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/ConnectorGBean.java Tue Jul 31 17:41:58 2007
@@ -206,6 +206,8 @@
     }
 
     public void setProxyName(String proxyName) {
+        if (proxyName.equals(""))
+            proxyName = null;
         connector.setProxyName(proxyName);
     }
 

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11APRConnectorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11APRConnectorGBean.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11APRConnectorGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11APRConnectorGBean.java Tue Jul 31 17:41:58 2007
@@ -28,6 +28,14 @@
 
 public class Http11APRConnectorGBean extends BaseHttp11ConnectorGBean implements Http11APRProtocol {
 
+    private String certificateFile;
+    private String certificateKeyFile;
+    private String caCertificateFile;
+    private String caCertificatePath;
+    private String certificateChainFile;
+    private String revocationPath;
+    private String revocationFile;
+    
     public Http11APRConnectorGBean(String name, Map initParams, String host, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception {
         super(name, initParams, "org.apache.coyote.http11.Http11AprProtocol", host, port, container, serverInfo);
     }
@@ -58,23 +66,23 @@
     }
 
     public String getSslCACertificateFile() {
-        return (String) connector.getAttribute("SSLCACertificateFile");
+        return caCertificateFile;
     }
 
     public String getSslCACertificatePath() {
-        return (String) connector.getAttribute("SSLCACertificatePath");
+        return caCertificatePath;
     }
 
     public String getSslCertificateChainFile() {
-        return (String) connector.getAttribute("SSLCertificateChainFile");
+        return certificateChainFile; 
     }
 
     public String getSslCertificateFile() {
-        return (String) connector.getAttribute("SSLCertificateFile");
+        return certificateFile; 
     }
 
     public String getSslCertificateKeyFile() {
-        return (String) connector.getAttribute("SSLCertificateKeyFile");
+        return certificateKeyFile; 
     }
 
     public String getSslCipherSuite() {
@@ -86,11 +94,11 @@
     }
 
     public String getSslCARevocationFile() {
-        return (String) connector.getAttribute("SSLCARevocationFile");
+        return revocationFile;
     }
 
     public String getSslCARevocationPath() {
-        return (String) connector.getAttribute("SSLCARevocationPath");
+        return revocationPath;
     }
 
     public String getSslVerifyClient() {
@@ -120,23 +128,53 @@
     }
 
     public void setSslCACertificateFile(String sslCACertificateFile) {
-        connector.setAttribute("SSLCACertificateFile", sslCACertificateFile);
+        if (sslCACertificateFile != null && sslCACertificateFile.equals(""))
+            sslCACertificateFile = null;
+        caCertificateFile = sslCACertificateFile;
+        if (caCertificateFile == null)
+            connector.setAttribute("SSLCACertificateFile", null);
+        else
+            connector.setAttribute("SSLCACertificateFile", serverInfo.resolveServerPath(caCertificateFile));
     }
 
     public void setSslCACertificatePath(String sslCACertificatePath) {
-        connector.setAttribute("SSLCACertificatePath", sslCACertificatePath);
+        if (sslCACertificatePath != null && sslCACertificatePath.equals(""))
+            sslCACertificatePath = null;
+        caCertificatePath = sslCACertificatePath;
+        if (caCertificatePath == null)
+            connector.setAttribute("SSLCACertificatePath", null);
+        else
+            connector.setAttribute("SSLCACertificatePath", serverInfo.resolveServerPath(caCertificatePath));
     }
 
     public void setSslCertificateChainFile(String sslCertificateChainFile) {
-        connector.setAttribute("SSLCertificateChainFile", sslCertificateChainFile);
+        if (sslCertificateChainFile != null && sslCertificateChainFile.equals(""))
+            sslCertificateChainFile = null;
+        certificateChainFile = sslCertificateChainFile;
+        if (certificateChainFile == null)
+            connector.setAttribute("SSLCertificateChainFile", null);
+        else
+            connector.setAttribute("SSLCertificateChainFile", serverInfo.resolveServerPath(certificateChainFile));
     }
 
     public void setSslCertificateFile(String sslCertificateFile) {
-        connector.setAttribute("SSLCertificateFile", sslCertificateFile);
+        if (sslCertificateFile != null && sslCertificateFile.equals(""))
+            sslCertificateFile = null;
+        certificateFile = sslCertificateFile;
+        if (certificateFile == null)
+            connector.setAttribute("SSLCertificateFile", null);
+        else
+            connector.setAttribute("SSLCertificateFile", serverInfo.resolveServerPath(certificateFile));
     }
 
     public void setSslCertificateKeyFile(String sslCertificateKeyFile) {
-        connector.setAttribute("SSLCertificateKeyFile", sslCertificateKeyFile);
+        if (sslCertificateKeyFile != null && sslCertificateKeyFile.equals(""))
+            sslCertificateKeyFile = null;
+        certificateKeyFile = sslCertificateKeyFile;
+        if (certificateKeyFile == null)
+            connector.setAttribute("SSLCertificateKeyFile", null);
+        else
+            connector.setAttribute("SSLCertificateKeyFile", serverInfo.resolveServerPath(certificateKeyFile));
     }
 
     public void setSslCipherSuite(String sslCipherSuite) {
@@ -144,6 +182,8 @@
     }
 
     public void setSslPassword(String sslPassword) {
+        if (sslPassword != null && sslPassword.equals(""))
+            sslPassword = null;
         connector.setAttribute("SSLPassword", sslPassword);
     }
     
@@ -152,11 +192,24 @@
     }
 
     public void setSslCARevocationFile(String sslCARevocationFile) {
-        connector.setAttribute("SSLCARevocationFile", sslCARevocationFile);
+        if (sslCARevocationFile!= null && sslCARevocationFile.equals("")) 
+            sslCARevocationFile = null;
+        revocationFile = sslCARevocationFile;
+        if (revocationFile == null)
+            connector.setAttribute("SSLCARevocationFile", null);
+        else
+            connector.setAttribute("SSLCARevocationFile", serverInfo.resolveServerPath(revocationFile));
     }
 
     public void setSslCARevocationPath(String sslCARevocationPath) {
-        connector.setAttribute("SSLCARevocationPath", sslCARevocationPath);
+        if (sslCARevocationPath!= null && sslCARevocationPath.equals("")) 
+            sslCARevocationPath = null;
+        revocationPath = sslCARevocationPath;
+        if (revocationPath == null)
+            connector.setAttribute("SSLCARevocationPath", null);
+        else
+            connector.setAttribute("SSLCARevocationPath", serverInfo.resolveServerPath(revocationPath));
+
     }
 
     public void setSslVerifyClient(String sslVerifyClient) {

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOConnectorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOConnectorGBean.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOConnectorGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOConnectorGBean.java Tue Jul 31 17:41:58 2007
@@ -180,9 +180,9 @@
         return value == null ? 5000 : Integer.parseInt(value.toString());
     }
 
-    public byte getSocket_soTrafficClass() {
+    public int getSocket_soTrafficClass() {
         Object value = connector.getAttribute("socket.soTrafficClass");
-        return value == null ? (0x04 | 0x08 | 0x010) : new Byte(value.toString()).byteValue();
+        return value == null ? (0x04 | 0x08 | 0x010) : new Integer(value.toString()).intValue();
     }
 
     public boolean getSocket_tcpNoDelay() {
@@ -205,8 +205,8 @@
         return value == null ? true : new Boolean(value.toString()).booleanValue();
     }
 
-    public boolean getUseSendFile() {
-        Object value = connector.getAttribute("useSendFile");
+    public boolean getUseSendfile() {
+        Object value = connector.getAttribute("useSendfile");
         return value == null ? true : new Boolean(value.toString()).booleanValue();
     }
 
@@ -322,8 +322,8 @@
         connector.setAttribute("socket.soTimeout", new Integer(socket_soTimeout));
     }
 
-    public void setSocket_soTrafficClass(byte socket_soTrafficClass) {
-        connector.setAttribute("socket.soTrafficClass", new Byte(socket_soTrafficClass));
+    public void setSocket_soTrafficClass(int socket_soTrafficClass) {
+        connector.setAttribute("socket.soTrafficClass", new Integer(socket_soTrafficClass));
     }
 
     public void setSocket_tcpNoDelay(boolean socket_tcpNoDelay) {
@@ -342,8 +342,8 @@
         connector.setAttribute("useExecutor", new Boolean(useExecutor));
     }
 
-    public void setUseSendFile(boolean useSendFile) {
-        connector.setAttribute("useSendFile", new Boolean(useSendFile));
+    public void setUseSendfile(boolean useSendfile) {
+        connector.setAttribute("useSendfile", new Boolean(useSendfile));
     }
     public static final GBeanInfo GBEAN_INFO;
 

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOProtocol.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOProtocol.java?view=diff&rev=561610&r1=561609&r2=561610
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOProtocol.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/connector/Http11NIOProtocol.java Tue Jul 31 17:41:58 2007
@@ -20,8 +20,8 @@
 
 public interface Http11NIOProtocol {
 
-    public boolean getUseSendFile();
-    public void setUseSendFile(boolean useSendFile);
+    public boolean getUseSendfile();
+    public void setUseSendfile(boolean useSendfile);
     public boolean getUseExecutor();
     public void setUseExecutor(boolean useExecutor);
     public int getAcceptorThreadCount();
@@ -72,8 +72,8 @@
     public void setSocket_soLingerTime(int socket_soLingerTime);
     public int getSocket_soTimeout();
     public void setSocket_soTimeout(int socket_soTimeout);
-    public byte getSocket_soTrafficClass();
-    public void setSocket_soTrafficClass(byte socket_soTrafficClass);
+    public int getSocket_soTrafficClass();
+    public void setSocket_soTrafficClass(int socket_soTrafficClass);
     public int getSocket_performanceConnectionTime();
     public void setSocket_performanceConnectionTime(int socket_performanceConnectionTime);
     public int getSocket_performanceLatency();



Mime
View raw message