Link to home
Start Free TrialLog in
Avatar of bankerboy
bankerboy

asked on

Servlets and ServletContext in iPlanet App Server

I am building some servlets and ran into a problem.  The problem concerns ServletContext objects and the getContext method.

The idea is pretty simple and I've seen numerous examples on the topic.  I have a servlet that is http://localhost/NASApp/Main/MainServlet.  I have a second servlet that is /localhost/NASApp/Other/OtherServlet.  I would like the
MainServlet to forward to the OtherServlet.  To do this, I am attempting the following in MainServlet:

RequestDispatcher dispatcher;
ServletContext sc = getServletContext();
sc.getContext("/localhost/NASApp/Other");
dispatcher = sc.getRequestDispatcher("/OtherServlet");
dispatcher.forward(request, response);

This appears to agree with documentation and examples that I have found, but I get a 404 error.  I have tried "/Other", "/NASApp/Other", and "/localhost/NASApp/Other" in the getContext call.  The OtherServlet works fine when you access it directly via typing the URL into the browser, so I know it works.  I am using iPlanet App Server 6.0 and iPlanet WebServer 4.1sp5.  I see that the webserver specifies some things that need to be done to get servlets to work, but I'm not using the webserver for the servlets.  Rather, I am using iAS to deploy my .ear files for me.  I haven't found anything in the iAS docs that point to extra steps that need to be done.  Anybody have experience in this area?  Your help is greatly appreciated.
ASKER CERTIFIED SOLUTION
Avatar of tonus
tonus

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of bankerboy
bankerboy

ASKER

Thanks for the reply.  The sendRedirect does indeed work, but it is less efficient since it sends a request to the client's browser which then does the redirect.  The "forward" method is all server side and transparent to the user.  In reality, I just figured out how to use the forward this morning.  All I needed to do was assign the sc.getContext call to a new ServletContext:

ServletContext newSC = sc.getContext("blahblahblah");
dispatch = newSC.getRequestDispatcher("nextPage");

I was forgetting to assign the getContext call to a new ServletContext.  But again, thanks for the reply, since it was a solution that did work.