Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 94982 invoked from network); 2 Jun 2007 08:10:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Jun 2007 08:10:44 -0000 Received: (qmail 51784 invoked by uid 500); 2 Jun 2007 08:10:47 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 51746 invoked by uid 500); 2 Jun 2007 08:10:47 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 51735 invoked by uid 99); 2 Jun 2007 08:10:47 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jun 2007 01:10:47 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jun 2007 01:10:41 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 416E71A981A; Sat, 2 Jun 2007 01:10:20 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r543715 - in /geronimo/server/trunk: ./ assemblies/geronimo-jetty6-jee5/src/main/resources/var/config/ configs/jetty6/src/plan/ configs/rmi-naming/src/plan/ modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ modules/geronimo-jett... Date: Sat, 02 Jun 2007 08:10:18 -0000 To: scm@geronimo.apache.org From: djencks@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070602081020.416E71A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: djencks Date: Sat Jun 2 01:10:16 2007 New Revision: 543715 URL: http://svn.apache.org/viewvc?view=rev&rev=543715 Log: GERONIMO-3034 GERONIMO-2655 New SelectChannel and AJP connectors. Also hook the connectors up to our thread pool Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java (with props) geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java (with props) Removed: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyThreadPool.java geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSSLListener.java geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPConnector.java geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSConnector.java Modified: geronimo/server/trunk/assemblies/geronimo-jetty6-jee5/src/main/resources/var/config/config.xml geronimo/server/trunk/configs/jetty6/src/plan/plan.xml geronimo/server/trunk/configs/rmi-naming/src/plan/plan.xml geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java geronimo/server/trunk/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java geronimo/server/trunk/modules/geronimo-jetty6/pom.xml geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/AJP13Connector.java geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyConnector.java geronimo/server/trunk/modules/geronimo-jetty6/src/main/resources/META-INF/geronimo-dependency.xml geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/HTTPConnectorTest.java geronimo/server/trunk/modules/geronimo-jetty6/src/test/resources/services/local.xml geronimo/server/trunk/modules/geronimo-management/src/main/java/org/apache/geronimo/management/geronimo/KeystoreManager.java geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/threads/ThreadPool.java geronimo/server/trunk/modules/geronimo-system/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java geronimo/server/trunk/pom.xml Modified: geronimo/server/trunk/assemblies/geronimo-jetty6-jee5/src/main/resources/var/config/config.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/assemblies/geronimo-jetty6-jee5/src/main/resources/var/config/config.xml?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/assemblies/geronimo-jetty6-jee5/src/main/resources/var/config/config.xml (original) +++ geronimo/server/trunk/assemblies/geronimo-jetty6-jee5/src/main/resources/var/config/config.xml Sat Jun 2 01:10:16 2007 @@ -117,15 +117,15 @@ ${PlanHTTPPortPrimary + portOffset} ${PlanHTTPSPortPrimary + portOffset} + + ${PlanServerHostname} + ${PlanAJPPortPrimary + portOffset} + ${PlanHTTPSPortPrimary + portOffset} + ${PlanServerHostname} ${PlanHTTPSPortPrimary + portOffset} - @@ -71,17 +74,21 @@ - - - - - - - + + ${PlanServerHostname} + ${PlanAJPPort} + + JettyWebContainer + + + DefaultThreadPool + + 50 - + - + + ${PlanServerHostname} ${PlanHTTPSPort} geronimo-default @@ -91,13 +98,37 @@ Default TLS 50 - JettyWebContainer + + DefaultThreadPool + + + KeystoreManager + + + Modified: geronimo/server/trunk/configs/rmi-naming/src/plan/plan.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/rmi-naming/src/plan/plan.xml?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/configs/rmi-naming/src/plan/plan.xml (original) +++ geronimo/server/trunk/configs/rmi-naming/src/plan/plan.xml Sat Jun 2 01:10:16 2007 @@ -53,7 +53,7 @@ 5000 - 300 + 500 DefaultThreadPool Modified: geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java (original) +++ geronimo/server/trunk/modules/geronimo-core/src/main/java/org/apache/geronimo/pool/ThreadPool.java Sat Jun 2 01:10:16 2007 @@ -172,9 +172,21 @@ public int getPoolSize() { + return executor.getPoolSize(); + } + + public int getMaximumPoolSize() { return executor.getMaximumPoolSize(); } + public int getActiveCount() { + return executor.getActiveCount(); + } + + public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + return executor.awaitTermination(timeout, unit); + } + public void execute(Runnable command) { execute("Unknown", command); } @@ -327,7 +339,7 @@ public static final GBeanInfo GBEAN_INFO; static { - GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(ThreadPool.class); + GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(ThreadPool.class, "GBean"); infoFactory.addAttribute("poolSize", int.class, true); infoFactory.addAttribute("poolName", String.class, true); Modified: geronimo/server/trunk/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java (original) +++ geronimo/server/trunk/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java Sat Jun 2 01:10:16 2007 @@ -51,7 +51,7 @@ import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; import org.apache.geronimo.j2ee.management.impl.J2EEServerImpl; import org.apache.geronimo.jetty6.JettyContainerImpl; -import org.apache.geronimo.jetty6.connector.HTTPConnector; +import org.apache.geronimo.jetty6.connector.HTTPSocketConnector; import org.apache.geronimo.kernel.Jsr77Naming; import org.apache.geronimo.kernel.Kernel; import org.apache.geronimo.kernel.KernelFactory; @@ -245,7 +245,7 @@ GBeanData containerData = bootstrap.addGBean("JettyContainer", JettyContainerImpl.GBEAN_INFO); AbstractName containerName = containerData.getAbstractName(); - GBeanData connector = bootstrap.addGBean("JettyConnector", HTTPConnector.GBEAN_INFO); + GBeanData connector = bootstrap.addGBean("JettyConnector", HTTPSocketConnector.GBEAN_INFO); connector.setAttribute("port", new Integer(5678)); connector.setAttribute("maxThreads", new Integer(50)); // connector.setAttribute("minThreads", new Integer(10)); Modified: geronimo/server/trunk/modules/geronimo-jetty6/pom.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/pom.xml?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/pom.xml (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/pom.xml Sat Jun 2 01:10:16 2007 @@ -63,6 +63,21 @@ org.mortbay.jetty jetty + + + org.mortbay.jetty + jetty-ajp + + + + org.mortbay.jetty + jetty-sslengine + + + + org.mortbay.jetty + jetty-util + Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyManagerImpl.java Sat Jun 2 01:10:16 2007 @@ -31,8 +31,8 @@ import org.apache.geronimo.gbean.ReferencePatterns; import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; import org.apache.geronimo.jetty6.connector.AJP13Connector; -import org.apache.geronimo.jetty6.connector.HTTPConnector; -import org.apache.geronimo.jetty6.connector.HTTPSConnector; +import org.apache.geronimo.jetty6.connector.HTTPSocketConnector; +import org.apache.geronimo.jetty6.connector.HTTPSSocketConnector; import org.apache.geronimo.jetty6.connector.JettyConnector; import org.apache.geronimo.jetty6.requestlog.JettyLogManager; import org.apache.geronimo.kernel.GBeanNotFoundException; @@ -76,9 +76,9 @@ AbstractName name = kernel.getNaming().createSiblingName(containerName, uniqueName, NameFactory.GERONIMO_SERVICE); GBeanData connector; if (protocol.equals(PROTOCOL_HTTP)) { - connector = new GBeanData(name, HTTPConnector.GBEAN_INFO); + connector = new GBeanData(name, HTTPSocketConnector.GBEAN_INFO); } else if (protocol.equals(PROTOCOL_HTTPS)) { - connector = new GBeanData(name, HTTPSConnector.GBEAN_INFO); + connector = new GBeanData(name, HTTPSSocketConnector.GBEAN_INFO); AbstractNameQuery query = new AbstractNameQuery(KeystoreManager.class.getName()); connector.setReferencePattern("KeystoreManager", query); //todo: default HTTPS settings Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/AJP13Connector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/AJP13Connector.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/AJP13Connector.java (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/AJP13Connector.java Sat Jun 2 01:10:16 2007 @@ -21,14 +21,15 @@ import org.apache.geronimo.gbean.GBeanInfoBuilder; import org.apache.geronimo.jetty6.JettyContainer; import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.system.threads.ThreadPool; +import org.mortbay.jetty.ajp.Ajp13SocketConnector; /** * @version $Rev$ $Date$ */ public class AJP13Connector extends JettyConnector { - public AJP13Connector(JettyContainer container) { - //throw new UnsupportedOperationException("No AJP13Connector for jetty6 - //TODO:there is no ajp13 connector, but just ignore this for now + public AJP13Connector(JettyContainer container, ThreadPool threadPool) { + super(container, new Ajp13SocketConnector(), threadPool, "AJP13Connector"); } public String getProtocol() { @@ -39,11 +40,19 @@ return -1; } + public void setRedirectPort(int port) { + Ajp13SocketConnector ajpListener = (Ajp13SocketConnector) listener; + ajpListener.setConfidentialPort(port); + ajpListener.setIntegralPort(port); + ajpListener.setIntegralScheme("https"); + ajpListener.setConfidentialScheme("https"); + } + public static final GBeanInfo GBEAN_INFO; static { GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty Connector AJP13", AJP13Connector.class, JettyConnector.GBEAN_INFO); - infoFactory.setConstructor(new String[]{"JettyContainer"}); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool"}); GBEAN_INFO = infoFactory.getBeanInfo(); } Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +package org.apache.geronimo.jetty6.connector; + +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; +import java.security.NoSuchProviderException; +import java.security.KeyManagementException; +import java.security.cert.CertificateException; +import java.io.IOException; + +import javax.net.ssl.SSLServerSocketFactory; +import javax.net.ssl.SSLContext; + +import org.mortbay.jetty.security.SslSocketConnector; +import org.mortbay.jetty.security.SslSelectChannelConnector; +import org.apache.geronimo.management.geronimo.KeystoreManager; + +/** + * SSL listener that hooks into the Geronimo keystore infrastructure. + * + * @version $Rev$ $Date$ + */ +public class GeronimoSelectChannelSSLListener extends SslSelectChannelConnector { + private KeystoreManager manager; + private String keyStore; + private String trustStore; + private String keyAlias; + + public GeronimoSelectChannelSSLListener(KeystoreManager manager) { + this.manager = manager; + } + + protected SSLContext createSSLContext() throws Exception { + return manager.createSSLContext(null, getProtocol(), getSslKeyManagerFactoryAlgorithm(), keyStore, keyAlias, trustStore, SslSocketConnector.class.getClassLoader()); + } + + public String getKeyStore() { + return keyStore; + } + + public void setKeyStore(String keyStore) { + this.keyStore = keyStore; + } + + public String getTrustStore() { + return trustStore; + } + + public void setTrustStore(String trustStore) { + this.trustStore = trustStore; + } + + public String getKeyAlias() { + return keyAlias; + } + + public void setKeyAlias(String keyAlias) { + this.keyAlias = keyAlias; + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSelectChannelSSLListener.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,67 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.geronimo.jetty6.connector; + +import org.mortbay.jetty.security.SslSocketConnector; +import org.apache.geronimo.management.geronimo.KeystoreManager; + +import javax.net.ssl.SSLServerSocketFactory; + +/** + * SSL listener that hooks into the Geronimo keystore infrastructure. + * + * @version $Rev$ $Date$ + */ +public class GeronimoSocketSSLListener extends SslSocketConnector { + private KeystoreManager manager; + private String keyStore; + private String trustStore; + private String keyAlias; + + public GeronimoSocketSSLListener(KeystoreManager manager) { + this.manager = manager; + } + + protected SSLServerSocketFactory createFactory() throws Exception { + // we need the server factory version. + return manager.createSSLServerFactory(null, getProtocol(), getSslKeyManagerFactoryAlgorithm(), keyStore, keyAlias, trustStore, SslSocketConnector.class.getClassLoader()); + } + + public String getKeyStore() { + return keyStore; + } + + public void setKeyStore(String keyStore) { + this.keyStore = keyStore; + } + + public String getTrustStore() { + return trustStore; + } + + public void setTrustStore(String trustStore) { + this.trustStore = trustStore; + } + + public String getKeyAlias() { + return keyAlias; + } + + public void setKeyAlias(String keyAlias) { + this.keyAlias = keyAlias; + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/GeronimoSocketSSLListener.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +package org.apache.geronimo.jetty6.connector; + +import org.apache.geronimo.jetty6.JettyContainer; +import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.system.threads.ThreadPool; +import org.mortbay.jetty.nio.BlockingChannelConnector; + +/** + * @version $Rev$ $Date$ + */ +public class HTTPBlockingConnector extends JettyConnector { + public HTTPBlockingConnector(JettyContainer container, ThreadPool threadPool) { + super(container, new BlockingChannelConnector(), threadPool, "HTTPBlockingConnector"); + } + + public String getProtocol() { + return WebManager.PROTOCOL_HTTP; + } + + public int getDefaultPort() { + return 80; + } + + public void setRedirectPort(int port) { + BlockingChannelConnector connector = (BlockingChannelConnector) listener; + connector.setConfidentialPort(port); + connector.setIntegralPort(port); + connector.setIntegralScheme("https"); + connector.setConfidentialScheme("https"); + } + + public static final GBeanInfo GBEAN_INFO; + + static { + GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty Blocking Channel Connector HTTP", HTTPBlockingConnector.class, JettyConnector.GBEAN_INFO); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool"}); + GBEAN_INFO = infoFactory.getBeanInfo(); + } + + public static GBeanInfo getGBeanInfo() { + return GBEAN_INFO; + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPBlockingConnector.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +package org.apache.geronimo.jetty6.connector; + +import javax.net.ssl.KeyManagerFactory; + +import org.apache.geronimo.jetty6.JettySecureConnector; +import org.apache.geronimo.jetty6.JettyContainer; +import org.apache.geronimo.management.geronimo.KeystoreManager; +import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; +import org.apache.geronimo.system.threads.ThreadPool; +import org.mortbay.jetty.bio.SocketConnector; + +/** + * Implementation of a HTTPS connector based on Jetty's SslConnector (which uses pure JSSE). + * + * @version $Rev$ $Date$ + */ +public class HTTPSSelectChannelConnector extends JettyConnector implements JettySecureConnector { + private final GeronimoSelectChannelSSLListener https; + private String algorithm; + + public HTTPSSelectChannelConnector(JettyContainer container, ThreadPool threadPool, KeystoreManager keystoreManager) { + super(container, new GeronimoSelectChannelSSLListener(keystoreManager), threadPool, "HTTPSSelectChannelConnector"); + https = (GeronimoSelectChannelSSLListener) listener; + } + + public int getDefaultPort() { + return 443; + } + + public String getProtocol() { + return WebManager.PROTOCOL_HTTPS; + } + + public String getAlgorithm() { + return algorithm; + } + + /** + * Algorithm to use. + * As different JVMs have different implementations available, the default algorithm can be used by supplying the value "Default". + * + * @param algorithm the algorithm to use, or "Default" to use the default from {@link javax.net.ssl.KeyManagerFactory#getDefaultAlgorithm()} + */ + public void setAlgorithm(String algorithm) { + // cache the value so the null + this.algorithm = algorithm; + if ("default".equalsIgnoreCase(algorithm)) { + algorithm = KeyManagerFactory.getDefaultAlgorithm(); + } + https.setSslKeyManagerFactoryAlgorithm(algorithm); + } + + public String getSecureProtocol() { + return https.getProtocol(); + } + + public void setSecureProtocol(String protocol) { + https.setProtocol(protocol); + } + + public void setClientAuthRequired(boolean needClientAuth) { + https.setNeedClientAuth(needClientAuth); + } + + public boolean isClientAuthRequired() { + return https.getNeedClientAuth(); + } + + public void setClientAuthRequested(boolean wantClientAuth) { + https.setWantClientAuth(wantClientAuth); + } + + public boolean isClientAuthRequested() { + return https.getWantClientAuth(); + } + + public void setKeyStore(String keyStore) { + https.setKeyStore(keyStore); + } + + public String getKeyStore() { + return https.getKeyStore(); + } + + public void setTrustStore(String trustStore) { + https.setTrustStore(trustStore); + } + + public String getTrustStore() { + return https.getTrustStore(); + } + + public void setKeyAlias(String keyAlias) { + https.setKeyAlias(keyAlias); + } + + public String getKeyAlias() { + return https.getKeyAlias(); + } + + //TODO does this make sense??? + public void setRedirectPort(int port) { + SocketConnector socketListener = (SocketConnector) listener; + socketListener.setConfidentialPort(port); + socketListener.setIntegralPort(port); + socketListener.setIntegralScheme("https"); + socketListener.setConfidentialScheme("https"); + } + + public static final GBeanInfo GBEAN_INFO; + + static { + GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty Select Channel Connector HTTPS", HTTPSSelectChannelConnector.class, JettyConnector.GBEAN_INFO); + infoFactory.addAttribute("algorithm", String.class, true, true); + infoFactory.addAttribute("secureProtocol", String.class, true, true); + infoFactory.addAttribute("keyStore", String.class, true, true); + infoFactory.addAttribute("keyAlias", String.class, true, true); + infoFactory.addAttribute("trustStore", String.class, true, true); + infoFactory.addAttribute("clientAuthRequired", boolean.class, true, true); + infoFactory.addAttribute("clientAuthRequested", boolean.class, true, true); + infoFactory.addReference("KeystoreManager", KeystoreManager.class, NameFactory.GERONIMO_SERVICE); + infoFactory.addInterface(JettySecureConnector.class); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool", "KeystoreManager"}); + GBEAN_INFO = infoFactory.getBeanInfo(); + } + + public static GBeanInfo getGBeanInfo() { + return GBEAN_INFO; + } + + // ================= NO LONGER USED!!! ===================== + // todo: remove these from the SSL interface + + public String getKeystoreFileName() { + return null; + } + + public void setKeystoreFileName(String name) { + } + + public void setKeystorePassword(String password) { + } + + public String getKeystoreType() { + return null; + } + + public void setKeystoreType(String type) { + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSelectChannelConnector.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,169 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.geronimo.jetty6.connector; + +import javax.net.ssl.KeyManagerFactory; +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; +import org.apache.geronimo.jetty6.JettyContainer; +import org.apache.geronimo.jetty6.JettySecureConnector; +import org.apache.geronimo.management.geronimo.KeystoreManager; +import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.system.threads.ThreadPool; +import org.mortbay.jetty.bio.SocketConnector; + +/** + * Implementation of a HTTPS connector based on Jetty's SslConnector (which uses pure JSSE). + * + * @version $Rev$ $Date$ + */ +public class HTTPSSocketConnector extends JettyConnector implements JettySecureConnector { + private final GeronimoSocketSSLListener https; + private String algorithm; + + public HTTPSSocketConnector(JettyContainer container, ThreadPool threadPool, KeystoreManager keystoreManager) { + super(container, new GeronimoSocketSSLListener(keystoreManager), threadPool, "HTTPSSocketConnector"); + https = (GeronimoSocketSSLListener) listener; + } + + public int getDefaultPort() { + return 443; + } + + public String getProtocol() { + return WebManager.PROTOCOL_HTTPS; + } + + public String getAlgorithm() { + return algorithm; + } + + /** + * Algorithm to use. + * As different JVMs have different implementations available, the default algorithm can be used by supplying the value "Default". + * + * @param algorithm the algorithm to use, or "Default" to use the default from {@link javax.net.ssl.KeyManagerFactory#getDefaultAlgorithm()} + */ + public void setAlgorithm(String algorithm) { + // cache the value so the null + this.algorithm = algorithm; + if ("default".equalsIgnoreCase(algorithm)) { + algorithm = KeyManagerFactory.getDefaultAlgorithm(); + } + https.setSslKeyManagerFactoryAlgorithm(algorithm); + } + + public String getSecureProtocol() { + return https.getProtocol(); + } + + public void setSecureProtocol(String protocol) { + https.setProtocol(protocol); + } + + public void setClientAuthRequired(boolean needClientAuth) { + https.setNeedClientAuth(needClientAuth); + } + + public boolean isClientAuthRequired() { + return https.getNeedClientAuth(); + } + + public void setClientAuthRequested(boolean wantClientAuth) { + https.setWantClientAuth(wantClientAuth); + } + + public boolean isClientAuthRequested() { + return https.getWantClientAuth(); + } + + public void setKeyStore(String keyStore) { + https.setKeyStore(keyStore); + } + + public String getKeyStore() { + return https.getKeyStore(); + } + + public void setTrustStore(String trustStore) { + https.setTrustStore(trustStore); + } + + public String getTrustStore() { + return https.getTrustStore(); + } + + public void setKeyAlias(String keyAlias) { + https.setKeyAlias(keyAlias); + } + + public String getKeyAlias() { + return https.getKeyAlias(); + } + + //TODO does this make sense??? + public void setRedirectPort(int port) { + SocketConnector socketListener = (SocketConnector) listener; + socketListener.setConfidentialPort(port); + socketListener.setIntegralPort(port); + socketListener.setIntegralScheme("https"); + socketListener.setConfidentialScheme("https"); + } + + public static final GBeanInfo GBEAN_INFO; + + static { + GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty Connector HTTPS", HTTPSSocketConnector.class, JettyConnector.GBEAN_INFO); + infoFactory.addAttribute("algorithm", String.class, true, true); + infoFactory.addAttribute("secureProtocol", String.class, true, true); + infoFactory.addAttribute("keyStore", String.class, true, true); + infoFactory.addAttribute("keyAlias", String.class, true, true); + infoFactory.addAttribute("trustStore", String.class, true, true); + infoFactory.addAttribute("clientAuthRequired", boolean.class, true, true); + infoFactory.addAttribute("clientAuthRequested", boolean.class, true, true); + infoFactory.addReference("KeystoreManager", KeystoreManager.class, NameFactory.GERONIMO_SERVICE); + infoFactory.addInterface(JettySecureConnector.class); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool", "KeystoreManager"}); + GBEAN_INFO = infoFactory.getBeanInfo(); + } + + public static GBeanInfo getGBeanInfo() { + return GBEAN_INFO; + } + + // ================= NO LONGER USED!!! ===================== + // todo: remove these from the SSL interface + + public String getKeystoreFileName() { + return null; + } + + public void setKeystoreFileName(String name) { + } + + public void setKeystorePassword(String password) { + } + + public String getKeystoreType() { + return null; + } + + public void setKeystoreType(String type) { + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSSocketConnector.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +package org.apache.geronimo.jetty6.connector; + +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.jetty6.JettyContainer; +import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.system.threads.ThreadPool; +import org.mortbay.jetty.nio.SelectChannelConnector; + +/** + * @version $Rev$ $Date$ + */ +public class HTTPSelectChannelConnector extends JettyConnector { + public HTTPSelectChannelConnector(JettyContainer container, ThreadPool threadPool) { + super(container, new SelectChannelConnector(), threadPool, "HTTPSelectChannelConnector"); + } + + public String getProtocol() { + return WebManager.PROTOCOL_HTTP; + } + + public int getDefaultPort() { + return 80; + } + + public void setRedirectPort(int port) { + SelectChannelConnector connector = (SelectChannelConnector) listener; + connector.setConfidentialPort(port); + connector.setIntegralPort(port); + connector.setIntegralScheme("https"); + connector.setConfidentialScheme("https"); + } + + public static final GBeanInfo GBEAN_INFO; + + static { + GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty SelectChannel Connector HTTP", HTTPSelectChannelConnector.class, JettyConnector.GBEAN_INFO); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool"}); + GBEAN_INFO = infoFactory.getBeanInfo(); + } + + public static GBeanInfo getGBeanInfo() { + return GBEAN_INFO; + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSelectChannelConnector.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,62 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.geronimo.jetty6.connector; + +import org.apache.geronimo.gbean.GBeanInfo; +import org.apache.geronimo.gbean.GBeanInfoBuilder; +import org.apache.geronimo.jetty6.JettyContainer; +import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.system.threads.ThreadPool; +import org.mortbay.jetty.bio.SocketConnector; + +/** + * @version $Rev$ $Date$ + */ +public class HTTPSocketConnector extends JettyConnector { + public HTTPSocketConnector(JettyContainer container, ThreadPool threadPool) { + super(container, new SocketConnector(), threadPool, "HTTPSocketConnector"); + } + + public String getProtocol() { + return WebManager.PROTOCOL_HTTP; + } + + public int getDefaultPort() { + return 80; + } + + public void setRedirectPort(int port) { + SocketConnector socketListener = (SocketConnector) listener; + socketListener.setConfidentialPort(port); + socketListener.setIntegralPort(port); + socketListener.setIntegralScheme("https"); + socketListener.setConfidentialScheme("https"); + } + + public static final GBeanInfo GBEAN_INFO; + + static { + GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty BIO Connector HTTP", HTTPSocketConnector.class, JettyConnector.GBEAN_INFO); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool"}); + GBEAN_INFO = infoFactory.getBeanInfo(); + } + + public static GBeanInfo getGBeanInfo() { + return GBEAN_INFO; + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/HTTPSocketConnector.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyConnector.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyConnector.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyConnector.java (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyConnector.java Sat Jun 2 01:10:16 2007 @@ -27,10 +27,8 @@ import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory; import org.apache.geronimo.jetty6.JettyContainer; import org.apache.geronimo.jetty6.JettyWebConnector; +import org.apache.geronimo.system.threads.ThreadPool; import org.mortbay.jetty.AbstractConnector; -import org.mortbay.jetty.Connector; -import org.mortbay.jetty.bio.SocketConnector; -import org.mortbay.jetty.nio.SelectChannelConnector; /** * Base class for GBeans for Jetty network connectors (HTTP, HTTPS, AJP, etc.). @@ -40,7 +38,7 @@ public abstract class JettyConnector implements GBeanLifecycle, JettyWebConnector { public final static String CONNECTOR_CONTAINER_REFERENCE = "JettyContainer"; private final JettyContainer container; - protected final Connector listener; + protected final AbstractConnector listener; private String connectHost; /** @@ -51,14 +49,18 @@ listener = null; } - public JettyConnector(JettyContainer container) { + public JettyConnector(JettyContainer container, ThreadPool threadPool) { this.container = container; this.listener = null; } - public JettyConnector(JettyContainer container, Connector listener) { + public JettyConnector(JettyContainer container, AbstractConnector listener, ThreadPool threadPool, String name) { this.container = container; this.listener = listener; + if (threadPool != null) { + JettyThreadPool jettyThreadPool = new JettyThreadPool(threadPool, name); + listener.setThreadPool(jettyThreadPool); + } } //TODO: support the jetty6 specific methods @@ -108,11 +110,11 @@ } public int getMaxIdleTimeMs() { - return ((AbstractConnector) listener).getMaxIdleTime(); + return listener.getMaxIdleTime(); } public void setMaxIdleTimeMs(int idleTime) { - ((AbstractConnector) listener).setMaxIdleTime(idleTime); + listener.setMaxIdleTime(idleTime); } public int getBufferSizeBytes() { @@ -126,11 +128,11 @@ } public int getAcceptQueueSize() { - return ((AbstractConnector) listener).getAcceptQueueSize(); + return listener.getAcceptQueueSize(); } public void setAcceptQueueSize(int size) { - ((AbstractConnector) listener).setAcceptQueueSize(size); + listener.setAcceptQueueSize(size); } public int getLingerMillis() { @@ -138,7 +140,7 @@ } public void setLingerMillis(int millis) { - ((AbstractConnector) listener).setSoLingerTime(millis); + listener.setSoLingerTime(millis); } public boolean isTcpNoDelay() { @@ -151,12 +153,12 @@ public void setMaxThreads(int maxThreads) { //TODO: in jetty6 connectors have a number of acceptor threads - ((AbstractConnector) listener).setAcceptors(maxThreads); + listener.setAcceptors(maxThreads); } public int getMaxThreads() { //TODO: confirm that this is reasonable - return ((AbstractConnector) listener).getAcceptors(); + return listener.getAcceptors(); } public int getRedirectPort() { @@ -173,31 +175,7 @@ public void setRedirectPort(int port) { - if (listener instanceof SocketConnector) { - SocketConnector socketListener = (SocketConnector) listener; - socketListener.setConfidentialPort(port); - socketListener.setIntegralPort(port); - socketListener.setIntegralScheme("https"); - socketListener.setConfidentialScheme("https"); - } else if (listener instanceof SelectChannelConnector) { - SelectChannelConnector connector = (SelectChannelConnector) listener; - connector.setConfidentialPort(port); - connector.setIntegralPort(port); - connector.setIntegralScheme("https"); - connector.setConfidentialScheme("https"); - } - /* - * don't have one of these yet - else if(listener instanceof AJP13Listener) { - AJP13Listener ajpListener = (AJP13Listener) listener; - ajpListener.setConfidentialPort(port); - ajpListener.setIntegralPort(port); - ajpListener.setIntegralScheme("https"); - ajpListener.setConfidentialScheme("https"); - */ - else { - throw new UnsupportedOperationException(listener == null ? "No Listener" : listener.getClass().getName()); //todo: can this happen? - } + throw new UnsupportedOperationException("No redirect port on " + this.getClass().getName()); } public abstract String getProtocol(); @@ -236,12 +214,13 @@ static { GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Jetty HTTP Connector", JettyConnector.class); infoFactory.addReference(CONNECTOR_CONTAINER_REFERENCE, JettyContainer.class, NameFactory.GERONIMO_SERVICE); + infoFactory.addReference("ThreadPool", ThreadPool.class, NameFactory.GERONIMO_SERVICE); // removed 'minThreads' from persistent and manageable String[] // removed 'tcpNoDelay' from persistent String[] // added 'protocol' to persistent and manageable String[] infoFactory.addInterface(JettyWebConnector.class, new String[]{"host", "port", "minThreads", "maxThreads", "bufferSizeBytes", "acceptQueueSize", "lingerMillis", "protocol", "redirectPort", "connectUrl", "maxIdleTimeMs"}, new String[]{"host", "port", "redirectPort", "maxThreads", "minThreads", "protocol"}); - infoFactory.setConstructor(new String[]{"JettyContainer"}); + infoFactory.setConstructor(new String[]{"JettyContainer", "ThreadPool"}); GBEAN_INFO = infoFactory.getBeanInfo(); } } Added: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +package org.apache.geronimo.jetty6.connector; + +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.system.threads.ThreadPool; + +/** + * @version $Rev:$ $Date:$ + */ +public class JettyThreadPool implements org.mortbay.thread.ThreadPool { + + private static final Log log = LogFactory.getLog(JettyThreadPool.class); + private final ThreadPool executor; + private final String name; + + + public JettyThreadPool(ThreadPool executor, String name) { + this.executor = executor; + this.name = name; + } + + public boolean dispatch(Runnable runnable) { + try { + executor.execute(name, runnable); + return true; + } catch (RejectedExecutionException e) { + log.warn(e); + return false; + } catch (InterruptedException e) { + log.warn(e); + return false; + } + } + + public void join() throws InterruptedException { + //umm, this is doubtful + executor.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS); + } + + public int getThreads() { + return executor.getPoolSize(); + } + + public int getIdleThreads() { + return executor.getMaximumPoolSize() - executor.getPoolSize(); + } + + public boolean isLowOnThreads() { + return executor.getPoolSize() >= executor.getMaximumPoolSize(); + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/connector/JettyThreadPool.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/main/resources/META-INF/geronimo-dependency.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/main/resources/META-INF/geronimo-dependency.xml?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/main/resources/META-INF/geronimo-dependency.xml (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/main/resources/META-INF/geronimo-dependency.xml Sat Jun 2 01:10:16 2007 @@ -22,6 +22,14 @@ org.mortbay.jetty + jetty-ajp + + + org.mortbay.jetty + jetty-sslengine + + + org.mortbay.jetty jetty-util Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java Sat Jun 2 01:10:16 2007 @@ -29,7 +29,7 @@ import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator; import org.apache.geronimo.connector.outbound.connectiontracking.GeronimoTransactionListener; -import org.apache.geronimo.jetty6.connector.HTTPConnector; +import org.apache.geronimo.jetty6.connector.HTTPSelectChannelConnector; import org.apache.geronimo.security.SecurityServiceImpl; import org.apache.geronimo.security.deploy.DefaultPrincipal; import org.apache.geronimo.security.deploy.PrincipalInfo; @@ -56,7 +56,7 @@ public class AbstractWebModuleTest extends TestSupport { protected ClassLoader cl; protected final static String securityRealmName = "demo-properties-realm"; - private HTTPConnector connector; + private HTTPSelectChannelConnector connector; protected JettyContainerImpl container; private TransactionManager transactionManager; private ConnectionTrackingCoordinator connectionTrackingCoordinator; @@ -188,7 +188,7 @@ container = new JettyContainerImpl("test:name=JettyContainer", null); container.doStart(); - connector = new HTTPConnector(container); + connector = new HTTPSelectChannelConnector(container, null); connector.setPort(5678); connector.setMaxThreads(50); // connector.setMinThreads(10); Added: geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java?view=auto&rev=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java (added) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java Sat Jun 2 01:10:16 2007 @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +package org.apache.geronimo.jetty6.connector; + +import org.apache.geronimo.gbean.GBeanInfo; +import junit.framework.TestCase; + +/** + * @version $Rev:$ $Date:$ + */ +public class ConnectorGBeanTest extends TestCase { + + public void testGBeans() throws Exception { + GBeanInfo gBeanInfo = HTTPBlockingConnector.getGBeanInfo(); + gBeanInfo = HTTPSelectChannelConnector.getGBeanInfo(); + gBeanInfo = HTTPSocketConnector.getGBeanInfo(); + gBeanInfo = HTTPSSelectChannelConnector.getGBeanInfo(); + gBeanInfo = HTTPSSocketConnector.getGBeanInfo(); + } +} Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/ConnectorGBeanTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/HTTPConnectorTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/HTTPConnectorTest.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/HTTPConnectorTest.java (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/connector/HTTPConnectorTest.java Sat Jun 2 01:10:16 2007 @@ -25,7 +25,7 @@ * @version $Rev$ $Date$ */ public class HTTPConnectorTest extends TestCase { - private HTTPConnector connector; + private HTTPSocketConnector connector; public void testAddress() throws UnknownHostException { connector.setHost("localhost"); @@ -35,6 +35,6 @@ protected void setUp() throws Exception { super.setUp(); - connector = new HTTPConnector(null); + connector = new HTTPSocketConnector(null, null); } } Modified: geronimo/server/trunk/modules/geronimo-jetty6/src/test/resources/services/local.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty6/src/test/resources/services/local.xml?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-jetty6/src/test/resources/services/local.xml (original) +++ geronimo/server/trunk/modules/geronimo-jetty6/src/test/resources/services/local.xml Sat Jun 2 01:10:16 2007 @@ -18,7 +18,7 @@ - + 5678 geronimo.web:type=WebContainer,container=Jetty Modified: geronimo/server/trunk/modules/geronimo-management/src/main/java/org/apache/geronimo/management/geronimo/KeystoreManager.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-management/src/main/java/org/apache/geronimo/management/geronimo/KeystoreManager.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-management/src/main/java/org/apache/geronimo/management/geronimo/KeystoreManager.java (original) +++ geronimo/server/trunk/modules/geronimo-management/src/main/java/org/apache/geronimo/management/geronimo/KeystoreManager.java Sat Jun 2 01:10:16 2007 @@ -18,6 +18,7 @@ import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.SSLContext; /** * Management interface for working with keystores. Mostly this is used to @@ -130,4 +131,6 @@ * keystore is unlocked and contains at least one trust certificate. */ public KeystoreInstance[] getUnlockedTrustStores(); + + SSLContext createSSLContext(String provider, String protocol, String algorithm, String keyStore, String keyAlias, String trustStore, ClassLoader loader) throws KeystoreException; } Modified: geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java (original) +++ geronimo/server/trunk/modules/geronimo-security/src/main/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java Sat Jun 2 01:10:16 2007 @@ -43,6 +43,9 @@ import java.util.Vector; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.SSLEngine; +import javax.net.ssl.SSLContext; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.geronimo.gbean.AbstractName; @@ -290,6 +293,40 @@ * unlocked. */ public SSLServerSocketFactory createSSLServerFactory(String provider, String protocol, String algorithm, String keyStore, String keyAlias, String trustStore, ClassLoader loader) throws KeystoreException { + SSLContext sslContext = createSSLContext(provider, protocol, algorithm, keyStore, keyAlias, trustStore, loader); + // OMG this hurts, but it causes ClassCastExceptions elsewhere unless done this way! + try { + Object result = sslContext.getClass().getMethod("getServerSocketFactory", new Class[0]).invoke(sslContext, new Object[0]); + return (SSLServerSocketFactory) result; + } catch (Exception e) { + throw new KeystoreException("Unable to create SSL Server Factory", e); + } + } + + /** + * Gets a ServerSocketFactory using one Keystore to access the private key + * and another to provide the list of trusted certificate authorities. + * @param provider The SSL provider to use, or null for the default + * @param protocol The SSL protocol to use + * @param algorithm The SSL algorithm to use + * @param keyStore The key keystore name as provided by listKeystores. The + * KeystoreInstance for this keystore must be unlocked. + * @param keyAlias The name of the private key in the keystore. The + * KeystoreInstance for this keystore must have unlocked + * this key. + * @param trustStore The trust keystore name as provided by listKeystores. + * The KeystoreInstance for this keystore must have + * unlocked this key. + * @param loader The class loader used to resolve factory classes. + * + * @return SSLContext using the security info provided + * @throws KeystoreIsLocked Occurs when the requested key keystore cannot + * be used because it has not been unlocked. + * @throws KeyIsLocked Occurs when the requested private key in the key + * keystore cannot be used because it has not been + * unlocked. + */ + public SSLContext createSSLContext(String provider, String protocol, String algorithm, String keyStore, String keyAlias, String trustStore, ClassLoader loader) throws KeystoreException { KeystoreInstance keyInstance = getKeystore(keyStore); if(keyInstance.isKeystoreLocked()) { throw new KeystoreIsLocked("Keystore '"+keyStore+"' is locked; please use the keystore page in the admin console to unlock it"); @@ -312,10 +349,9 @@ cls.getMethod("init", new Class[]{kmc, tmc, src}).invoke(ctx, new Object[]{keyInstance.getKeyManager(algorithm, keyAlias, null), trustInstance == null ? null : trustInstance.getTrustManager(algorithm, null), new java.security.SecureRandom()}); - Object result = cls.getMethod("getServerSocketFactory", new Class[0]).invoke(ctx, new Object[0]); - return (SSLServerSocketFactory) result; + return (SSLContext) ctx; } catch (Exception e) { - throw new KeystoreException("Unable to create SSL Server Factory", e); + throw new KeystoreException("Unable to create SSL Context", e); } } Modified: geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/threads/ThreadPool.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/threads/ThreadPool.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/threads/ThreadPool.java (original) +++ geronimo/server/trunk/modules/geronimo-system/src/main/java/org/apache/geronimo/system/threads/ThreadPool.java Sat Jun 2 01:10:16 2007 @@ -16,16 +16,25 @@ */ package org.apache.geronimo.system.threads; +import java.util.concurrent.TimeUnit; + /** * Management interface for thread pools * * @version $Rev$ $Date$ */ public interface ThreadPool { + + int getPoolSize(); + /** * Gets the maximum number of threads allowed for this thread pool */ - int getPoolSize(); + int getMaximumPoolSize(); + + int getActiveCount(); + + boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException; /** * Executes work on behalf of a named client. This helps the thread pool Modified: geronimo/server/trunk/modules/geronimo-system/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-system/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/modules/geronimo-system/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java (original) +++ geronimo/server/trunk/modules/geronimo-system/src/test/java/org/apache/geronimo/system/plugin/PluginInstallerTest.java Sat Jun 2 01:10:16 2007 @@ -25,6 +25,8 @@ import java.util.List; import java.util.SortedSet; import java.util.TreeSet; +import java.util.concurrent.TimeUnit; + import junit.framework.TestCase; import org.apache.geronimo.gbean.AbstractName; import org.apache.geronimo.kernel.config.Configuration; @@ -65,6 +67,18 @@ new BasicServerInfo("."), new ThreadPool() { public int getPoolSize() { return 0; + } + + public int getMaximumPoolSize() { + return 0; + } + + public int getActiveCount() { + return 0; + } + + public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + return false; } public void execute(String consumerName, Runnable runnable) { Modified: geronimo/server/trunk/pom.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/pom.xml?view=diff&rev=543715&r1=543714&r2=543715 ============================================================================== --- geronimo/server/trunk/pom.xml (original) +++ geronimo/server/trunk/pom.xml Sat Jun 2 01:10:16 2007 @@ -1011,6 +1011,18 @@ org.mortbay.jetty + jetty-ajp + 6.1-SNAPSHOT + + + + org.mortbay.jetty + jetty-sslengine + 6.1-SNAPSHOT + + + + org.mortbay.jetty jetty-util 6.1-SNAPSHOT