Hi
all,
Deploying 3 web-apps in one container. Outside, Inside
and Admin. Outside is mostly static, with a login section. The login section
takes the user to the Inside app. This all works. Problem occurs when I try to
get a user to forward to a JSP page in the outside application. Using my MVC
framework, I get a RequestDispatcher for the forwarding URL which is a
"relative" URL to the web-app its in. I figured out by using
SerlvetContext.getContext(url) to get the ServletContext of any web-app running,
but using that ServletContext's RequestDispatcher doesn't seem to allow me to
forward to a JSP page in that context. For example:
/ =
outside web app
/inside = inside web-app
/admin
= admin web-app
Lets
say we are in the ControllerServlet of the /inside web-app:
request.getContextPath() =
/inside
I want
to forward TO the outside web-app index.jsp page. I have /index.jsp,
/inside/index.jsp, and /admin/index.jsp. I do the following bit of code to
forward from within the /inside web-app context to the / outside index.jsp
page:
ServletContext sc =
getServletContext().getContext("/index.jsp");
This
correctly gives me the / context, as I tested this by having the /index.jsp page
set an attribute, and in the ControllerServlet I can successfully get that
attribute.
Now,
this call always results in a 404 error:
sc.getRequestDispatcher("/index.jsp").forward(reuqest,response);
Ideally, since the "/index.jsp" indicates its in the /
(root or outside) context, it should forward to the index.jsp page in this
context. On the other hand, because I already have a ServletContext of the
outside app, perhaps just "index.jsp" is used. I tried this and still get 404
error.
So,
any ideas why, or how, to forward from a servlet running in one web-app, to a
servlet/jsp page in another web-app? I know according to the spec you can't pass
data among web-apps (other than through JNDI), but I sure would like to separate
our outside, inside and admin sites into their own WAR files, but still be able
to move from one web-app to another. If I kept it all in a single web-app, then
using the paths of /admin, /inside or / would work fine. So I am unclear as to
why getting the ServletContext of any given web-app OR just trying to forward to
a path using the relative "root" path, would work. The API is not exactly clear
on how this works.
Thanks.
|