Hello list, I have written my first filter and think that I have it right, but when I try to start Tomcat 5.5.9 after applying the necessary configuration changes to web.xml, the Context that the Filter is in fails to start. Perhaps someone can tell me what I may have done wrong.
<-- web.xml --> <filter> <filter-name>AuthenticateFilter</filter-name> <filter-class>com.affinity.tasc.filters.AuthenticateFilter </filter-class> </filter> <filter-mapping> <filter-name>AuthenticateFilter</filter-name> <servlet-name>Index</servlet-name> </filter-mapping> <servlet> <servlet-name>Index</servlet-name> <servlet-class>com.affinity.tasc.core.Index</servlet-class> </servlet> <servlet-mapping> <servlet-name>Index</servlet-name> <url-pattern>/Index</url-pattern> </servlet-mapping> <-- end web.xml --> <-- Filter code --> package com.affinity.tasc.filters; import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; import com.affinity.tasc.beans.SiteUserBean; public abstract class AuthenticateFilter implements Filter { private FilterConfig fc; public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { /* Make sure we are dealing with HTTP */ if (req instanceof HttpServletRequest) { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; HttpSession session = request.getSession(false); if (request.getParameter("Authenticate").equals("1")) { try { SiteUserBean user = new SiteUserBean(); user.setUsername( request.getParameter("username")); user.setPassword( request.getParameter("password")); int authed = user.getUserAuthed(); /* Successful authentication */ if (authed > 0) { session.setAttribute("user", user); } session.setAttribute("authed", authed); } catch (NullPointerException nx) { nx.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } } /* Continue filtering */ chain.doFilter(req, res); } public void init(FilterConfig filterConfig) throws ServletException { this.fc = filterConfig; } public void destroy() { this.fc = null; } } <-- end filter code --> Here is the output from catalina.out when I try to start tomcat with this filter installed... May 9, 2006 11:46:31 AM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 May 9, 2006 11:46:31 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1270 ms May 9, 2006 11:46:32 AM org.apache.catalina.core.StandardService start INFO: Starting service Catalina May 9, 2006 11:46:32 AM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/5.5.9 May 9, 2006 11:46:32 AM org.apache.catalina.core.StandardHost start INFO: XML validation disabled May 9, 2006 11:46:32 AM org.apache.catalina.core.StandardContext filterStart SEVERE: Exception starting filter AuthenticateFilter java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance( InstantiationExceptionConstructorAccessorImpl.java:30) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at java.lang.Class.newInstance0(Class.java:350) at java.lang.Class.newInstance(Class.java:303) at org.apache.catalina.core.ApplicationFilterConfig.getFilter( ApplicationFilterConfig.java:212) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef( ApplicationFilterConfig.java:308) at org.apache.catalina.core.ApplicationFilterConfig.<init>( ApplicationFilterConfig.java:79) at org.apache.catalina.core.StandardContext.filterStart( StandardContext.java:3540) at org.apache.catalina.core.StandardContext.start( StandardContext.java:4110) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java :1012) at org.apache.catalina.core.StandardHost.start(StandardHost.java :718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java :1012) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java :442) at org.apache.catalina.core.StandardService.start( StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java :683) at org.apache.catalina.startup.Catalina.start(Catalina.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409) May 9, 2006 11:46:32 AM org.apache.catalina.core.StandardContext start SEVERE: Error filterStart May 9, 2006 11:46:32 AM org.apache.catalina.core.StandardContext start SEVERE: Context [/TASC] startup failed due to previous errors May 9, 2006 11:46:33 AM org.apache.catalina.core.ApplicationContext log INFO: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [ org.apache.webapp.balancer.RuleChain: [ org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [ org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [ org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]] May 9, 2006 11:46:33 AM org.apache.catalina.loader.WebappClassLoaderloadClass INFO: Illegal access: this web application instance has been stopped already. Could not load org.apache.xerces.impl.dtd.DTDGrammar. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. May 9, 2006 11:46:33 AM org.apache.commons.modeler.RegistryregisterComponent SEVERE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//sa- test.valueweb.net/servlets-examples,J2EEApplication=none,J2EEServer=none May 9, 2006 11:46:33 AM org.apache.catalina.startup.HostConfigdeployDirectory SEVERE: Error deploying web application directory servlets-examples java.lang.ThreadDeath at org.apache.catalina.loader.WebappClassLoader.loadClass( WebappClassLoader.java:1221) at org.apache.catalina.loader.WebappClassLoader.loadClass( WebappClassLoader.java:1181) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at org.apache.xerces.impl.dtd.XMLDTDValidator.doctypeDecl(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl.scanDoctypeDecl(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.tomcat.util.digester.Digester.parse(Digester.java :1561) at org.apache.catalina.startup.ContextConfig.applicationWebConfig( ContextConfig.java:339) at org.apache.catalina.startup.ContextConfig.start( ContextConfig.java:1031) at org.apache.catalina.startup.ContextConfig.lifecycleEvent( ContextConfig.java:255) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent( LifecycleSupport.java:119) at org.apache.catalina.core.StandardContext.start( StandardContext.java:4053) at org.apache.catalina.core.ContainerBase.addChildInternal( ContainerBase.java:759) at org.apache.catalina.core.ContainerBase.addChild( ContainerBase.java:739) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java :524) at org.apache.catalina.startup.HostConfig.deployDirectory( HostConfig.java:894) at org.apache.catalina.startup.HostConfig.deployDirectories( HostConfig.java:857) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java :475) at org.apache.catalina.startup.HostConfig.start(HostConfig.java :1102) at org.apache.catalina.startup.HostConfig.lifecycleEvent( HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent( LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java :1020) at org.apache.catalina.core.StandardHost.start(StandardHost.java :718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java :1012) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java :442) at org.apache.catalina.core.StandardService.start( StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java :683) at org.apache.catalina.startup.Catalina.start(Catalina.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409) May 9, 2006 11:46:33 AM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() May 9, 2006 11:46:33 AM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() May 9, 2006 11:46:34 AM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 May 9, 2006 11:46:34 AM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 May 9, 2006 11:46:34 AM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/25 config=null May 9, 2006 11:46:34 AM org.apache.catalina.storeconfig.StoreLoader load INFO: Find registry server-registry.xml at classpath resource May 9, 2006 11:46:34 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 2637 ms thanks for your help.