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

Wenn Sie Schwierigkeiten bei der Verwendung der JSP-Engine haben, versuchen Sie, die folgenden Schritte durchzuführen:
  1. 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.
  2. Wenn andere Ressourcen richtig angezeigt werden, stellen Sie fest, ob der JSP-Prozessor normal gestartet wurde:
    • [AIX Solaris HP-UX Linux Windows][IBM i]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:
      Extension 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 ].
      Wenn der JSP-Prozessor nicht geladen werden kann, wird eine Nachricht wie
      No Extension Processor found for handling JSPs.
      JSP Processor not defined. Skipping : jspfilename.
      in der Datei Stammverzeichnis/logs/Servername/SystemOut.log angezeigt.
    • [z/OS]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:
      Extension 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 ].
      Wenn der JSP-Prozessor nicht geladen werden kann, wird eine Nachricht wie
      No Extension Processor found for handling JSPs.
      JSP Processor not defined. Skipping : jspfilename.
      in den Serverprotokolldateien angezeigt.
  3. Wenn die JSP-Engine ordnungsgemäß gestartet wurde, liegt der Fehler möglicherweise in der JSP-Datei selbst.
    • [AIX Solaris HP-UX Linux Windows][IBM i]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:
      Message: /filename.jsp(2,1)JSPG0076E: Das erforderliche Attribut für JSP-Element jsp:include fehlt. 
      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.
    • [z/OS]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:
      Message: /filename.jsp(2,1)JSPG0076E: Das erforderliche Attribut für JSP-Element jsp:include fehlt. 
      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.
    • Ü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.
      [AIX Solaris HP-UX Linux Windows][IBM i]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
      [z/OS]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.

Anmerkung: Dieser Artikel referenziert eine oder mehrere Protokolldateien des Anwendungsservers. Alternativ dazu wird empfohlen, den Server so zu konfigurieren, dass er die HPEL-Protokoll- und -Traceinfrastruktur (High Performance Extensible Logging) verwendet und nicht die Dateien SystemOut.log , SystemErr.log, trace.log und activity.log auf verteilten oder IBM® i-Systemen. Sie können HPEL auch in Verbindung mit Ihren nativen z/OS-Protokolleinrichtungen verwenden. Wenn Sie HPEL verwenden, können Sie mit dem Befehlszeilentool LogViewer im Verzeichnis "bin" des Serverprofils auf alle Ihre Protokoll- und Tracedaten zugreifen. Weitere Informationen zur Verwendung von HPEL finden Sie in der Dokumentation zum Einsatz von HPEL für die Fehlerbehebung in Anwendungen.

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.
SystemErr R com.ibm.websphere.management.exception.AdminException: 
ADMA0021E: Fehler beim Kompilieren von JSPs - xyz.war (rc=1)
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.
  1. Fügen Sie die abhängige JAR-Datei zum Deployment Manager in einer Zellenumgebung hinzu.
    1. Klicken Sie in der Konsolnavigation auf Systemverwaltung > Deployment Manager > Java- und Prozessverwaltung > Prozessdefinition > Java Virtual Machine.
    2. Fügen Sie im Feld "Klassenpfad" die vollständig qualifizierte abhängige JAR-Datei hinzu.
    3. Klicken Sie auf OK.
    4. Starten Sie den Deployment Manager erneut.

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:
Fehler bei der JSP-Verarbeitung

HTTP-Fehlercode: 500

Error Message: /test.jsp(2,1) 
	/test.jsp(2,1) JSPG0089E: 
	Mismatch found between page 
	directive encoding Shift_JIS 
	and xml prolog encoding UTF-8
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:
<?xml version="1.0" encoding="Shift_JIS"?>
<jsp:root xmlns:jsp="http://java.sun.com/
 JSP/Page" version="2.0">
<jsp:directive.page language="java" contentType="text/html";
	charset=Shift_JIS pageEncoding=
	 "Shift_JIS"/>
<jsp:text>XXXXXjsp:text>XXXXX>
</jsp:root>

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.


Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_jspcomp
Dateiname:rtrb_jspcomp.html