Tipps zur Fehlerbehebung bei JSP-Dateien
Verwenden Sie die folgenden Tipps für die Behebung von Problemen mit JSP-Dateien (JavaServer Pages).
Vom Web-Server angezeigter JSP-Quellcode
Wenn Sie das Dokumentstammverzeichnis von WebSphere Application Server und das Dokumentstammverzeichnis des Web-Servers gemeinsam benutzen, kann eine Sicherheitslücke entstehen, da der Web-Server die JSP-Quellendatei möglicherweise als Textdatei anzeigt.
- Problem
- Sie können mit der Regelgruppe für das Web-Server-Plug-in von WebSphere bestimmen, ob eine vorhandene Anforderung vom WebSphere Application Server bearbeitet wird. Wenn eine eingehende Anforderung diesen Regeln nicht entspricht, gibt das Web-Server-Plug-in die Steuerung an den Web-Server zurück, damit der Web-Server die Anforderung bearbeiten kann. In diesem Fall bewirkt der Header des unbekannten Host, dass das Web-Server-Plug-in die Steuerung an den Web-Server zurückgibt, da die Regeln nicht festlegen, dass WebSphere Application Server die Anforderung bearbeiten soll. Daher sucht der Web-Server die Anforderung im Dokumentstammverzeichnis des Web-Servers. Da die JSP-Quellendatei im Dokumentstammverzeichnis des Web-Servers gespeichert ist, lokalisiert der Web-Server die Datei und zeigt sie als Textdatei an.
- Empfohlene Lösung
- Verschieben Sie die JSP-Quellendatei von WebSphere Application Server aus dem Dokumentstammverzeichnis des Web-Servers. Wenn diese Anforderung dann mit dem unbekannten Host-Header eingeht, gibt das Plug-in die Steuerung an den Web-Server zurück und die JSP-Quellendatei wird im Dokumentstammverzeichnis nicht ermittelt. Deshalb gibt der Web-Server einen Fehler 404 Datei nicht gefunden anstelle der JSP-Quellendatei zurück.
Probleme mit der Anzeige von DBCS-Zeichen bei der Verwendung der Anweisung @include
In JSP-Dateien, die die Anweisung @include verwenden, können Probleme mit der Anzeige von DBCS-Zeichen (Double-Byte Character Set, Doppelbytezeichensatz) auftreten. Einige Anwendungen, die auf WebSphere Application Server Version 6.0 und höher migriert werden, müssen aufgrund von Problemen mit der Abwärtskompatibilität unter Umständen an die Spezifikation JSP 2.0 angepasst werden. Die Spezifikation JSP 2.0 erfordert, dass jede statisch eingefügte Ressource eine Seitencodierung oder einen Inhaltstyp definiert, weil die Zeichencodierung für jede Datei separat bestimmt wird, selbst wenn eine Datei eine andere über die Anweisung include anzieht.
Probleme bei der Verwendung der JSP-Engine
- Stellen Sie fest, ob andere Ressourcen wie Dateien mit der Erweiterung .html oder Servlets ordnungsgemäß angefordert und angezeigt werden. Ist dies nicht der Fall, liegt der Fehler wahrscheinlich tiefer, z. B. beim HTTP-Server.
- Wenn andere Ressourcen richtig angezeigt werden, stellen Sie fest, ob der
JSP-Prozessor normal gestartet wurde:
Durchsuchen Sie die JVM-Protokolle des Servers, auf dem die gewünschten JSP-Dateien sich befinden. Die folgenden Nachrichten zeigen an, dass der JSP-Prozessor ordnungsgemäß gestartet wurde:
Wenn der JSP-Prozessor nicht geladen werden kann, wird eine Nachricht wieExtension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] was initialized successfully. Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] has been associated with patterns [*.jsp *.jspx *.jsw *.jsv ].
in der Datei Stammverzeichnis/logs/Servername/SystemOut.log angezeigt.No Extension Processor found for handling JSPs. JSP Processor not defined. Skipping : jspfilename.
Durchsuchen Sie die Protokolle des Servers, auf dem die gewünschten JSP-Dateien sich befinden. Die folgenden Nachrichten zeigen an, dass der JSP-Prozessor ordnungsgemäß gestartet wurde:
Wenn der JSP-Prozessor nicht geladen werden kann, wird eine Nachricht wieExtension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] was initialized successfully. Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] has been associated with patterns [*.jsp *.jspx *.jsw *.jsv ].
in den Serverprotokolldateien angezeigt.No Extension Processor found for handling JSPs. JSP Processor not defined. Skipping : jspfilename.
- Wenn die JSP-Engine ordnungsgemäß gestartet wurde, liegt der Fehler
möglicherweise in der JSP-Datei selbst.
Die JSP hat möglicherweise eine ungültige Syntax und konnte vom JSP-Prozessor nicht verarbeitet werden. Überprüfen Sie die Datei Stammverzeichnis/logs/Servername/SystemOut.log der Zielanwendung auf Nachrichten über eine ungültige JSP-Anweisungssyntax. Diese Art von Fehler wird durch Nachrichten wie die folgende im Browser angezeigt:
Diese Beispielnachricht zeigt an, dass in Zeile 2, Spalte 1 der angegebenen JSP-Datei ein verbindliches Attribut für die Aktion jsp:include fehlt. Für andere Syntaxfehler werden ähnliche Nachrichten angezeigt.Message: /filename.jsp(2,1)JSPG0076E: Das erforderliche Attribut für JSP-Element jsp:include fehlt.
Die JSP hat möglicherweise eine ungültige Syntax und konnte vom JSP-Prozessor nicht verarbeitet werden. Prüfen Sie, ob in den Serverprotokolldateien der Zielanwendung Nachrichten zu ungültiger Syntax für JSP-Anweisungen enthalten sind. Diese Art von Fehler wird durch Nachrichten wie die folgende im Browser angezeigt:
Diese Beispielnachricht zeigt an, dass in Zeile 2, Spalte 1 der angegebenen JSP-Datei ein verbindliches Attribut für die Aktion jsp:include fehlt. Für andere Syntaxfehler werden ähnliche Nachrichten angezeigt.Message: /filename.jsp(2,1)JSPG0076E: Das erforderliche Attribut für JSP-Element jsp:include fehlt.
- Überprüfen Sie die DAteien SystemErr.log des Zielanwendungsservers
auf Probleme mit einer
ungültigen Java™-Syntax.
Fehler wie Message: Unable to compile class for JSP in einem Browser
weisen auf diese Art von Problem hin.
Die Fehlernachrichtenausgabe des Javac-Compilers ist in der Datei SystemErr.log enthalten. Die Ausgabe lautet möglicherweise wie folgt:
JSPG0091E: Fehler in Zeile 2 der Datei /myJsp.jsp JSPG0093E: Fehler beim generierten Servlet in Datei c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt ist bereits in com.ibm.ws.jsp20._myJsp definiert int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Beheben Sie den Fehler in der JSP-Datei und wiederholen Sie den Vorgang mit der Datei.
- Überprüfen Sie die Protokolldateien für die Zielanwendung auf Probleme mit einer
ungültigen Java-Syntax. Fehler wie Message: Unable to compile class for JSP in einem Browser
weisen auf diese Art von Problem hin.
Die Fehlernachrichten des Javac-Compilers werden in der Datei SystemErr.log ausgegeben. Die Ausgabe lautet möglicherweise wie folgt:
JSPG0091E: Fehler in Zeile 2 der Datei /myJsp.jsp JSPG0093E: Fehler beim generierten Servlet in Datei c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt ist bereits in com.ibm.ws.jsp20._myJsp definiert int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Die Fehlernachricht des Javac-Compilers finden Sie in den Serverprotokolldateien. Die Ausgabe lautet möglicherweise wie folgt:
JSPG0091E: Fehler in Zeile 2 der Datei /myJsp.jsp JSPG0093E: Fehler beim generierten Servlet in Datei c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt ist bereits in com.ibm.ws.jsp20._myJsp definiert int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Beheben Sie den Fehler in der JSP-Datei und wiederholen Sie den Vorgang mit der Datei.
JSP-Dateien werden bei der Verwendung der Vorkompilierungsoption nicht kompiliert
Symptom | Problem | Empfohlene Lösung |
---|---|---|
JSP-Dateien werden während der Implementierung über die Administrationskonsole nicht kompiliert, wenn die Option für Vorkompilierung ausgewählt ist.
|
JSP-Dateien werden während der Implementierung über die Administrationskonsole nicht kompiliert, wenn die Option für Vorkompilierung ausgewählt ist, falls eine Abhängigkeit von einer anderen JAR-Datei besteht, die nicht im Klassenpfad verfügbar ist. | Sie können wsadmin-Scripting verwenden, um JSP-Dateien während der Implementierung von Unternehmensanwendungen vorzukompilieren.
Wenn Sie jedoch die Administrationskonsole verwenden möchten, müssen Sie alle JSP-Dateien kompilieren, bevor Sie die Anwendung packen.
|
JSPG0089E: Codierung der Anweisung page (Shift_JIS) und Codierung des XML-Prologs (UTF-8) stimmen nicht überein
Symptom | Problem | Empfohlene Lösung |
---|---|---|
Die folgende Fehlernachricht wird angezeigt:
|
Das Attribut pageEncoding im Element jsp:directive.page ist nicht auf UTF-8 gesetzt. | JSP-Dateien müssen einen Prolog definieren, der der in der Anweisung page angegebenen Codierung entspricht.
Beispiel:
Weitere Informationen finden Sie im Abschnitt "JSP.4.1, Page Character Encoding" in der JSP-Spezifikation und im Abschnitt 4.3.3 und in Anhang F.1 der XML-Spezifikation (Extensible Markup Language). |
Wenn Sie den Fehler mit keinem dieser Schritte beheben können, prüfen Sie, ob der Fehler bekannt ist und dokumentiert wurde. Verwenden Sie dazu die Links im Artikel "Fehlerdiagnose und -behebung: Lernmaterial". Wenn der angezeigte Fehler nicht in ähnlicher Form dokumentiert ist oder wenn Sie den Fehler anhand der bereitgestellten Informationen nicht beheben können, wenden Sie sich an den IBM Support.
Aktuelle Informationen des IBM Support zu bekannten Problemen und deren Behebung finden Sie auf der Webseite des IBM Support. Die IBM Unterstützungsfunktion besitzt Dokumente, mit denen Sie Zeit bei der Erfassung der für die Lösung des Problems erforderlichen Informationen einsparen können.