diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
index d0b8c38..945547f 100644
--- a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
+++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
@@ -59,6 +59,7 @@
 import com.google.inject.Module;
 import com.google.inject.Provider;
 import com.google.inject.name.Names;
+import com.google.inject.servlet.GuiceFilter;
 import com.google.inject.servlet.GuiceServletContextListener;
 import com.google.inject.spi.Message;
 
@@ -67,16 +68,24 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
 import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.sql.DataSource;
 
 /** Configures the web application environment for Gerrit Code Review. */
-public class WebAppInitializer extends GuiceServletContextListener {
+public class WebAppInitializer extends GuiceServletContextListener
+    implements Filter {
   private static final Logger log =
       LoggerFactory.getLogger(WebAppInitializer.class);
 
@@ -87,6 +96,13 @@
   private Injector webInjector;
   private Injector sshInjector;
   private LifecycleManager manager;
+  private GuiceFilter filter;
+
+  @Override
+  public void doFilter(ServletRequest req, ServletResponse res,
+      FilterChain chain) throws IOException, ServletException {
+    filter.doFilter(req, res, chain);
+  }
 
   private synchronized void init() {
     if (manager == null) {
@@ -139,6 +155,7 @@
           .setHttpServletRequest(
               webInjector.getProvider(HttpServletRequest.class));
 
+      filter = webInjector.getInstance(GuiceFilter.class);
       manager = new LifecycleManager();
       manager.add(dbInjector);
       manager.add(cfgInjector);
@@ -286,18 +303,17 @@
   }
 
   @Override
-  public void contextInitialized(final ServletContextEvent event) {
-    super.contextInitialized(event);
+  public void init(FilterConfig cfg) throws ServletException {
+    contextInitialized(new ServletContextEvent(cfg.getServletContext()));
     init();
     manager.start();
   }
 
   @Override
-  public void contextDestroyed(final ServletContextEvent event) {
+  public void destroy() {
     if (manager != null) {
       manager.stop();
       manager = null;
     }
-    super.contextDestroyed(event);
   }
 }
diff --git a/gerrit-war/src/main/webapp/WEB-INF/web.xml b/gerrit-war/src/main/webapp/WEB-INF/web.xml
index 205341c..386eb07 100644
--- a/gerrit-war/src/main/webapp/WEB-INF/web.xml
+++ b/gerrit-war/src/main/webapp/WEB-INF/web.xml
@@ -8,14 +8,10 @@
 
   <filter>
     <filter-name>guiceFilter</filter-name>
-    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
+    <filter-class>com.google.gerrit.httpd.WebAppInitializer</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>guiceFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
-
-  <listener>
-    <listener-class>com.google.gerrit.httpd.WebAppInitializer</listener-class>
-  </listener>
 </web-app>
