2017-08-08 1 views
0

Wir haben von Jetty 8 zu Jetty 9 migriert und wir haben mehrere Fehler auf JSP-Seiten, die in Jetty 8 arbeiten, wie JSP Error gefunden: enthält ungültigen Ausdruck, konnte Ausnahme nicht analysieren. Auch einige unserer anderen Seiten werden nicht gefunden, da der Schrägstrich auf dem URL-Pfad doppelt vorhanden ist. Sie funktionieren tadellos auf Jetty 8, aber nicht auf Jetty 9. Gibt es eine Liste, die Richtlinien zur Verfügung stellt, was zu überprüfen ist, wenn Sie von Jetty 8 zu Jetty 9 Version migrieren? Vielen Dank.Upgrade von Jetty 8 auf Jetty 9

Antwort

0

Das Upgrade von Jetty 8 auf Jetty 9 umfasst viele Hauptversionen des Upgrades.

Zur Erinnerung: Jetty Versionierung (seit 1995) hat ...

<servlet_support>.<major_version>.<minor_version>

Das heißt, von der Anlegestelle 8.1.x bis 9.4.x Sie haben 5 Hauptversion Versionen von Jetty (das ist ein großen Sprung in Versionen)

Manches von Anmerkung:

  • Die JSP Engine wurde von der fehlerhaften Glassfish JSP Engine auf die Apache Jasper JSP umgestellt.
  • Servlet-Spezifikation geänderte Pfadnormierungsregeln/-verhalten (interne Normalisierung ist zulässig, aber nur zur Bestimmung der spezifischen Webapp, zu der die Normalisierung in allen anderen Bereichen zulässig ist)
  • HTTP Spec-Unterstützung von RFC2616 (veraltet) zu verschoben RFC7230 (und andere)
  • Cookie-Spec-Unterstützung aktualisiert RFC6265 unterstützen aktuelle Browser-Mindestanforderungen (Version 1 Cookies nicht mehr unterstützt)
  • HTTP/0.9 Unterstützung fallen gelassen zu erfüllen (und alle damit verbundenen Verhaltensweisen in Parser/Generator)
  • HTTP/2-Unterstützung hinzugefügt
  • Lenient UrlEncoded Parsing-Verhalten von Formularen gelöscht. Eine fehlerhafte Formularcodierung löst jetzt einen Fehler 400 aus. (Dies war eine der Sicherheit und des Datenkorruption bedingte Änderung)

Die Warnungen/Fehler in Ihrer JSPs sind wahrscheinlich von Buggy (Nicht-spec-konform) JSPs Nutzung, oder dass Ihr JSPs auf Buggy Verhalten verlassen in Glassfish JSP-Engine .

Der doppelte Schrägstrich in einem URI/URL hat eine Bedeutung für die Servlet-Spezifikation und viele Bibliotheken. Dies wird beim Versenden (request/include/forward/error/async) an eine Servlet/Filterkette nicht herausgefiltert. Die Normalisierung erfolgt zwar intern, wird jedoch nur verwendet, um den entsprechenden Kontextpfad (eine bestimmte Webanwendung) zu identifizieren, an den die Anforderung gesendet werden soll.

Solange Sie die Servlets und JSP-Spezifikationen richtig zu nutzen, sollten Sie keine Probleme haben, ein Upgrade von Jetty 8.x.x Jetty 9.x.x (Millionen Anlegestelle Websites haben dies getan, ohne Ausgabe)