001 /** 002 * 003 * Copyright 2006 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.geronimo.jetty; 019 020 import java.io.IOException; 021 022 import javax.servlet.ServletException; 023 import javax.servlet.UnavailableException; 024 import javax.servlet.http.HttpServletRequest; 025 import javax.servlet.http.HttpServletResponse; 026 027 import org.apache.geronimo.security.Callers; 028 import org.apache.geronimo.security.ContextManager; 029 import org.mortbay.jetty.servlet.ServletHolder; 030 import org.mortbay.jetty.servlet.WebApplicationHandler; 031 032 /** 033 * @version $Rev: 437254 $ $Date: 2006-08-26 17:07:55 -0700 (Sat, 26 Aug 2006) $ 034 */ 035 public class JettyWebApplicationHandler extends WebApplicationHandler { 036 037 /** 038 * Wrap the dispatch call to prevent leaking Subject back into the environemnt. 039 * 040 * @param pathInContext 041 * @param request 042 * @param response 043 * @param servletHolder 044 * @param type 045 * @throws ServletException 046 * @throws UnavailableException 047 * @throws IOException 048 */ 049 protected void dispatch(String pathInContext, 050 HttpServletRequest request, 051 HttpServletResponse response, 052 ServletHolder servletHolder, 053 int type) 054 throws ServletException, UnavailableException, IOException 055 { 056 Callers oldCallers = ContextManager.getCallers(); 057 try { 058 super.dispatch(pathInContext, request, response, servletHolder, type); 059 } finally { 060 ContextManager.popCallers(oldCallers); 061 } 062 063 } 064 }