I am not sure I should have posted this question to the dev mailing list,
let me know if that should be the case.

I am using Tomcat 5.5.16.

I have a series of chained HttpServlets in my web app. The first servlet is
registered with the web.xml and the following ones are dispatched manually.
Before delegating the HTTP request to the next internal servlet, I am
wrapping the HttpServletRequest overriding getPathInfo() and
getServletPath(). If the pathInfo was /a/b and servletPath was /x, after
wrapping the request getPathInfo returns /b and the servletPath returns
/x/a. The reason I am doing this is that I would like forward and includes
to work relative to my internal pathInfo and servletPath (/b and /x/a)
instead of the web container one (/a/b and /x).

The first problem I encountered was that if I implemented the wrapper by
subclassing HttpServletRequestWrapper Tomcat implementation unwraps it
before forwarding and the final url contains the original path info appended
and my custom path info.

So I then changed my implementation and now I am wrapping the request using
my own subclass of HttpServletRequest instead. Now the problem is that I get
a ClassCast exception @ org.apache.catalina.core.ApplicationDispatcher line
814 ("current = ((ServletRequestWrapper) current).getRequest();").

Shouldnt that casting be conditional?

Is there a safer way of implementing the functionlity I described above?

thanks.
- yuri

Reply via email to