Index: java/org/apache/catalina/core/AsyncContextImpl.java =================================================================== --- java/org/apache/catalina/core/AsyncContextImpl.java (revision 997590) +++ java/org/apache/catalina/core/AsyncContextImpl.java (working copy) @@ -17,6 +17,7 @@ package org.apache.catalina.core; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; @@ -24,6 +25,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; +import javax.naming.NamingException; import javax.servlet.AsyncContext; import javax.servlet.AsyncEvent; import javax.servlet.AsyncListener; @@ -242,13 +244,22 @@ throws ServletException { T listener = null; try { - listener = clazz.newInstance(); + listener = (T) context.getInstanceManager().newInstance(clazz.getName(), clazz.getClassLoader()); } catch (InstantiationException e) { ServletException se = new ServletException(e); throw se; } catch (IllegalAccessException e) { ServletException se = new ServletException(e); throw se; + } catch (ClassNotFoundException e) { + ServletException se = new ServletException(e); + throw se; + } catch (NamingException e) { + ServletException se = new ServletException(e); + throw se; + } catch (InvocationTargetException e) { + ServletException se = new ServletException(e); + throw se; } return listener; } Index: java/org/apache/catalina/core/ApplicationContext.java =================================================================== --- java/org/apache/catalina/core/ApplicationContext.java (revision 997590) +++ java/org/apache/catalina/core/ApplicationContext.java (working copy) @@ -38,6 +38,7 @@ import javax.naming.Binding; import javax.naming.NamingException; import javax.naming.directory.DirContext; +import javax.servlet.AsyncListener; import javax.servlet.Filter; import javax.servlet.FilterRegistration; import javax.servlet.RequestDispatcher; @@ -1305,6 +1306,10 @@ context.addApplicationLifecycleListener(t); match = true; } + + if (t instanceof AsyncListener) { + match = true; + } if (match) return; Index: java/org/apache/catalina/Context.java =================================================================== --- java/org/apache/catalina/Context.java (revision 997590) +++ java/org/apache/catalina/Context.java (working copy) @@ -26,6 +26,7 @@ import javax.servlet.ServletContext; import javax.servlet.descriptor.JspConfigDescriptor; +import org.apache.tomcat.InstanceManager; import org.apache.catalina.deploy.ApplicationParameter; import org.apache.catalina.deploy.ErrorPage; import org.apache.catalina.deploy.FilterDef; @@ -1217,5 +1218,6 @@ */ public boolean getPaused(); + public InstanceManager getInstanceManager(); }