You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2006/09/16 22:09:59 UTC
svn commit: r446934 [1/2] - in /geronimo/sandbox/javaee5: ./ modules-jee5/
modules-jee5/geronimo-jetty6/
modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/
modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/...
Author: djencks
Date: Sat Sep 16 13:09:57 2006
New Revision: 446934
URL: http://svn.apache.org/viewvc?view=rev&rev=446934
Log:
Initial hack of porting Jans' jetty6 work into the current geronimo code. Compiles, but some tests are disabled and there's a lot more work to do.
Added:
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/
- copied from r446787, geronimo/server/trunk/modules/geronimo-jetty/
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/DefaultSessionHandlerFactory.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java (with props)
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java (with props)
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/SessionHandlerFactory.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/ClusteredSessionHandler.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/ClusteredSessionHandlerFactory.java
Removed:
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/DefaultWebApplicationHandlerFactory.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/GeronimoServletHttpRequest.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/HandleInterceptor.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyWebApplicationHandler.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/WebApplicationHandlerFactory.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/ClusteredWebApplicationHandler.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/ClusteredWebApplicationHandlerFactory.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/RequestWrappingBeforeAfter.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/SecurityContextBeforeAfter.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/WebApplicationContextBeforeAfter.java
Modified:
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/pom.xml
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/InternalJAASJettyRealm.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JAASJettyRealm.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainer.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainerImpl.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyEJBWebServiceContext.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterHolder.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterMapping.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyManagerImpl.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyPOJOWebServiceHolder.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServer.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletHolder.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletRegistration.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyWebAppContext.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyWebConnector.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyWebContainerStatsImpl.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/NonAuthenticator.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/AbstractClusteredHandleInterceptor.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/cluster/ClusteredSessionManager.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/connector/AJP13Connector.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/connector/GeronimoSSLListener.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/connector/HTTPConnector.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/connector/HTTPSConnector.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/connector/JettyConnector.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/BeforeAfter.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/ComponentContextBeforeAfter.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/InstanceContextBeforeAfter.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/interceptor/ThreadClassloaderBeforeAfter.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/requestlog/JettyLogManagerImpl.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/requestlog/NCSARequestLog.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty/AbstractWebModuleTest.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty/ContainerTest.java
geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty/SecurityTest.java
geronimo/sandbox/javaee5/modules-jee5/pom.xml
geronimo/sandbox/javaee5/pom.xml
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/pom.xml?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/pom.xml (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/pom.xml Sat Sep 16 13:09:57 2006
@@ -23,12 +23,12 @@
<parent>
<groupId>org.apache.geronimo.modules</groupId>
- <artifactId>modules</artifactId>
+ <artifactId>modules-jee5</artifactId>
<version>1.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>geronimo-jetty</artifactId>
+ <artifactId>geronimo-jetty6</artifactId>
<name>Geronimo :: Jetty</name>
<dependencies>
@@ -64,8 +64,8 @@
</dependency>
<dependency>
- <groupId>jetty</groupId>
- <artifactId>org.mortbay.jetty</artifactId>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
</dependency>
<dependency>
Added: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/DefaultSessionHandlerFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/DefaultSessionHandlerFactory.java?view=auto&rev=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/DefaultSessionHandlerFactory.java (added)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/DefaultSessionHandlerFactory.java Sat Sep 16 13:09:57 2006
@@ -0,0 +1,41 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.jetty;
+
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.mortbay.jetty.servlet.SessionHandler;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DefaultSessionHandlerFactory implements SessionHandlerFactory {
+
+ public SessionHandler createHandler() {
+ //????
+ return null;
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(DefaultSessionHandlerFactory.class, NameFactory.GERONIMO_SERVICE);
+ infoBuilder.addInterface(SessionHandlerFactory.class);
+ GBEAN_INFO = infoBuilder.getBeanInfo();
+ }
+}
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/InternalJAASJettyRealm.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/InternalJAASJettyRealm.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/InternalJAASJettyRealm.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/InternalJAASJettyRealm.java Sat Sep 16 13:09:57 2006
@@ -21,6 +21,7 @@
import java.security.Principal;
import java.security.cert.X509Certificate;
import java.util.HashMap;
+
import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
@@ -28,12 +29,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.geronimo.jetty.interceptor.SecurityContextBeforeAfter;
import org.apache.geronimo.security.ContextManager;
import org.apache.geronimo.security.realm.providers.CertificateCallbackHandler;
import org.apache.geronimo.security.realm.providers.ClearableCallbackHandler;
import org.apache.geronimo.security.realm.providers.PasswordCallbackHandler;
-import org.mortbay.http.HttpRequest;
+import org.mortbay.jetty.Request;
/**
@@ -58,7 +58,7 @@
return (Principal) userMap.get(username);
}
- public Principal authenticate(String username, Object credentials, HttpRequest request) {
+ public Principal authenticate(String username, Object credentials, Request request) {
try {
if ((username != null) && (!username.equals(""))) {
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JAASJettyRealm.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JAASJettyRealm.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JAASJettyRealm.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JAASJettyRealm.java Sat Sep 16 13:09:57 2006
@@ -18,17 +18,14 @@
import java.security.Principal;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.mortbay.http.HttpRequest;
-import org.mortbay.http.UserRealm;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.security.UserRealm;
/**
* @version $Rev$ $Date$
*/
public class JAASJettyRealm implements UserRealm {
- private static Log log = LogFactory.getLog(JAASJettyRealm.class);
private final String webRealmName;
private final InternalJAASJettyRealm internalJAASJettyRealm;
@@ -46,7 +43,7 @@
return internalJAASJettyRealm.getPrincipal(username);
}
- public Principal authenticate(String username, Object credentials, HttpRequest request) {
+ public Principal authenticate(String username, Object credentials, Request request) {
return internalJAASJettyRealm.authenticate(username, credentials, request);
}
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainer.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainer.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainer.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainer.java Sat Sep 16 13:09:57 2006
@@ -17,23 +17,22 @@
package org.apache.geronimo.jetty;
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.HttpListener;
-import org.mortbay.http.RequestLog;
-import org.mortbay.http.UserRealm;
import org.apache.geronimo.management.geronimo.WebContainer;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.RequestLog;
+import org.mortbay.jetty.handler.ContextHandler;
/**
* @version $Rev$ $Date$
*/
public interface JettyContainer extends WebContainer {
- void addListener(HttpListener listener);
+ void addListener(Connector listener);
- void removeListener(HttpListener listener);
+ void removeListener(Connector listener);
- void addContext(HttpContext context);
+ void addContext(ContextHandler context);
- void removeContext(HttpContext context);
+ void removeContext(ContextHandler context);
InternalJAASJettyRealm addRealm(String realmName);
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainerImpl.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainerImpl.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyContainerImpl.java Sat Sep 16 13:09:57 2006
@@ -30,10 +30,15 @@
import org.apache.geronimo.management.geronimo.WebManager;
import org.apache.geronimo.webservices.SoapHandler;
import org.apache.geronimo.webservices.WebServiceContainer;
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.HttpListener;
-import org.mortbay.http.RequestLog;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.RequestLog;
import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.ContextHandler;
+import org.mortbay.jetty.handler.ContextHandlerCollection;
+import org.mortbay.jetty.handler.DefaultHandler;
+import org.mortbay.jetty.handler.HandlerCollection;
+import org.mortbay.jetty.handler.RequestLogHandler;
/**
* @version $Rev$ $Date$
@@ -45,10 +50,32 @@
private final WebManager manager;
private JettyWebContainerStatsImpl stats;
private final Map realms = new HashMap();
+ private HandlerCollection handlerCollection = new HandlerCollection();
+ private ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
+ private DefaultHandler defaultHandler = new DefaultHandler();
+ private RequestLogHandler requestLogHandler = new RequestLogHandler();
public JettyContainerImpl(String objectName, WebManager manager) {
this.objectName = objectName;
server = new JettyServer();
+
+ //set up the new jetty6 handler structure which is to have a HandlerCollection,
+ //each element of which is always tried on each request.
+ //The first element of the HandlerCollection is a
+ //ContextHandlerCollection, which is itself is a collection
+ //of Handlers. It's special property is that only of it's
+ //handlers will respond to a request.
+ //The second element of the HandlerCollection is a DefaultHandler
+ //which is responsible for serving static content or anything not
+ //handled by a Handler in the ContextHandlerCollection.
+ //The third element is the RequestLogHandler, which requires
+ //a RequestLog impl to be set.
+ Handler[] handlers = new Handler[3];
+ handlers[0] = contextHandlerCollection;
+ handlers[1] = defaultHandler;
+ handlers[2] = requestLogHandler;
+ server.setHandler(handlerCollection);
+
stats = new JettyWebContainerStatsImpl();
this.manager = manager;
}
@@ -78,63 +105,64 @@
}
public void resetStatistics() {
- server.statsReset();
+ //TODO: for jetty6
}
public void setCollectStatistics(boolean on) {
- server.setStatsOn(on);
- stats.setStatsOn(on);
+ //TODO: for jetty6
}
public boolean getCollectStatistics() {
- return server.getStatsOn();
+ //TODO: for jetty6
+ return false;
}
public long getCollectStatisticsStarted() {
- return server.getStatsOnMs();
+ //TODO: for jetty6
+ return 0L;
}
public Stats getStats() {
if (getCollectStatistics()) {
/* set active request count */
- stats.getTotalRequestCountImpl().setCount(server.getRequests());
+// stats.getTotalRequestCountImpl().setCount(server.getRequests());
/* set total connection count */
- stats.getTotalConnectionCountImpl().setCount(server.getConnections());
+// stats.getTotalConnectionCountImpl().setCount(server.getConnections());
/* set total error count */
- stats.getTotalErrorCountImpl().setCount(server.getErrors());
+// stats.getTotalErrorCountImpl().setCount(server.getErrors());
/* set active request range values */
- stats.getActiveRequestCountImpl().setCurrent(server.getRequestsActive());
- stats.getActiveRequestCountImpl().setLowWaterMark(server.getRequestsActiveMin());
- stats.getActiveRequestCountImpl().setHighWaterMark(server.getRequestsActiveMax());
+// stats.getActiveRequestCountImpl().setCurrent(server.getRequestsActive());
+// stats.getActiveRequestCountImpl().setLowWaterMark(server.getRequestsActiveMin());
+// stats.getActiveRequestCountImpl().setHighWaterMark(server.getRequestsActiveMax());
/* set connection requests range values */
// stats.getConnectionRequestCountImpl().setCurrent(server.getConnectionsRequestsCurrent()); // temporarily removed until added by jetty
- stats.getConnectionRequestCountImpl().setCurrent(server.getConnectionsOpen());
- stats.getConnectionRequestCountImpl().setLowWaterMark(server.getConnectionsRequestsMin());
- stats.getConnectionRequestCountImpl().setHighWaterMark(server.getConnectionsRequestsMax());
+// stats.getConnectionRequestCountImpl().setCurrent(server.getConnectionsOpen());
+// stats.getConnectionRequestCountImpl().setLowWaterMark(server.getConnectionsRequestsMin());
+// stats.getConnectionRequestCountImpl().setHighWaterMark(server.getConnectionsRequestsMax());
/* set open connection range values */
- stats.getOpenConnectionCountImpl().setCurrent(server.getConnectionsOpen());
- stats.getOpenConnectionCountImpl().setLowWaterMark(server.getConnectionsOpenMin());
- stats.getOpenConnectionCountImpl().setHighWaterMark(server.getConnectionsOpenMax());
+// stats.getOpenConnectionCountImpl().setCurrent(server.getConnectionsOpen());
+// stats.getOpenConnectionCountImpl().setLowWaterMark(server.getConnectionsOpenMin());
+// stats.getOpenConnectionCountImpl().setHighWaterMark(server.getConnectionsOpenMax());
/* set request duration time values */
- stats.getRequestDurationImpl().setMinTime(server.getRequestsDurationMin());
- stats.getRequestDurationImpl().setMaxTime(server.getRequestsDurationMax());
+// stats.getRequestDurationImpl().setMinTime(server.getRequestsDurationMin());
+// stats.getRequestDurationImpl().setMaxTime(server.getRequestsDurationMax());
// stats.getRequestDurationImpl().setCount(server.getRequestsDurationCount()); // temporarily removed until added by jetty
stats.getRequestDurationImpl().setCount(stats.getTotalRequestCount().getCount());
- stats.getRequestDurationImpl().setTotalTime(server.getRequestsDurationTotal());
+// stats.getRequestDurationImpl().setTotalTime(server.getRequestsDurationTotal());
/* set connection duration Time values */
- stats.getConnectionDurationImpl().setMinTime(server.getConnectionsDurationMin());
- stats.getConnectionDurationImpl().setMaxTime(server.getConnectionsDurationMax());
+// stats.getConnectionDurationImpl().setMinTime(server.getConnectionsDurationMin());
+// stats.getConnectionDurationImpl().setMaxTime(server.getConnectionsDurationMax());
// stats.getConnectionDurationImpl().setCount(server.getConnectionsDurationCount()); // temporarily removed until added by jetty
stats.getConnectionDurationImpl().setCount(stats.getTotalConnectionCount().getCount());
- stats.getConnectionDurationImpl().setTotalTime(server.getConnectionsDurationTotal());
+// stats.getConnectionDurationImpl().setTotalTime(server.getConnectionsDurationTotal());
} else {
// should probably set the stats object to all zero/null values to avoid unpredicable results
@@ -142,20 +170,20 @@
return stats;
}
- public void addListener(HttpListener listener) {
- server.addListener(listener);
+ public void addListener(Connector listener) {
+ server.addConnector(listener);
}
- public void removeListener(HttpListener listener) {
- server.removeListener(listener);
+ public void removeListener(Connector listener) {
+ server.removeConnector(listener);
}
- public void addContext(HttpContext context) {
- server.addContext(context);
+ public void addContext(ContextHandler context) {
+ server.addHandler(context);
}
- public void removeContext(HttpContext context) {
- server.removeContext(context);
+ public void removeContext(ContextHandler context) {
+ server.removeHandler(context);
}
public InternalJAASJettyRealm addRealm(String realmName) {
@@ -172,20 +200,20 @@
public void removeRealm(String realmName) {
InternalJAASJettyRealm realm = (InternalJAASJettyRealm) realms.get(realmName);
if (realm != null) {
- if (realm.removeUse() == 0){
+ if (realm.removeUse() == 0) {
realms.remove(realmName);
}
}
}
public void addWebService(String contextPath, String[] virtualHosts, WebServiceContainer webServiceContainer, String securityRealmName, String realmName, String transportGuarantee, String authMethod, ClassLoader classLoader) throws Exception {
- InternalJAASJettyRealm internalJAASJettyRealm = securityRealmName == null? null:addRealm(securityRealmName);
+ InternalJAASJettyRealm internalJAASJettyRealm = securityRealmName == null ? null : addRealm(securityRealmName);
JettyEJBWebServiceContext webServiceContext = new JettyEJBWebServiceContext(contextPath, webServiceContainer, internalJAASJettyRealm, realmName, transportGuarantee, authMethod, classLoader);
- webServiceContext.setHosts(virtualHosts);
+ webServiceContext.setVirtualHosts(virtualHosts);
addContext(webServiceContext);
webServiceContext.start();
webServices.put(contextPath, webServiceContext);
- }
+ }
public void removeWebService(String contextPath) {
JettyEJBWebServiceContext webServiceContext = (JettyEJBWebServiceContext) webServices.remove(contextPath);
@@ -193,16 +221,20 @@
if (securityRealmName != null) {
removeRealm(securityRealmName);
}
- removeContext(webServiceContext);
+ try {
+ removeContext(webServiceContext);
+ } catch (Exception e) {
+ throw new IllegalStateException(e.getMessage());
+ }
}
public void setRequestLog(RequestLog log) {
- server.setRequestLog(log);
+ this.requestLogHandler.setRequestLog(log);
}
/* ------------------------------------------------------------ */
public RequestLog getRequestLog() {
- return server.getRequestLog();
+ return this.requestLogHandler.getRequestLog();
}
public void doStart() throws Exception {
@@ -211,15 +243,15 @@
public void doStop() {
try {
- server.stop(true);
- } catch (InterruptedException e) {
+ server.stop();
+ } catch (Exception e) {
}
}
public void doFail() {
try {
- server.stop(false);
- } catch (InterruptedException e) {
+ server.stop();
+ } catch (Exception e) {
// continue
}
}
@@ -234,10 +266,10 @@
infoBuilder.addAttribute("requestLog", RequestLog.class, false, false);
- infoBuilder.addOperation("addListener", new Class[]{HttpListener.class});
- infoBuilder.addOperation("removeListener", new Class[]{HttpListener.class});
- infoBuilder.addOperation("addContext", new Class[]{HttpContext.class});
- infoBuilder.addOperation("removeContext", new Class[]{HttpContext.class});
+ infoBuilder.addOperation("addListener", new Class[]{Connector.class});
+ infoBuilder.addOperation("removeListener", new Class[]{Connector.class});
+ infoBuilder.addOperation("addContext", new Class[]{ContextHandler.class});
+ infoBuilder.addOperation("removeContext", new Class[]{ContextHandler.class});
infoBuilder.addOperation("addRealm", new Class[]{String.class});
infoBuilder.addOperation("removeRealm", new Class[]{String.class});
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyEJBWebServiceContext.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyEJBWebServiceContext.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyEJBWebServiceContext.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyEJBWebServiceContext.java Sat Sep 16 13:09:57 2006
@@ -26,15 +26,14 @@
import org.apache.geronimo.security.ContextManager;
import org.apache.geronimo.webservices.WebServiceContainer;
-import org.mortbay.http.Authenticator;
-import org.mortbay.http.BasicAuthenticator;
-import org.mortbay.http.ClientCertAuthenticator;
-import org.mortbay.http.DigestAuthenticator;
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.HttpException;
-import org.mortbay.http.HttpHandler;
-import org.mortbay.http.HttpRequest;
-import org.mortbay.http.HttpResponse;
+import org.mortbay.jetty.HttpException;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Response;
+import org.mortbay.jetty.handler.ContextHandler;
+import org.mortbay.jetty.security.Authenticator;
+import org.mortbay.jetty.security.BasicAuthenticator;
+import org.mortbay.jetty.security.ClientCertAuthenticator;
+import org.mortbay.jetty.security.DigestAuthenticator;
/**
* Delegates requests to a WebServiceContainer which is presumably for an EJB WebService.
@@ -60,7 +59,7 @@
*
* @version $Rev$ $Date$
*/
-public class JettyEJBWebServiceContext extends HttpContext implements HttpHandler {
+public class JettyEJBWebServiceContext extends ContextHandler {
private final String contextPath;
private final WebServiceContainer webServiceContainer;
@@ -70,14 +69,15 @@
private final boolean isIntegralTransportGuarantee;
private final ClassLoader classLoader;
- private HttpContext httpContext;
public JettyEJBWebServiceContext(String contextPath, WebServiceContainer webServiceContainer, InternalJAASJettyRealm internalJAASJettyRealm, String realmName, String transportGuarantee, String authMethod, ClassLoader classLoader) {
this.contextPath = contextPath;
this.webServiceContainer = webServiceContainer;
if (internalJAASJettyRealm != null) {
JAASJettyRealm realm = new JAASJettyRealm(realmName, internalJAASJettyRealm);
- setRealm(realm);
+ //TODO
+ //not used???
+ //setUserRealm(realm);
this.realm = realm;
if ("NONE".equals(transportGuarantee)) {
isConfidentialTransportGuarantee = false;
@@ -116,16 +116,13 @@
return contextPath;
}
- public HttpContext getHttpContext() {
- return httpContext;
- }
-
- public void initialize(HttpContext httpContext) {
- this.httpContext = httpContext;
- }
+ public boolean handle(Request req, Response res) throws HttpException, IOException {
+ //TODO
+ //shouldn't set this on the request !
+ //req.setContentType("text/xml");
- public void handle(HttpRequest req, HttpResponse res) throws HttpException, IOException {
- req.setContentType("text/xml");
+ //TODO
+ //do we need to check that this request should be handled by this handler?
RequestAdapter request = new RequestAdapter(req);
ResponseAdapter response = new ResponseAdapter(res);
@@ -133,6 +130,7 @@
try {
webServiceContainer.getWsdl(request, response);
//WHO IS RESPONSIBLE FOR CLOSING OUT?
+ return true;
} catch (IOException e) {
throw e;
} catch (Exception e) {
@@ -140,12 +138,12 @@
}
} else {
if (isConfidentialTransportGuarantee) {
- if (!req.isConfidential()) {
- throw new HttpException(403);
+ if (!req.isSecure()) {
+ throw new HttpException(403, null);
}
} else if (isIntegralTransportGuarantee) {
- if (!req.isIntegral()) {
- throw new HttpException(403);
+ if (!req.getConnection().isIntegral(req)) {
+ throw new HttpException(403, null);
}
}
Thread currentThread = Thread.currentThread();
@@ -155,9 +153,9 @@
// Subject oldSubject = ContextManager.getCurrentCaller();
try {
if (authenticator != null) {
- String pathInContext = org.mortbay.util.URI.canonicalPath(req.getPath());
+ String pathInContext = org.mortbay.util.URIUtil.canonicalPath(req.getContextPath());
if (authenticator.authenticate(realm, pathInContext, req, res) == null) {
- throw new HttpException(403);
+ throw new HttpException(403, null);
}
} else {
//EJB will figure out correct defaultSubject shortly
@@ -167,7 +165,7 @@
}
try {
webServiceContainer.invoke(request, response);
- req.setHandled(true);
+ return true;
} catch (IOException e) {
throw e;
} catch (Exception e) {
@@ -194,21 +192,21 @@
}
public static class RequestAdapter implements WebServiceContainer.Request {
- private final HttpRequest request;
+ private final Request request;
private URI uri;
- public RequestAdapter(HttpRequest request) {
+ public RequestAdapter(Request request) {
this.request = request;
}
public String getHeader(String name) {
- return request.getField(name);
+ return request.getHeader(name);
}
public java.net.URI getURI() {
if (uri == null) {
try {
- String uriString = request.getScheme() + "://" + request.getHost() + ":" + request.getPort() + request.getURI();
+ String uriString = request.getScheme() + "://" + request.getRemoteHost() + ":" + request.getRemotePort() + request.getRequestURI();
//return new java.net.URI(uri.getScheme(),uri.getHost(),uri.getPath(),uri.);
uri = new java.net.URI(uriString);
} catch (URISyntaxException e) {
@@ -268,22 +266,26 @@
}
public static class ResponseAdapter implements WebServiceContainer.Response {
- private final HttpResponse response;
+ private final Response response;
- public ResponseAdapter(HttpResponse response) {
+ public ResponseAdapter(Response response) {
this.response = response;
}
public void setHeader(String name, String value) {
- response.setField(name, value);
+ response.setHeader(name, value);
}
public String getHeader(String name) {
- return response.getField(name);
+ return response.getHeader(name);
}
public OutputStream getOutputStream() {
- return response.getOutputStream();
+ try {
+ return response.getOutputStream();
+ } catch (IOException e) {
+ throw new IllegalStateException(e.getMessage());
+ }
}
public void setStatusCode(int code) {
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterHolder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterHolder.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterHolder.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterHolder.java Sat Sep 16 13:09:57 2006
@@ -22,7 +22,6 @@
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.mortbay.jetty.servlet.FilterHolder;
-import org.mortbay.jetty.servlet.WebApplicationHandler;
/**
* @version $Rev$ $Date$
@@ -34,11 +33,13 @@
}
public JettyFilterHolder(String filterName, String filterClass, Map initParams, JettyServletRegistration jettyServletRegistration) throws Exception {
- super(jettyServletRegistration == null? null: jettyServletRegistration.getServletHandler(), filterName, filterClass);
+ super();
if (jettyServletRegistration != null) {
- ((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterHolder(this);
- putAll(initParams);
-
+ setName(filterName);
+ setClassName(filterClass);
+ setInitParameters(initParams);
+ (jettyServletRegistration.getServletHandler()).addFilter(this);
+
ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
try {
ClassLoader newCL = jettyServletRegistration.getWebClassLoader();
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterMapping.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterMapping.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterMapping.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyFilterMapping.java Sat Sep 16 13:09:57 2006
@@ -17,90 +17,93 @@
package org.apache.geronimo.jetty;
import java.io.Serializable;
+import java.util.Set;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.mortbay.jetty.servlet.Dispatcher;
-import org.mortbay.jetty.servlet.WebApplicationHandler;
+import org.mortbay.jetty.servlet.FilterMapping;
+import org.mortbay.jetty.Handler;
/**
* @version $Rev$ $Date$
*/
-public class JettyFilterMapping implements Serializable {
+public class JettyFilterMapping extends FilterMapping implements Serializable {
- private final String urlPattern;
+ private final String[] urlPatterns;
private final boolean requestDispatch;
private final boolean forwardDispatch;
private final boolean includeDispatch;
private final boolean errorDispatch;
private final JettyFilterHolder jettyFilterHolder;
- private final JettyServletHolder jettyServletHolder;
+ private final Set jettyServletHolders;
private final JettyFilterMapping previous;
private final JettyServletRegistration jettyServletRegistration;
//todo use an interface for endpoints.
public JettyFilterMapping() {
- this.urlPattern = null;
+ this.urlPatterns = null;
this.requestDispatch = false;
this.forwardDispatch = false;
this.includeDispatch = false;
this.errorDispatch = false;
this.jettyFilterHolder = null;
- this.jettyServletHolder = null;
+ this.jettyServletHolders = null;
this.previous = null;
this.jettyServletRegistration = null;
}
- public JettyFilterMapping(String urlPattern,
+ public JettyFilterMapping(String[] urlPatterns,
boolean requestDispatch,
boolean forwardDispatch,
boolean includeDispatch,
boolean errorDispatch,
JettyFilterHolder jettyFilterHolder,
- JettyServletHolder jettyServletHolder,
+ Set jettyServletHolders,
JettyFilterMapping previous,
JettyServletRegistration jettyServletRegistration) {
- this.urlPattern = urlPattern;
+ this.urlPatterns = urlPatterns;
this.requestDispatch = requestDispatch;
this.forwardDispatch = forwardDispatch;
this.includeDispatch = includeDispatch;
this.errorDispatch = errorDispatch;
this.jettyFilterHolder = jettyFilterHolder;
- this.jettyServletHolder = jettyServletHolder;
+ this.jettyServletHolders = jettyServletHolders;
this.previous = previous;
this.jettyServletRegistration = jettyServletRegistration;
if (jettyServletRegistration != null) {
- assert jettyServletHolder != null ^ urlPattern != null;
+ assert jettyServletHolders != null ^ urlPatterns != null;
String filterName = jettyFilterHolder.getFilterName();
int dispatches = 0;
if (requestDispatch) {
- dispatches |= Dispatcher.__REQUEST;
+ dispatches |= Handler.REQUEST;
}
if (forwardDispatch) {
- dispatches |= Dispatcher.__FORWARD;
+ dispatches |= Handler.FORWARD;
}
if (includeDispatch) {
- dispatches |= Dispatcher.__INCLUDE;
+ dispatches |= Handler.INCLUDE;
}
if (errorDispatch) {
- dispatches |= Dispatcher.__ERROR;
+ dispatches |= Handler.ERROR;
}
- if (jettyServletHolder == null) {
- ((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterPathMapping(urlPattern, filterName, dispatches);
- } else {
- String servletName = jettyServletHolder.getServletName();
- ((WebApplicationHandler)jettyServletRegistration.getServletHandler()).addFilterServletMapping(servletName, filterName, dispatches);
- }
+ setFilterName(filterName);
+ setDispatches(dispatches);
+ setPathSpecs(urlPatterns);
+ if (jettyServletHolders != null)
+ setServletNames((String[])jettyServletHolders.toArray(new String[0]));
+
+ (jettyServletRegistration.getServletHandler()).addFilterMapping(this);
}
}
- public String getUrlPattern() {
- return urlPattern;
+ public String[] getUrlPatterns() {
+ return urlPatterns;
}
public boolean isRequestDispatch() {
@@ -123,8 +126,8 @@
return jettyFilterHolder;
}
- public JettyServletHolder getServlet() {
- return jettyServletHolder;
+ public Set getServlets() {
+ return jettyServletHolders;
}
public JettyFilterMapping getPrevious() {
@@ -139,24 +142,24 @@
static {
GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(JettyFilterMapping.class, NameFactory.URL_WEB_FILTER_MAPPING);
- infoBuilder.addAttribute("urlPattern", String.class, true);
+ infoBuilder.addAttribute("urlPatterns", String[].class, true);
infoBuilder.addAttribute("requestDispatch", boolean.class, true);
infoBuilder.addAttribute("forwardDispatch", boolean.class, true);
infoBuilder.addAttribute("includeDispatch", boolean.class, true);
infoBuilder.addAttribute("errorDispatch", boolean.class, true);
infoBuilder.addReference("Filter", JettyFilterHolder.class, NameFactory.WEB_FILTER);
- infoBuilder.addReference("Servlet", JettyServletHolder.class, NameFactory.SERVLET);
+ infoBuilder.addReference("Servlets", JettyServletHolder.class, NameFactory.SERVLET);
infoBuilder.addReference("Previous", JettyFilterMapping.class, NameFactory.URL_WEB_FILTER_MAPPING);
infoBuilder.addReference("JettyServletRegistration", JettyServletRegistration.class, NameFactory.WEB_MODULE);
- infoBuilder.setConstructor(new String[]{"urlPattern",
+ infoBuilder.setConstructor(new String[]{"urlPatterns",
"requestDispatch",
"forwardDispatch",
"includeDispatch",
"errorDispatch",
"Filter",
- "Servlet",
+ "Servlets",
"Previous",
"JettyServletRegistration"});
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyManagerImpl.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyManagerImpl.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyManagerImpl.java Sat Sep 16 13:09:57 2006
@@ -20,6 +20,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.gbean.AbstractName;
@@ -36,7 +37,6 @@
import org.apache.geronimo.jetty.requestlog.JettyLogManager;
import org.apache.geronimo.kernel.GBeanNotFoundException;
import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.kernel.repository.Artifact;
import org.apache.geronimo.kernel.config.ConfigurationUtil;
import org.apache.geronimo.kernel.config.EditableConfigurationManager;
import org.apache.geronimo.kernel.config.InvalidConfigException;
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyPOJOWebServiceHolder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyPOJOWebServiceHolder.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyPOJOWebServiceHolder.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyPOJOWebServiceHolder.java Sat Sep 16 13:09:57 2006
@@ -17,7 +17,6 @@
package org.apache.geronimo.jetty;
import java.io.IOException;
-import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -27,6 +26,7 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
+import javax.servlet.http.HttpServletRequest;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
@@ -35,8 +35,8 @@
import org.apache.geronimo.webservices.POJOWebServiceServlet;
import org.apache.geronimo.webservices.WebServiceContainer;
import org.apache.geronimo.webservices.WebServiceContainerInvoker;
+import org.mortbay.jetty.Request;
import org.mortbay.jetty.servlet.ServletHolder;
-import org.mortbay.jetty.servlet.ServletHttpRequest;
/**
@@ -57,21 +57,23 @@
}
public JettyPOJOWebServiceHolder(String pojoClassName,
- String servletName,
- Map initParams,
- Integer loadOnStartup,
- Set servletMappings,
- WebServiceContainer webServiceContainer,
- ServletHolder previous, //dependency for startup ordering
- JettyServletRegistration context) throws Exception {
- super(context == null ? null : context.getServletHandler(), servletName, POJOWebServiceServlet.class.getName(), null);
+ String servletName,
+ Map initParams,
+ Integer loadOnStartup,
+ Set servletMappings,
+ WebServiceContainer webServiceContainer,
+ ServletHolder previous, //dependency for startup ordering
+ JettyServletRegistration context) throws Exception {
+ super();
//context will be null only for use as "default servlet info holder" in deployer.
this.pojoClassName = pojoClassName;
this.context = context;
this.webServiceContainer = webServiceContainer;
if (context != null) {
- putAll(initParams);
+ setName(servletName);
+ setClassName(POJOWebServiceServlet.class.getName());
+ setInitParameters(initParams);
if (loadOnStartup != null) {
setInitOrder(loadOnStartup.intValue());
}
@@ -97,7 +99,7 @@
// request.setAttribute(POJOWebServiceServlet.WEBSERVICE_CONTAINER, webServiceContainer);
JettyServletHolder.setCurrentServletName(getServletName());
- PolicyContext.setHandlerData(ServletHttpRequest.unwrap(request));
+ PolicyContext.setHandlerData(Request.getRequest((HttpServletRequest) request));
super.handle(request, response);
}
@@ -115,12 +117,12 @@
// put a reference the ID in the init-params
// put the WebServiceContainer in the webapp context keyed by its ID
String webServicecontainerID = getServletName() + WebServiceContainerInvoker.WEBSERVICE_CONTAINER + webServiceContainer.hashCode();
- put(WebServiceContainerInvoker.WEBSERVICE_CONTAINER, webServicecontainerID);
+ setInitParameter(WebServiceContainerInvoker.WEBSERVICE_CONTAINER, webServicecontainerID);
servletContext.setAttribute(webServicecontainerID, webServiceContainer);
// Same for the POJO Class
String pojoClassID = getServletName() + POJOWebServiceServlet.POJO_CLASS + pojoClass.hashCode();
- put(POJOWebServiceServlet.POJO_CLASS, pojoClassID);
+ setInitParameter(POJOWebServiceServlet.POJO_CLASS, pojoClassID);
servletContext.setAttribute(pojoClassID, pojoClass);
//this now starts the servlet in the appropriate context
@@ -130,7 +132,7 @@
}
}
- public void doStop() throws Exception {
+ public void doStop() {
}
public void doFail() {
@@ -153,13 +155,13 @@
infoBuilder.addReference("JettyServletRegistration", JettyServletRegistration.class);
infoBuilder.setConstructor(new String[]{"pojoClassName",
- "servletName",
- "initParams",
- "loadOnStartup",
- "servletMappings",
- "webServiceContainer",
- "Previous",
- "JettyServletRegistration"});
+ "servletName",
+ "initParams",
+ "loadOnStartup",
+ "servletMappings",
+ "webServiceContainer",
+ "Previous",
+ "JettyServletRegistration"});
GBEAN_INFO = infoBuilder.getBeanInfo();
}
Added: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java?view=auto&rev=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java (added)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java Sat Sep 16 13:09:57 2006
@@ -0,0 +1,304 @@
+/**
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.jetty;
+
+import java.io.IOException;
+import java.security.AccessControlContext;
+import java.security.AccessControlException;
+import java.security.PermissionCollection;
+import java.security.Principal;
+
+import javax.security.auth.Subject;
+import javax.security.jacc.PolicyContext;
+import javax.security.jacc.WebResourcePermission;
+import javax.security.jacc.WebUserDataPermission;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.common.GeronimoSecurityException;
+import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.IdentificationPrincipal;
+import org.apache.geronimo.security.SubjectId;
+import org.apache.geronimo.security.Callers;
+import org.apache.geronimo.security.deploy.DefaultPrincipal;
+import org.apache.geronimo.security.util.ConfigurationUtil;
+import org.mortbay.jetty.HttpException;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Response;
+import org.mortbay.jetty.security.Authenticator;
+import org.mortbay.jetty.security.FormAuthenticator;
+import org.mortbay.jetty.security.SecurityHandler;
+
+public class JettySecurityHandler extends SecurityHandler {
+
+ private String policyContextID;
+
+ private JAASJettyPrincipal defaultPrincipal;
+
+ private String formLoginPath;
+
+ private PermissionCollection checked;
+
+ private PermissionCollection excludedPermissions;
+
+
+ private JAASJettyRealm realm;
+
+ public JettySecurityHandler() {
+ }
+
+ public void init(String policyContextID,
+ DefaultPrincipal defaultPrincipal,
+ PermissionCollection checkedPermissions,
+ PermissionCollection excludedPermissions,
+ ClassLoader classLoader) {
+ this.policyContextID = policyContextID;
+
+ this.defaultPrincipal = generateDefaultPrincipal(defaultPrincipal,classLoader);
+ this.checked = checkedPermissions;
+ this.excludedPermissions = excludedPermissions;
+
+ Authenticator authenticator = getAuthenticator();
+ if (authenticator instanceof FormAuthenticator) {
+ String formLoginPath = ((FormAuthenticator) authenticator).getLoginPage();
+ if (formLoginPath.indexOf('?') > 0) {
+ formLoginPath = formLoginPath.substring(0, formLoginPath.indexOf('?'));
+ }
+ this.formLoginPath = formLoginPath;
+ } else {
+ formLoginPath = null;
+ }
+
+ /**
+ * Register our default principal with the ContextManager
+ */
+ Subject defaultSubject = this.defaultPrincipal.getSubject();
+ ContextManager.registerSubject(defaultSubject);
+ SubjectId id = ContextManager.getSubjectId(defaultSubject);
+ defaultSubject.getPrincipals().add(new IdentificationPrincipal(id));
+ this.realm = (JAASJettyRealm)getUserRealm();
+ assert realm != null;
+ }
+
+ public void doStop(JettyContainer jettyContainer) throws Exception {
+ try{
+ super.doStop();
+ }
+ finally {
+ Subject defaultSubject = this.defaultPrincipal.getSubject();
+ ContextManager.unregisterSubject(defaultSubject);
+ jettyContainer.removeRealm(realm.getSecurityRealmName());
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see org.mortbay.jetty.security.SecurityHandler#handle(java.lang.String,
+ * javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse, int)
+ */
+ public void handle(String target, HttpServletRequest request,
+ HttpServletResponse response, int dispatch) throws IOException,
+ ServletException {
+ String old_policy_id = PolicyContext.getContextID();
+ Callers oldCallers = ContextManager.getCallers();
+
+ try {
+ PolicyContext.setContextID(policyContextID);
+ PolicyContext.setHandlerData(request);
+
+ super.handle(target, request, response, dispatch);
+ } finally {
+ PolicyContext.setContextID(old_policy_id);
+ ContextManager.popCallers(oldCallers);
+ }
+ }
+
+// public static Subject getCurrentRoleDesignate(String role) {
+// return ((JettySecurityHandler) (WebAppContext.getCurrentWebAppContext()
+// .getSecurityHandler())).getRoleDesignate(role);
+// }
+//
+// private Subject getRoleDesignate(String roleName) {
+// return (Subject) roleDesignates.get(roleName);
+// }
+
+ /**
+ * Check the security constraints using JACC.
+ *
+ * @param pathInContext
+ * path in context
+ * @param request
+ * HTTP request
+ * @param response
+ * HTTP response
+ * @return true if the path in context passes the security check, false if
+ * it fails or a redirection has occured during authentication.
+ */
+ public boolean checkSecurityConstraints(String pathInContext,
+ Request request, Response response) throws HttpException,
+ IOException {
+ if (formLoginPath != null) {
+ String pathToBeTested = (pathInContext.indexOf('?') > 0 ? pathInContext
+ .substring(0, pathInContext.indexOf('?'))
+ : pathInContext);
+
+ if (pathToBeTested.equals(formLoginPath)) {
+ return true;
+ }
+ }
+
+ try {
+ String transportType;
+ if (request.isSecure()) {
+ transportType = "CONFIDENTIAL";
+ } else if (request.getConnection().isIntegral(request)) {
+ transportType = "INTEGRAL";
+ } else {
+ transportType = "NONE";
+ }
+ WebUserDataPermission wudp = new WebUserDataPermission(request
+ .getServletPath(), new String[] { request.getMethod() },
+ transportType);
+ WebResourcePermission webResourcePermission = new WebResourcePermission(
+ request);
+ Principal user = obtainUser(pathInContext, request, response,
+ webResourcePermission, wudp);
+
+ if (user == null) {
+ return false;
+ }
+ if (user == SecurityHandler.__NOBODY) {
+ return true;
+ }
+
+ AccessControlContext acc = ContextManager.getCurrentContext();
+
+ /**
+ * JACC v1.0 secion 4.1.1
+ */
+
+ acc.checkPermission(wudp);
+
+ /**
+ * JACC v1.0 secion 4.1.2
+ */
+ acc.checkPermission(webResourcePermission);
+ } catch (HttpException he) {
+ response.sendError(he.getStatus(), he.getReason());
+ return false;
+ } catch (AccessControlException ace) {
+ response.sendError(403);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Obtain an authenticated user, if one is required. Otherwise return the
+ * default principal. <p/> Also set the current caller for JACC security
+ * checks for the default principal. This is automatically done by
+ * <code>JAASJettyRealm</code>.
+ *
+ * @param pathInContext
+ * path in context
+ * @param request
+ * HTTP request
+ * @param response
+ * HTTP response
+ * @return <code>null</code> if there is no authenticated user at the
+ * moment and security checking should not proceed and servlet
+ * handling should also not proceed, e.g. redirect.
+ * <code>SecurityConstraint.__NOBODY</code> if security checking
+ * should not proceed and servlet handling should proceed, e.g.
+ * login page.
+ */
+ private Principal obtainUser(String pathInContext, Request request,
+ Response response, WebResourcePermission resourcePermission,
+ WebUserDataPermission dataPermission) throws IOException {
+ boolean unauthenticated = !(checked.implies(resourcePermission) || checked
+ .implies(dataPermission));
+ boolean forbidden = excludedPermissions.implies(resourcePermission)
+ || excludedPermissions.implies(dataPermission);
+
+ Authenticator authenticator = getAuthenticator();
+ if (!unauthenticated && !forbidden) {
+ return authenticator.authenticate(realm, pathInContext, request,
+ response);
+ } else if (authenticator instanceof FormAuthenticator
+ && pathInContext.endsWith(FormAuthenticator.__J_SECURITY_CHECK)) {
+ /**
+ * This could be a post request to __J_SECURITY_CHECK.
+ */
+ return authenticator.authenticate(realm, pathInContext, request,
+ response);
+ }
+
+ // attempt to access an unprotected resource that is not the
+ // j_security_check.
+ // if we are logged in, return the logged in principal.
+ if (request != null) {
+ // null response appears to prevent redirect to login page
+ Principal user = authenticator.authenticate(realm, pathInContext,
+ request, null);
+ if (user != null) {
+ return user;
+ }
+ }
+
+ /**
+ * No authentication is required. Return the defaultPrincipal.
+ */
+ //TODO use run-as as nextCaller if present
+ ContextManager.setCallers(defaultPrincipal.getSubject(), defaultPrincipal.getSubject());
+ return defaultPrincipal;
+ }
+
+ /**
+ * Generate the default principal from the security config.
+ *
+ * @param defaultPrincipal
+ * The Geronimo security configuration.
+ * @param classLoader
+ * @return the default principal
+ */
+ protected JAASJettyPrincipal generateDefaultPrincipal(
+ DefaultPrincipal defaultPrincipal, ClassLoader classLoader)
+ throws GeronimoSecurityException {
+
+ if (defaultPrincipal == null) {
+ throw new GeronimoSecurityException(
+ "Unable to generate default principal");
+ }
+
+ try {
+ JAASJettyPrincipal result = new JAASJettyPrincipal("default");
+ Subject defaultSubject = ConfigurationUtil.generateDefaultSubject(
+ defaultPrincipal, classLoader);
+
+ result.setSubject(defaultSubject);
+
+ return result;
+ } catch (DeploymentException de) {
+ throw new GeronimoSecurityException(
+ "Unable to generate default principal", de);
+ }
+ }
+
+}
Propchange: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettySecurityHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServer.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServer.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServer.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServer.java Sat Sep 16 13:09:57 2006
@@ -16,27 +16,55 @@
*/
package org.apache.geronimo.jetty;
-import org.mortbay.http.UserRealm;
import org.mortbay.jetty.Server;
+import org.mortbay.jetty.security.UserRealm;
/**
* JettyServer extends the base Jetty Server class to prevent managing any user realm information by the web.xml realm name
* which is only relevant for basic and digest authentication and should not be tied to any
* actual information about which security realm is in use.
- *
+ *
* @version $Rev$ $Date$
*/
public class JettyServer extends Server {
+ public void addUserRealms(UserRealm[] realms) {
+ throw new IllegalArgumentException("You must supply a security-realm-name to every web module using security features");
+ }
+
+ public void addUserRealm(UserRealm realm) {
+ throw new IllegalArgumentException("You must supply a security-realm-name to every web module using security features");
+ }
+
+ /**
+ * TODO maybe remove intead?
+ *
+ * @param realm
+ * @return
+ * @deprecated
+ */
public UserRealm addRealm(UserRealm realm) {
throw new IllegalArgumentException("You must supply a security-realm-name to every web module using security features");
}
+ /**
+ * TODO maybe remove instead?
+ *
+ * @param realmName
+ * @return
+ * @deprecated
+ */
public UserRealm getRealm(String realmName) {
throw new IllegalArgumentException("You must supply a security-realm-name to every web module using security features");
}
+ /**
+ * TODO maybe remove instead?
+ *
+ * @param realm
+ * @deprecated
+ */
public synchronized void removeRealm(UserRealm realm) {
throw new IllegalArgumentException("You must supply a security-realm-name to every web module using security features");
}
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletHolder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletHolder.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletHolder.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletHolder.java Sat Sep 16 13:09:57 2006
@@ -20,19 +20,18 @@
import java.util.Map;
import java.util.Set;
+import javax.security.auth.Subject;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
-import javax.security.auth.Subject;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.management.Servlet;
-import org.apache.geronimo.security.ContextManager;
import org.apache.geronimo.security.Callers;
-
+import org.apache.geronimo.security.ContextManager;
import org.mortbay.jetty.servlet.ServletHolder;
@@ -67,11 +66,14 @@
Subject runAsSubject,
ServletHolder previous, //dependency for startup ordering
JettyServletRegistration context) throws Exception {
- super(context == null ? null : context.getServletHandler(), servletName, servletClassName, jspFile);
+ super();
+ setName(servletName);
+ setClassName(servletClassName);
//context will be null only for use as "default servlet info holder" in deployer.
if (context != null) {
- putAll(initParams);
+ setInitParameters(initParams);
+ setForcedPath(jspFile);
if (loadOnStartup != null) {
//This has no effect on the actual start order, the gbean references "previous" control that.
setInitOrder(loadOnStartup.intValue());
Modified: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletRegistration.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletRegistration.java?view=diff&rev=446934&r1=446787&r2=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletRegistration.java (original)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyServletRegistration.java Sat Sep 16 13:09:57 2006
@@ -16,9 +16,7 @@
*/
package org.apache.geronimo.jetty;
-import java.util.Map;
import java.util.Set;
-import javax.security.jacc.PolicyContextException;
import org.mortbay.jetty.servlet.ServletHandler;
import org.mortbay.jetty.servlet.ServletHolder;
Added: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java?view=auto&rev=446934
==============================================================================
--- geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java (added)
+++ geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java Sat Sep 16 13:09:57 2006
@@ -0,0 +1,61 @@
+package org.apache.geronimo.jetty;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.mortbay.thread.ThreadPool;
+
+/**
+ * JettyThreadPool
+ *
+ * Class to implement Jetty org.mortbay.jetty.thread.ThreadPool interface
+ * and delegate to a Geronimo thread pool impl.
+ *
+ */
+public class JettyThreadPool implements ThreadPool {
+
+ private org.apache.geronimo.pool.ThreadPool geronimoThreadPool;
+
+ public JettyThreadPool(org.apache.geronimo.pool.ThreadPool geronimoThreadPool) {
+ this.geronimoThreadPool = geronimoThreadPool;
+ }
+
+
+ public boolean dispatch(Runnable work) {
+ this.geronimoThreadPool.execute(work);
+ return true;
+ //what has changed?
+// try {
+// this.geronimoThreadPool.execute(work);
+// return true;
+// }
+// catch (Exception e) {
+// log.warn(e);
+// return false;
+// }
+ }
+
+ /**
+ * Jetty method. Caller wants to wait until the
+ * thread pool has stopped.
+ *
+ * @see org.mortbay.thread.ThreadPool#join()
+ */
+ public void join() throws InterruptedException {
+ throw new UnsupportedOperationException("join not supported");
+ }
+
+ public int getThreads() {
+ return this.geronimoThreadPool.getPoolSize();
+ }
+
+ public int getIdleThreads() {
+ //TODO: not supported in geronimo thread pool
+ return 0;
+ }
+
+ public boolean isLowOnThreads() {
+ // TODO: not supported in geronimo thread pool
+ return false;
+ }
+
+}
Propchange: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/sandbox/javaee5/modules-jee5/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty/JettyThreadPool.java
------------------------------------------------------------------------------
svn:mime-type = text/plain