Hallo zusammen!
Ich habe ein großes Problem beim Weiterleiten einer Anfrage von einem Servlet zu einer JSP-Seite.
Man betrachte folgendes kleines Demo-Programm (läuft auf Tomcat 4.0.1):
-----------
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws
IOException,
ServletException
{
ServletOutputStream out = res.getOutputStream();
out.print("REQUEST bei doGet: " + req.toString() + "\n");
RequestDispatcher dispatcher =
req.getRequestDispatcher(
"../testbed/gridtest/gridtest.jsp"
);
out.print("DISPATCHER == null: " + (dispatcher == null));
}
}
-----------
Und das kommt dabei raus:
-----------
REQUEST bei doGet: org.apache.catalina.servlets.InvokerHttpRequest@1e29fb
DISPATCHER == null: true
-----------
Wenn ich nun den dispatcher für ein forward nehme, bekomme ich eine NullPointerException.
Jetzt kommt aber das seltsame: Rufe ich das Servlet erneut auf, bekomme ich folgende Ausgabe:
-----------
REQUEST bei doGet: org.apache.catalina.connector.HttpRequestFacade@31cc87
DISPATCHER == null: false
-----------
Man beachte, dass sich erstens der Typ des Request geändert hat (HttpRequestFacade anstatt InvokerHttpRequest) und dass der dispatcher jetzt nicht mehr null ist. Jetzt klappt auch mein forward.
Warum ist das so, was ist beim zweiten mal anders als beim ersten? Und vor allen Dingen, wie bekomme ich es hin, dass auch bei der ersten Anfrage ein forward funktioniert?!
Übrigens klappt das ganze nur beim aller ersten Mal nach Serverneustart nicht. Alle weitere Mal läuft alles einwandfrei.
Wäre super, wenn mir jemand weiterhelfen könnte!
Danke im Vorraus