By having this code in b.jsp, you will never have a requestURI of a.jsp. By doing a jsp:forward, you are internally changing the location, but the request URI will not change. The browser requested b.jsp and nothing else. Therefore, b.jsp will never be referenced by a requestURI of a.jsp. I must be missing something in your problem statement.
say b.jsp told the browser to redirect to a.jsp, then the flow would be: browser (request b.jsp) -> webserver -> b.jsp (redirect to a.jsp) -> browser (now request a.jsp) -> webserver -> a.jsp
In no way can a webserver, when getting a request for a.jsp, would respond to the request with b.jsp (unless you are aliasing a.jsp to point to b.jsp, but based on your problem statement, that doesn't seem to be the case)
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com