ApplicationDispatcher.requestURI starting with two slashes
Hi,
we have written a litter filter that rewrites incoming request, as
well as by using a response Wrapper object that will rewrite the
encodeUrl Methods so that outgoing urls will also be rewritten.
So the code looks something like this:
String rewriteURL = createRewriteURL(request);
RequestDispatcher forwardDispatcher =
request.getRequestDispatcher(rewriteURL);
forwardDispatcher.forward(request, toRewriteResponse(request, new
ResponseWrapperClass(request, response)));
This code works perfectly under some context path, lets say
"server:port/example/...
However, when run on the context root "/", it fails.
I also found a / or "the" bug, in the forwardDispatcher object, when
debugging, the private requestURI attribute
starts with two "/" slashes instead of just one. Example:
"//MyPage.html"
---------
request.getRequestDispatcher(rewriteURL) is handled internally by
Tomcat code, but by manually adding some of it's source code, I was
able to debug into the following lines of code that get called when
request.getRequestDispatcher(rewriteURL) is called:
public class ApplicationContext
implements ServletContext {
[...]
private ThreadLocal localUriMB = new ThreadLocal();
[...]
public RequestDispatcher getRequestDispatcher(String path) {
[...]
MessageBytes uriMB = (MessageBytes) localUriMB.get();
[...]
CharChunk uriCC = uriMB.getCharChunk();
[...]
return new ApplicationDispatcher(wrapper, uriCC.toString(),
wrapperPath, pathInfo, queryString, null);
}
When the Dispatcher is created, the uricCC.toString() contains the two
slashes ("//").
------------
However, where do they come from? What's going on here / what's going
wrong here? I am really confused, sorry!
Thanks in advance,
Peter