tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "bognár, attila" <attila.bog...@netalfa.com>
Subject ErrorReportValve, (ServletRequest)request
Date Sat, 19 Apr 2003 21:37:28 GMT
hello,

I am new to tomcat regarding 'advanced' features, especially regarding 
to topics closer to the core. I had to write a valve that extract 
X-Forwarded-For header from request. For this task I created a wrapper 
HttpRequest, which returns an RPAFHttpServletRequest as the getRequest() 
result. (see tomcat-user@ list - my last problem is - partly - solved by 
commenting lifecycle configuration from server.xml).

Now tomcat goes further with starting up, but still has errors:

2003-04-19 22:50:01 CoyoteAdapter An exception or error occurred in the 
container during the request processing
java.lang.ClassCastException: com.netalfa.tomcat.valves.RPAFHttpRequest
         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:174)
         at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
         at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at com.netalfa.tomcat.valves.RPAFValve.invoke(RPAFValve.java:54)
         at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
         at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
         at 
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
         at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
         at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
         at 
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
         at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
         at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
         at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
         at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
         at java.lang.Thread.run(Thread.java:484)


now, int the source of ErrorReportValve:

     public void invoke(Request request, Response response,
                        ValveContext context)
         throws IOException, ServletException {

         // Perform the request
         context.invokeNext(request, response);

         ServletRequest sreq = (ServletRequest) request;
         Throwable throwable =
             (Throwable) sreq.getAttribute(Globals.EXCEPTION_ATTR);

         ServletResponse sresp = (ServletResponse) response;
...

how legal are the two castings? ((ServletRequest) request and 
(ServletResponse) response). I think not at all. If I don't wrap the 
original request in my valve, the request is an instance of 
CoyoteRequest, which implements both HttpRequest and HttpServletRequest, 
so there is no problem. But I don't think it should be expected, that 
the request implements HttpRequest too, instead request.getRequest() 
should be called to get the appropriate HttpRequest.


thanks,

attila


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Mime
View raw message