You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ge...@apache.org on 2012/01/18 09:51:27 UTC

svn commit: r1232789 - in /geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat: GeronimoStandardContext.java interceptor/RequestListenerBeforeAfter.java

Author: genspring
Date: Wed Jan 18 08:51:26 2012
New Revision: 1232789

URL: http://svn.apache.org/viewvc?rev=1232789&view=rev
Log:
GERONIMO-6264 Can't access geronimo Java:com jndi tree from javax.servlet.ServletRequestListener.requestInitialized(ServletRequestEvent) - a workaround

Added:
    geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java
Modified:
    geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java

Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java?rev=1232789&r1=1232788&r2=1232789&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java Wed Jan 18 08:51:26 2012
@@ -47,11 +47,15 @@ import javax.security.auth.Subject;
 import javax.security.auth.login.LoginException;
 import javax.security.jacc.PolicyContext;
 import javax.security.jacc.PolicyContextException;
+import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContainerInitializer;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRegistration;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.ServletRequestListener;
 import javax.servlet.ServletSecurityElement;
 
 import org.apache.catalina.Container;
@@ -87,6 +91,7 @@ import org.apache.geronimo.tomcat.interc
 import org.apache.geronimo.tomcat.interceptor.ComponentContextBeforeAfter;
 import org.apache.geronimo.tomcat.interceptor.InstanceContextBeforeAfter;
 import org.apache.geronimo.tomcat.interceptor.PolicyContextBeforeAfter;
+import org.apache.geronimo.tomcat.interceptor.RequestListenerBeforeAfter;
 import org.apache.geronimo.tomcat.interceptor.UserTransactionBeforeAfter;
 import org.apache.geronimo.tomcat.interceptor.WebApplicationIdentityBeforeAfter;
 import org.apache.geronimo.tomcat.listener.DispatchListener;
@@ -104,6 +109,7 @@ import org.apache.geronimo.webservices.W
 import org.apache.geronimo.webservices.WebServiceContainerInvoker;
 import org.apache.naming.resources.FileDirContext;
 import org.apache.tomcat.InstanceManager;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -283,7 +289,10 @@ public class GeronimoStandardContext ext
         }
 
         int index = 0;
-        BeforeAfter interceptor = new InstanceContextBeforeAfter(null,
+        
+        BeforeAfter interceptor = new RequestListenerBeforeAfter(null, index++);
+        
+        interceptor = new InstanceContextBeforeAfter(interceptor,
                 index++,
                 index++, ctx.getUnshareableResources(),
                 ctx.getApplicationManagedSecurityResources(),
@@ -1048,6 +1057,15 @@ public class GeronimoStandardContext ext
             }
         }
     }
+    
+    @Override
+    public boolean fireRequestInitEvent(ServletRequest request) {
+        return true;
+    } 
+    
+    public boolean fireRequestInitEventInBeforeAfter(ServletRequest request) {
+        return super.fireRequestInitEvent(request);
+    } 
 
     private static byte[] getChecksum(URL url) throws Exception {
         InputStream in = null;

Added: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java?rev=1232789&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java (added)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java Wed Jan 18 08:51:26 2012
@@ -0,0 +1,61 @@
+/**
+ *  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.tomcat.interceptor;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import org.apache.geronimo.tomcat.GeronimoStandardContext;
+
+public class RequestListenerBeforeAfter implements BeforeAfter{
+    private final BeforeAfter next;
+    private final int index;
+
+    public RequestListenerBeforeAfter(BeforeAfter next, int index) {
+        this.next = next;
+        this.index = index;
+    }
+
+    public void before(BeforeAfterContext beforeAfterContext, ServletRequest httpRequest, ServletResponse httpResponse, int dispatch) {
+
+            if (httpRequest instanceof org.apache.catalina.connector.Request){
+                
+                org.apache.catalina.connector.Request catalinaRequest = (org.apache.catalina.connector.Request) httpRequest;
+
+                if (catalinaRequest.getContext() instanceof GeronimoStandardContext) {
+
+                    GeronimoStandardContext GeronimoContext = (GeronimoStandardContext) catalinaRequest.getContext();
+                    GeronimoContext.fireRequestInitEventInBeforeAfter(httpRequest);
+                }
+
+            }
+
+            if (next != null) {
+                next.before(beforeAfterContext, httpRequest, httpResponse, dispatch);
+            }
+
+    }
+    
+
+    public void after(BeforeAfterContext beforeAfterContext, ServletRequest httpRequest, ServletResponse httpResponse, int dispatch) {
+       
+            if (next != null) {
+                next.after(beforeAfterContext, httpRequest, httpResponse, dispatch);
+            }
+    }
+
+}